Day 15: 综合项目实战 - 完整 AI 应用开发
学习目标
核心学习内容
1. 项目架构整合
完整功能模块:
AI 应用项目
├── 前端 (Vue/React)
│ ├── 聊天界面
│ ├── 文档管理
│ ├── 模型选择
│ ├── 反馈系统
│ └── 设置面板
├── 后端 (Express)
│ ├── API 路由
│ ├── AI 服务
│ │ ├── OpenAI 集成
│ │ ├── Ollama 集成
│ │ ├── RAG 服务
│ │ └── Agent 系统
│ ├── 向量数据库
│ ├── 文档处理
│ └── 优化系统
└── 数据存储├── 向量数据├── 文档元数据└── 用户反馈
2. 项目功能清单
核心功能:
- ✅ 智能聊天(流式响应)
- ✅ 文档上传与管理
- ✅ RAG 文档问答
- ✅ Function Calling
- ✅ AI Agent
- ✅ 模型切换(OpenAI/Ollama)
- ✅ A/B 测试
- ✅ 用户反馈
- ✅ 性能监控
实践作业
作业1:项目结构整理
项目目录:
ai-frontend-project/
├── README.md
├── package.json
├── .env.example
├── .gitignore
├── src/
│ ├── server.js # 服务器入口
│ ├── config/
│ │ ├── langchain.js # LangChain 配置
│ │ └── database.js # 数据库配置
│ ├── routes/
│ │ ├── chat.js # 聊天路由
│ │ ├── rag.js # RAG 路由
│ │ ├── documents.js # 文档路由
│ │ ├── agent.js # Agent 路由
│ │ ├── local-llm.js # 本地模型路由
│ │ └── optimization.js # 优化路由
│ ├── services/
│ │ ├── openai.js # OpenAI 服务
│ │ ├── ollama.js # Ollama 服务
│ │ ├── rag.js # RAG 服务
│ │ ├── vector-db.js # 向量数据库
│ │ ├── document-processor.js
│ │ ├── agent/
│ │ │ ├── base-agent.js
│ │ │ ├── react-agent.js
│ │ │ └── planner-agent.js
│ │ ├── ab-test.js # A/B 测试
│ │ ├── feedback.js # 反馈系统
│ │ └── performance-monitor.js
│ ├── agents/
│ │ └── tools.js # Agent 工具
│ ├── utils/
│ │ ├── logger.js
│ │ └── vector-math.js
│ └── middleware/
│ └── error-handler.js
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── ChatBot.vue
│ │ │ ├── DocumentAssistant.vue
│ │ │ ├── ModelSelector.vue
│ │ │ └── FeedbackWidget.vue
│ │ ├── utils/
│ │ │ └── api.js
│ │ └── App.vue
│ └── package.json
├── data/ # 数据目录
│ ├── vectors.json
│ ├── documents.json
│ └── feedback.json
└── docs/ # 文档├── API.md├── DEPLOYMENT.md└── ARCHITECTURE.md
作业2:完善主服务器
src/server.js(完整版):
import express from 'express';
import cors from 'cors';
import { chatRouter } from './routes/chat.js';
import { ragRouter } from './routes/rag.js';
import { documentsRouter } from './routes/documents.js';
import { agentRouter } from './routes/agent.js';
import { localLLMRouter } from './routes/local-llm.js';
import { optimizationRouter } from './routes/optimization.js';
import { vectorDBRouter } from './routes/vector-db.js';
import { errorHandler } from './middleware/error-handler.js';
import { logger } from './utils/logger.js';
import { performanceMonitor } from './services/performance-monitor.js';const app = express();
const PORT = process.env.PORT || 3000;// 中间件
app.use(cors({origin: process.env.FRONTEND_URL || 'http://localhost:5173',credentials: true
}));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));// 请求日志
app.use((req, res, next) => {const requestId = performanceMonitor.recordRequest({method: req.method,path: req.path,ip: req.ip});req.requestId = requestId;const startTime = Date.now();res.on('finish', () => {const duration = Date.now() - startTime;performanceMonitor.recordResponseTime(requestId, duration, {statusCode: res.statusCode});});logger.info(`${req.method} ${req.path}`);next();
});// 健康检查
app.get('/health', (req, res) => {res.json({status: 'ok',timestamp: new Date().toISOString(),uptime: process.uptime()});
});// API 路由
app.use('/api/chat', chatRouter);
app.use('/api/rag', ragRouter);
app.use('/api/documents', documentsRouter);
app.use('/api/agent', agentRouter);
app.use('/api/local-llm', localLLMRouter);
app.use('/api/optimization', optimizationRouter);
app.use('/api/vector-db', vectorDBRouter);// 404 处理
app.use((req, res) => {res.status(404).json({success: false,error: '接口不存在'});
});// 错误处理
app.use(errorHandler);// 启动服务器
app.listen(PORT, () => {logger.success(`🚀 服务器运行在 http://localhost:${PORT}`);logger.info(`环境: ${process.env.NODE_ENV || 'development'}`);
});// 优雅关闭
process.on('SIGTERM', () => {logger.info('收到 SIGTERM,正在关闭服务器...');process.exit(0);
});process.on('SIGINT', () => {logger.info('收到 SIGINT,正在关闭服务器...');process.exit(0);
});
作业3:编写项目文档
README.md:
# AI 智能应用项目一个功能完整的 AI 应用,整合了聊天、文档问答、Agent 等多种功能。## 功能特性- 🤖 **智能聊天**:支持流式响应,体验流畅
- 📚 **文档问答**:基于 RAG 的文档智能问答
- 🔧 **Function Calling**:AI 调用外部工具
- 🤖 **AI Agent**:自主任务执行
- 🏠 **本地模型**:支持 Ollama 离线运行
- 📊 **A/B 测试**:持续优化提示词
- 💬 **用户反馈**:收集改进建议
- 📈 **性能监控**:实时性能分析## 技术栈### 后端
- Node.js + Express
- OpenAI API
- Ollama
- LangChain
- 向量数据库### 前端
- Vue 3 / React
- Axios
- Markdown 渲染## 快速开始### 环境要求
- Node.js >= 18
- OpenAI API Key(或 Ollama)### 安装\`\`\`bash
# 克隆项目
git clone <repository-url>
cd ai-frontend-project# 安装依赖
npm install# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入 API Key
\`\`\`### 运行\`\`\`bash
# 开发模式
npm run dev# 生产模式
npm start
\`\`\`## 项目结构\`\`\`
ai-frontend-project/
├── src/ # 源代码
├── frontend/ # 前端代码
├── data/ # 数据存储
└── docs/ # 文档
\`\`\`## API 文档详见 [API.md](./docs/API.md)## 部署详见 [DEPLOYMENT.md](./docs/DEPLOYMENT.md)## 学习路径本项目是 60 天 AI 学习计划的第 15 天项目,整合了前 14 天的所有知识点。## 许可证MIT
docs/API.md:
# API 文档## 基础信息- Base URL: `http://localhost:3000/api`
- 所有响应格式:JSON## 接口列表### 聊天接口#### POST /api/chat
普通聊天**请求:**
\`\`\`json
{"message": "你好","conversationHistory": []
}
\`\`\`**响应:**
\`\`\`json
{"success": true,"data": {"message": "你好!","usage": {"total_tokens": 50}}
}
\`\`\`#### POST /api/chat/stream
流式聊天### RAG 接口#### POST /api/rag/answer
基于文档回答问题#### POST /api/rag/stream
流式 RAG 回答### 文档接口#### POST /api/documents/upload
上传文档#### POST /api/documents/text
添加文本### Agent 接口#### POST /api/agent/react
ReAct Agent#### POST /api/agent/planner
Planner Agent### 本地模型接口#### GET /api/local-llm/health
健康检查#### POST /api/local-llm/chat
本地模型聊天### 优化接口#### GET /api/optimization/ab-test/results
A/B 测试结果#### POST /api/optimization/feedback
提交反馈#### GET /api/optimization/performance/stats
性能统计
作业4:部署配置
docs/DEPLOYMENT.md:
# 部署指南## 部署选项### 1. Vercel(推荐前端)\`\`\`bash
# 安装 Vercel CLI
npm i -g vercel# 部署
vercel
\`\`\`### 2. Railway(推荐后端)1. 注册 Railway 账号
2. 连接 GitHub 仓库
3. 配置环境变量
4. 自动部署### 3. Docker 部署\`\`\`dockerfile
# Dockerfile
FROM node:18-alpineWORKDIR /appCOPY package*.json ./
RUN npm install --productionCOPY . .EXPOSE 3000CMD ["npm", "start"]
\`\`\`\`\`\`bash
# 构建镜像
docker build -t ai-app .# 运行容器
docker run -p 3000:3000 --env-file .env ai-app
\`\`\`### 4. 传统服务器部署\`\`\`bash
# 使用 PM2
npm install -g pm2# 启动应用
pm2 start src/server.js --name ai-app# 设置开机自启
pm2 startup
pm2 save
\`\`\`## 环境变量配置\`\`\`env
# OpenAI
OPENAI_API_KEY=your-key# Ollama
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama2# 服务器
PORT=3000
NODE_ENV=production
FRONTEND_URL=https://your-frontend.com# 数据库(如使用)
DATABASE_URL=your-database-url
\`\`\`## 性能优化1. 启用缓存
2. 使用 CDN
3. 数据库连接池
4. 负载均衡
作业5:项目总结文档
docs/PROJECT_SUMMARY.md:
# 项目总结## 项目概述本项目是一个完整的 AI 应用,整合了多种 AI 技术和功能。## 技术实现### 1. 基础聊天功能
- ✅ 流式响应
- ✅ 对话历史管理
- ✅ 多模型支持### 2. RAG 文档问答
- ✅ 文档向量化
- ✅ 相似度搜索
- ✅ 上下文组装### 3. Function Calling
- ✅ 工具定义
- ✅ 函数调用
- ✅ 结果处理### 4. AI Agent
- ✅ ReAct Agent
- ✅ Planner Agent
- ✅ 工具集成### 5. 本地模型
- ✅ Ollama 集成
- ✅ 模型切换
- ✅ 性能对比### 6. 优化系统
- ✅ A/B 测试
- ✅ 用户反馈
- ✅ 性能监控## 学习收获### 技术层面
1. 掌握了 AI 应用开发流程
2. 理解了 RAG、Agent 等核心概念
3. 学会了性能优化和监控
4. 掌握了部署和运维### 项目层面
1. 完整的项目开发经验
2. 代码组织和架构设计
3. 文档编写能力
4. 问题解决能力## 改进方向### 短期
- [ ] 添加用户认证
- [ ] 实现数据持久化
- [ ] 优化 UI/UX
- [ ] 增加测试覆盖率### 长期
- [ ] 多租户支持
- [ ] 更强大的 Agent
- [ ] 模型微调
- [ ] 分布式部署## 技术债务1. 错误处理需要完善
2. 测试用例不足
3. 文档需要补充
4. 性能需要优化## 项目亮点1. ✅ 功能完整
2. ✅ 代码结构清晰
3. ✅ 文档完善
4. ✅ 易于扩展
作业6:创建部署脚本
scripts/deploy.sh:
#!/bin/bashecho "=== AI 应用部署脚本 ==="# 检查 Node.js
if ! command -v node &> /dev/null; thenecho "错误: 未安装 Node.js"exit 1
fi# 检查环境变量
if [ ! -f .env ]; thenecho "警告: .env 文件不存在"echo "请复制 .env.example 并配置"
fi# 安装依赖
echo "安装依赖..."
npm install# 构建(如果有前端)
if [ -d "frontend" ]; thenecho "构建前端..."cd frontendnpm installnpm run buildcd ..
fi# 运行测试(如果有)
if [ -f "package.json" ] && grep -q "\"test\"" package.json; thenecho "运行测试..."npm test
fi# 启动应用
echo "启动应用..."
if command -v pm2 &> /dev/null; thenpm2 start src/server.js --name ai-appecho "应用已启动 (PM2)"
elsenpm start
fiecho "部署完成!"
遇到的问题
问题1:环境变量管理
解决方案:
// 使用 dotenv
import 'dotenv/config';// 验证必需的环境变量
const requiredEnvVars = ['OPENAI_API_KEY'];
requiredEnvVars.forEach(varName => {if (!process.env[varName]) {throw new Error(`缺少环境变量: ${varName}`);}
});
问题2:跨域问题
解决方案:
// CORS 配置
app.use(cors({origin: process.env.FRONTEND_URL || 'http://localhost:5173',credentials: true
}));
学习总结
今日收获
- ✅ 整合所有知识点
- ✅ 完成完整项目
- ✅ 编写项目文档
- ✅ 准备部署上线
- ✅ 项目总结复盘
关键知识点
- 项目整合,将知识点串联
- 文档编写,便于维护
- 部署上线,实际应用
- 总结复盘,持续改进
项目亮点
- ✅ 功能完整
- ✅ 架构清晰
- ✅ 代码规范
- ✅ 文档完善
15 天学习总结
学习路径回顾
- Day 1-3:AI 基础 + Node.js + API 调用
- Day 4-5:流式响应 + 项目实战
- Day 6-7:提示工程 + Function Calling
- Day 8-9:向量数据库 + RAG
- Day 10:项目完善
- Day 11:LangChain 框架
- Day 12:本地模型部署
- Day 13:AI Agent 开发
- Day 14:应用优化
- Day 15:项目整合
技能掌握
- ✅ AI 应用开发
- ✅ RAG 实现
- ✅ Agent 开发
- ✅ 性能优化
- ✅ 项目部署
明日计划
继续学习:
继续加油! 🚀
参考资源
- 项目 GitHub
- 部署文档
- API 文档
代码仓库
项目已完成:
- ✅ 完整功能实现
- ✅ 文档完善
- ✅ 部署准备
- ✅ 项目总结
GitHub 提交: Day 15 - 项目整合完成
标签: #AI学习 #项目实战 #项目总结 #部署上线 #学习笔记
写在最后
恭喜完成 15 天的 AI 学习!这是一个重要的里程碑。
通过这 15 天的学习,你已经掌握了 AI 应用开发的核心技能。
接下来可以继续深入学习,探索更多 AI 应用场景!
继续加油,未来可期! 💪🎉
快速检查清单
完成这些,第十五天就达标了! ✅