Todo AI聊天机器人-第3阶段实施
概述
该存储库包含Todo AI聊天机器人,这是第2阶段Todo应用程序的扩展,它使用自然语言处理添加了AI驱动的任务管理功能。
特性
- 自然语言任务管理(添加、列出、完成、删除、更新任务)
- 具有对话历史记录的人工智能聊天界面
- 安全的用户身份验证和数据隔离
- 人工智能工具的MCP(模型上下文协议)集成
- 带有ChatKit UI的实时聊天界面
建筑
- 前端:Next.js 14,带TypeScript、顺风CSS、ChatKit UI
- 后端:带SQLModel ORM的FastAPI,Neon PostgreSQL
- 认证:更好地使用JWT令牌进行身份验证
- AI 代理:带有MCP工具的OpenAI代理SDK
- MCP工具:用于任务管理操作的自定义工具
安装说明
先决条件
- Node.js 18+
- Python 3.9+
- PostgreSQL或Neon数据库
- 更好的身份验证配置
后端设置
- 导航到后端目录:
cd backend- 安装Python依赖项:
pip install -r requirements.txt- 在中设置环境变量
.env:
DATABASE_URL="your_database_url"
NEXT_PUBLIC_BETTER_AUTH_URL="your_auth_url"
NEXT_PUBLIC_BETTER_AUTH_SECRET="your_auth_secret"
GEMINI_API_KEY="your_gemini_api_key"
MCP_SERVER_URL="http://localhost:3001"- 运行后端:
uvicorn main:app --reload --port 8000前端设置
- 导航到前端目录:
cd frontend- 安装依赖项:
npm install- 在中设置环境变量
.env:
NEXT_PUBLIC_BETTER_AUTH_URL="your_auth_url"
NEXT_PUBLIC_BETTER_AUTH_SECRET="your_auth_secret"
NEXT_PUBLIC_BACKEND_URL="http://localhost:8000"- 运行开发服务器:
npm run devMCP服务器设置
- 导航到MCP服务器目录:
cd mcp-server- 安装依赖项:
npm install- 运行MCP服务器:
npm startChatKit域配置
为了使聊天界面正常工作,您需要配置ChatKit域名分配列表:
- 在您的ChatKit配置中,将您的域名添加到允许的来源
- 对于当地发展:
http://localhost:3000 - 生产:您的生产领域
用法
聊天界面
AI聊天机器人在所有经过身份验证的页面上都可以作为浮动聊天小部件使用:
- 点击右下角的聊天图标
- 键入自然语言命令来管理任务
- 示例:
- “添加购买杂货的任务” - “显示我的所有任务” - “将任务#1标记为已完成” - “删除任务#2”
API终点
POST /api/{user_id}/chat-与AI代理聊天- 从第2阶段开始,标准任务端点仍然可用
安全特性
- 基于JWT的身份验证
- 用户数据隔离
- MCP工具身份验证
- 聊天端点的速率限制
- 输入验证和净化
故障排除
ChatKit域名问题
- 确保您的域名已添加到ChatKit列表
- 检查浏览器控制台是否存在CORS错误
- 验证ChatKit域是否与您的应用程序域匹配
身份验证问题
- 验证JWT令牌是否配置正确
- 检查是否正确设置了Better Auth
- 确保前端和后端URL匹配
MCP服务器连接
- 验证MCP服务器是否正在运行
- 检查后端是否可以连接到MCP服务器
- 确认身份验证令牌已正确传递
数据库问题
- 确保数据库连接字符串正确
- 如果需要,运行迁移
- 验证数据库权限
API 文档
聊天端点
POST /api/{user_id}/chat
请求正文:
{
"conversation_id": number, // optional
"message": "string"
}答复:
{
"conversation_id": number,
"response": "string",
"tool_calls": []
}环境变量
后端
DATABASE_URL:数据库连接字符串NEXT_PUBLIC_BETTER_AUTH_URL:更好的身份验证URLNEXT_PUBLIC_BETTER_AUTH_SECRET:更好的身份验证密钥GEMINI_API_KEY:Gemini API密钥MCP_SERVER_URL:MCP服务器URL
前端
NEXT_PUBLIC_BETTER_AUTH_URL:更好的身份验证URLNEXT_PUBLIC_BETTER_AUTH_SECRET:更好的身份验证密钥NEXT_PUBLIC_BACKEND_URL:后端API URL
健康检查
/health-一般健康检查/ready-准备就绪检查
贡献
请参阅存储库中的贡献指南。
许可证
MIT许可证
