基于 LangGraph 和 Next.js 构建的全栈智能问答系统,提供实时流式响应和工具集成功能。
- 智能问题处理:自动分析和优化用户问题
- 实时流式响应:使用服务器发送事件实现实时响应流
- 工具集成:可扩展的工具系统,增强功能性
- 现代化界面:简洁响应式界面,支持深色/浅色主题
- 全栈架构:FastAPI 后端 + Next.js 前端
├── backend/ # FastAPI 后端
│ ├── app/
│ │ ├── api.py # API 路由
│ │ ├── graph.py # LangGraph 工作流
│ │ ├── nodes/ # 图节点
│ │ ├── schema.py # 数据模型
│ │ └── tools.py # 工具实现
│ └── pyproject.toml # Python 依赖
└── frontend/ # Next.js 前端
├── src/
├── package.json # Node.js 依赖
└── next.config.ts # Next.js 配置
后端:
- FastAPI - 现代 Python Web 框架
- LangGraph - 工作流编排
- LangChain - LLM 集成
- Pydantic - 数据验证
前端:
- Next.js 15 - React 框架
- TypeScript - 类型安全
- Tailwind CSS - 样式框架
- Radix UI - 组件库
- Python 3.12+
- Node.js 18+
- pnpm(推荐)
cd backend
pip install uv # 或使用你偏好的 Python 包管理器
uv synccd frontend
pnpm installcd backend
uv run uvicorn app.main:app --reload --port 8000cd frontend
pnpm dev应用将在以下地址可用:
- 前端:http://localhost:3000
- 后端 API:http://localhost:8000
- API 文档:http://localhost:8000/docs
GET /api/- 健康检查POST /api/chat- 聊天接口,支持流式响应
请求:
{
"question": "北京明天天气怎么样?"
}响应: 流式响应,包含以下事件类型:
chat_event- 聊天内容tool_event- 工具调用信息
# 前端测试
cd frontend
pnpm test
# 运行带 UI 的测试
pnpm test:ui
# 运行单次测试
pnpm test:run-
复制环境文件:
cp backend/.env.example backend/.env
-
在
backend/.env中配置环境变量:OPENAI_API_KEY=your_openai_api_key TAVILY_API_KEY=your_tavily_api_key
系统使用基于图的工作流,包含以下节点:
- Supervisor(监督者):分析请求并决定下一步操作
- Question Analysis(问题分析):优化和分析用户问题
- Researcher(研究员):使用工具进行信息搜索
- Tool Router(工具路由):管理工具执行流程
- Answer(回答):生成最终响应
- 在
backend/app/tools.py中定义新工具 - 在
backend/app/nodes/tool_node.py中注册工具 - 更新工具解析器
前端使用 Next.js 15 和 App Router,主要特性:
- 服务器端渲染
- 实时流式数据处理
- 响应式设计
- 主题切换
-
后端启动失败
- 检查 Python 版本是否为 3.12+
- 确认所有依赖已正确安装
-
前端构建错误
- 清除缓存:
pnpm clean - 重新安装依赖:
rm -rf node_modules && pnpm install
- 清除缓存:
-
API 连接问题
- 确认后端服务正在运行
- 检查 CORS 配置
欢迎提交 Issue 和 Pull Request!
- Fork 项目
- 创建功能分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add amazing feature' - 推送到分支:
git push origin feature/amazing-feature - 提交 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件至:hczshd@gmail.com
注意: 这是一个演示项目,请根据实际需求进行配置和部署。

