《60天AI学习计划启动 | Day 15: 综合项目实战 - 完整 AI 应用开发》
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-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["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/bash
echo "=== AI 应用部署脚本 ==="
# 检查 Node.js
if ! command -v node &> /dev/null; then
echo "错误: 未安装 Node.js"
exit 1
fi
# 检查环境变量
if [ ! -f .env ]; then
echo "警告: .env 文件不存在"
echo "请复制 .env.example 并配置"
fi
# 安装依赖
echo "安装依赖..."
npm install
# 构建(如果有前端)
if [ -d "frontend" ]; then
echo "构建前端..."
cd frontend
npm install
npm run build
cd ..
fi
# 运行测试(如果有)
if [ -f "package.json" ] && grep -q "\"test\"" package.json; then
echo "运行测试..."
npm test
fi
# 启动应用
echo "启动应用..."
if command -v pm2 &> /dev/null; then
pm2 start src/server.js --name ai-app
echo "应用已启动 (PM2)"
else
npm start
fi
echo "部署完成!"
遇到的问题
问题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 提交: Day 15 - 项目整合完成
标签: #AI学习 #项目实战 #项目总结 #部署上线 #学习笔记
写在最后
恭喜完成 15 天的 AI 学习!这是一个重要的里程碑。
通过这 15 天的学习,你已经掌握了 AI 应用开发的核心技能。
接下来可以继续深入学习,探索更多 AI 应用场景!
继续加油,未来可期! 💪🎉
快速检查清单
完成这些,第十五天就达标了! ✅

浙公网安备 33010602011771号