我开源了一个“宝藏”开源项目 - AI需求分析项目 | 适合交作业和学习
🚀 前言
大家好!最近在学习软件工程和大模型应用开发的过程中,我发现许多学生都遇到了需求分析AI的题目。把一份需求文档转化为用户故事、实体关系或数据库设计,对于初学者来说确实有些挑战。
于是我开发了一个基于AI的需求分析工具——AI需求分析师,希望能帮助正在学习软件工程或数据库设计的同学们:
- 快速理解需求文档转换为技术设计的过程
- 为课程作业提供灵感和参考
- 学习现代前端框架和AI应用开发
项目已经开源在GitHub上(地址在文末),欢迎大家使用、学习和贡献!
欢迎大家Fork或是Star这个项目!
📋 项目介绍
AI需求分析师是一个完整的Web应用,基于现代前端框架Remix构建,集成了OpenAI API,能够智能分析需求文档,自动生成用户故事、需求实体和数据库设计。
项目特点:
- ✅ 完整的用户系统:注册、登录、找回密码等功能
- 💡 AI驱动分析:使用OpenAI API智能解析需求文档
- 📊 三种分析结果:用户故事、实体分析、数据库设计
- 🎨 美观的UI:基于TailwindCSS的现代界面设计
- 📱 响应式设计:完美支持移动端和桌面端
- 🔐 安全可靠:完善的错误处理和数据验证
技术栈
- 前端框架:Remix - React框架,带有服务器端渲染
- 样式方案:TailwindCSS - 实用优先的CSS框架
- 数据库:Prisma + SQLite(可扩展至其他数据库)
- 认证:自定义JWT会话认证系统
- AI集成:OpenAI API(GPT-4)
🖼️ 效果展示
- 首页:展示应用介绍和主要功能
- 项目管理页:展示用户创建的所有项目
- 需求分析页:展示需求输入和分析结果
- 用户故事示例:AI生成的用户故事格式和内容
- 实体分析示例:AI识别的业务实体及关系
- 数据库设计示例:AI推荐的数据库模式设计
💻 如何使用
安装步骤
- 克隆仓库
git clone https://github.com/yourusername/ai-requirements-analyzer.git
cd ai-requirements-analyzer
- 安装依赖
npm install
- 设置环境变量
vim .env
# 编辑.env文件,添加必要的配置
- 初始化数据库
npx prisma migrate dev --name init
- 启动开发服务器
npm run dev
- 访问应用
http://localhost:5173
环境变量配置
项目需要以下环境变量:
# 数据库配置
DATABASE_URL="file:./dev.db"
# 会话安全密钥
SESSION_SECRET="your-super-secret-session-key"
# OpenAI API密钥
OPENAI_API_KEY="your-openai-api-key"
# 应用URL - 用于生成密码重置链接
APP_URL="http://localhost:5173"
# 邮件服务器配置
SMTP_HOST="smtp.gmail.com"
SMTP_PORT="587"
SMTP_SECURE="false"
SMTP_USER="your-email@gmail.com"
SMTP_PASS="your-app-password"
💡 提示:如果你只是学习使用,不需要真实的邮件功能,可以使用Ethereal提供的测试服务,详见项目README。
🔍 核心功能详解
1. 用户故事生成
输入一份需求文档后,AI会自动解析并生成符合敏捷开发标准的用户故事,格式为:
作为一个[角色],我想要[功能],以便[好处]。
这对学习敏捷开发和用户故事编写的同学非常有帮助。AI会尝试识别所有可能的角色和功能点,确保复盖面广泛。
2. 需求实体分析
AI会识别需求文档中提到的所有业务实体,并分析它们的属性和关系。例如,对于一个学生管理系统,可能会识别出:
- 学生(属性:学号、姓名、年龄…)
- 课程(属性:课程ID、名称、学分…)
- 关系:学生可以选修多门课程,一门课程可以被多个学生选修
这对于理解实体关系和学习领域建模的同学很有启发。
3. 数据库设计生成
基于实体分析,AI会自动生成数据库设计方案,包括:
- 表结构定义
- 字段类型和约束
- 主键和外键关系
- 索引建议
这对数据库课程的作业和设计很有帮助,可以作为一个参考或起点。
📚 学习价值
这个项目不仅是一个实用工具,更是一个学习平台,学生可以从中学习到:
-
现代前端开发
- React和Remix框架的使用
- TailwindCSS的实用优先CSS理念
- 响应式设计和组件化开发
-
后端和数据库知识
- Prisma ORM的使用
- 数据库关系设计
- RESTful API设计
-
AI应用开发
- 提示工程技术(Prompt Engineering)
- 大语言模型集成方法
- AI生成内容的处理和展示
-
软件工程实践
- 需求分析方法论
- 用户故事编写
- 实体关系设计
- 数据库模式设计
🛠️ 定制和学习建议
对CS/软件工程专业学生的建议
-
学习代码结构
- 研究项目的文件结构和模块设计
- 了解前后端数据流和状态管理
-
扩展功能
- 添加导出功能(PDF、Word等)
- 实现版本历史记录
- 添加团队协作功能
-
改进AI提示词
- 修改
app/utils/openai.server.ts
中的提示词 - 尝试不同的格式和指令,比较效果
- 研究如何更好地引导AI生成结构化内容
- 修改
对数据库课程学生的建议
-
扩展数据库设计功能
- 添加ER图生成
- 支持SQL脚本导出
- 添加不同数据库平台的特定语法支持
-
改进实体识别
- 优化实体关系的识别算法
- 添加对多对多关系的更好支持
- 实现更复杂的数据完整性约束识别
对AI/ML专业学生的建议
-
优化模型使用
- 尝试不同的温度和参数设置
- 比较不同模型(GPT-3.5 vs GPT-4)的效果差异
- 实现结果评估和反馈机制
-
添加本地模型支持
- 集成开源模型如LLaMA(可以使用ollama)
- 研究如何降低API成本
- 实现混合提示策略
🤝 如何贡献
我非常欢迎同学们对这个项目进行贡献!无论是修复bug、添加新功能,还是改进文档,都是非常宝贵的。
贡献流程:
- Fork仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开Pull Request
📞 联系我
如果你有任何问题、建议或想法,欢迎通过以下方式联系我:
- 邮箱:leo92816leo92816@gmail.com
- GitHub:我的GitHub账号
⭐ 结语
希望这个工具能够帮助更多正在学习软件工程、数据库设计或AI应用开发的同学。技术是为了解决问题,而学习技术的过程中,动手实践永远是最好的老师。
如果这个项目对你有帮助,别忘了在GitHub上给它一个星星⭐,这是对我最大的鼓励!
🔗 项目地址:GitHub - AI需求分析师
🔗 部属地址:Vercel - 部属地址 (純前端)
感谢阅读!欢迎在评论区留言讨论,也欢迎分享给可能需要的同学!