基于 FastAPI 和 LangChain 构建的智能 Agent 系统,提供强大的 AI 对话、知识库管理、智能体配置等功能。
- 智能对话系统 - 支持多轮对话,具备长期记忆和短期记忆能力
- 智能体管理 - 可创建、配置个性化的 AI 智能体,自定义系统提示词和工具集
- 知识库管理 - 支持文档上传、向量检索、在线预览,构建专属知识底座
- 工具生态系统 - 内置多种实用工具(搜索、计算器、天气、时间等),支持 MCP 协议扩展
- 用户认证系统 - JWT Token 认证,安全的权限管理
- 实时通信 - SSE (Server-Sent Events) 实时推送对话进度
- 文档处理 - PDF 等文档解析、向量化存储、智能检索
- 中间件架构 - 日志记录、安全审计、验证、优化等多层中间件
- FastAPI - 现代高性能 Web 框架
- LangChain - LLM 应用开发框架
- SQLAlchemy - ORM 数据库工具
- MySQL - 关系型数据库
- ChromaDB - 向量数据库
- Redis - 缓存和消息队列
- OpenAI API / 阿里云通义千问 - 大语言模型
- Tavily API - 网络搜索服务
- MCP (Model Context Protocol) - 模型上下文协议
- JWT - 身份认证
- Jinja2 - 模板引擎
- Pydantic - 数据验证
LLChat/
├── app/
│ ├── api/ # API 路由层
│ │ └── v1/ # v1 版本接口
│ │ ├── agent.py # 智能体管理接口
│ │ ├── chat.py # 聊天接口
│ │ ├── knowledge.py # 知识库接口
│ │ ├── tool.py # 工具接口
│ │ └── user.py # 用户接口
│ ├── llm/ # LLM 相关模块
│ │ ├── middleware/ # 中间件
│ │ │ ├── logging_middleware.py # 日志中间件
│ │ │ ├── security_middleware.py # 安全中间件
│ │ │ ├── validation_middleware.py # 验证中间件
│ │ │ └── optimization_middleware.py # 优化中间件
│ │ ├── tools/ # 内置工具
│ │ │ ├── calculator_tool.py # 计算器
│ │ │ ├── search_tool.py # 网络搜索
│ │ │ ├── time_tool.py # 时间查询
│ │ │ └── weather_tool.py # 天气查询
│ │ ├── agent_core.py # Agent 核心逻辑
│ │ ├── llm_factory.py # LLM 工厂
│ │ └── tool_registry.py # 工具注册表
│ ├── models/ # 数据模型
│ │ ├── agent.py # 智能体模型
│ │ ├── chat.py # 聊天模型
│ │ ├── knowledge.py # 知识库模型
│ │ └── user.py # 用户模型
│ ├── schemas/ # Pydantic 模式
│ ├── services/ # 业务逻辑层
│ ├── utils/ # 工具函数
│ │ ├── action_logger.py # 操作日志
│ │ ├── cache_manager.py # 缓存管理
│ │ ├── doc_parser.py # 文档解析
│ │ ├── jwt_util.py # JWT 工具
│ │ ├── redis_client.py # Redis 客户端
│ │ ├── sse_util.py # SSE 工具
│ │ └── vector_util.py # 向量工具
│ ├── config.py # 配置管理
│ ├── database.py # 数据库连接
│ └── dependencies.py # 依赖注入
├── static/ # 静态资源
├── templates/ # HTML 模板
│ ├── login.html # 登录页
│ ├── chat.html # 聊天页
│ ├── agent.html # 智能体管理页
│ └── knowledge.html # 知识库管理页
├── uploads/ # 上传文件目录
├── vector_store/ # 向量存储目录
├── .env # 环境变量配置
├── main.py # 应用入口
└── requirements.txt # 依赖列表
- Python 3.9+
- MySQL 5.7+
- Redis (可选,用于缓存)
- 克隆项目
git clone <repository-url>
cd fastapi-langchain-agent- 安装依赖
pip install -r requirements.txt- 配置环境变量
复制 .env.example 为 .env,并根据实际情况修改配置:
# 数据库配置
DATABASE_URL=mysql+pymysql://root:password@localhost/llchat
# 大模型配置
LLM_PROVIDER=openai
LLM_API_KEY=your-api-key
LLM_MODEL=qwen-plus
LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
# Tavily 搜索 API 配置
TAVILY_API_KEY=your-tavily-api-key
# MCP 配置
MCP_SERVER_URL=http://localhost:8080
MCP_ENABLED=false
# JWT 配置
JWT_SECRET_KEY=your-secret-key-here-change-in-production
JWT_ALGORITHM=HS256
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=600
# 向量库配置
VECTOR_STORE_PATH=./vector_store
EMBEDDING_MODEL=text-embedding-v3
# 日志配置
LOG_LEVEL=INFO
# 上传文件配置
UPLOAD_DIR=./uploads
MAX_UPLOAD_SIZE=10485760
# Redis 配置
REDIS_URL=redis://localhost:6379/0
# 邮件配置
SMTP_SERVER=smtp.qq.com
SMTP_PORT=465
SENDER_EMAIL=your-email@qq.com
SENDER_PASSWORD=your-smtp-password
# 验证码配置
VERIFICATION_CODE_EXPIRE_MINUTES=5
# 长期记忆配置
CONVERSATION_MEMORY_ENABLED=true
MEMORY_TOP_K=3
MEMORY_SIMILARITY_THRESHOLD=0.3
# 短期记忆配置
SHORT_TERM_MEMORY_LIMIT=20
NIGHT_MEMORY_LIMIT=10- 初始化数据库
创建 MySQL 数据库:
CREATE DATABASE llchat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- 启动应用
python main.py或使用 uvicorn:
uvicorn main:app --host 0.0.0.0 --port 8000 --reload应用启动后访问:http://localhost:8000
POST /api/v1/user/register- 用户注册POST /api/v1/user/login- 用户登录GET /api/v1/user/profile- 获取用户信息PUT /api/v1/user/profile- 更新用户信息
POST /api/v1/chat/session- 创建会话GET /api/v1/chat/sessions- 获取会话列表GET /api/v1/chat/{session_id}- 获取会话详情DELETE /api/v1/chat/{session_id}- 删除会话POST /api/v1/chat/{session_id}/message- 发送消息(支持 SSE)
POST /api/v1/agent/- 创建智能体GET /api/v1/agent/- 获取智能体列表GET /api/v1/agent/{agent_id}- 获取智能体详情PUT /api/v1/agent/{agent_id}- 更新智能体DELETE /api/v1/agent/{agent_id}- 删除智能体
POST /api/v1/knowledge/upload- 上传文档(支持 SSE 进度)GET /api/v1/knowledge/list- 获取知识列表DELETE /api/v1/knowledge/{knowledge_id}- 删除知识POST /api/v1/knowledge/search- 搜索知识
GET /api/v1/tool/list- 获取可用工具列表POST /api/v1/tool/invoke- 调用工具
使用 Tavily API 进行网络搜索,获取实时信息。
执行数学计算,支持复杂表达式。
查询当前时间、日期等信息。
查询指定城市的天气情况。
支持通过 MCP 协议扩展外部工具。
- JWT 认证 - 基于 Token 的身份验证
- 权限控制 - 细粒度的资源访问控制
- 输入验证 - Pydantic 严格的数据验证
- 安全中间件 - 请求审计、敏感内容过滤
- CORS 配置 - 跨域请求控制
- SQL 注入防护 - SQLAlchemy ORM 参数化查询
- users - 用户表
- agents - 智能体表
- chat_sessions - 聊天会话表
- chat_messages - 聊天消息表
- knowledges - 知识库表
- action_logs - 操作日志表
项目提供简洁的 Web 界面:
- 登录页 (
/login) - 用户登录/注册 - 聊天页 (
/chat) - 对话交互界面 - 智能体管理页 (
/agent) - 智能体配置管理 - 知识库管理页 (
/knowledge) - 知识文档管理
- 自动保存重要对话内容到向量数据库
- 基于相似度检索历史记忆
- 支持记忆条数和相似度阈值配置
- 根据时段动态调整加载的消息数量
- 白天模式:20 条最新消息
- 夜晚模式:10 条最新消息
- PDF 文档上传与解析
- 自动向量化处理
- ChromaDB 持久化存储
- 在线预览功能
- 智能去重机制
- 文档上传进度实时反馈
- AI 回复流式输出
- 工具调用状态通知
- LoggingMiddleware - 详细日志记录
- SecurityMiddleware - 安全审计和工具白名单
- ValidationMiddleware - 内容验证和敏感话题检测
- OptimizationMiddleware - 请求优化和重试机制
支持多种大模型提供商:
- OpenAI (GPT-4, GPT-3.5)
- 阿里云通义千问
- 其他兼容 OpenAI API 的模型
- 默认使用
text-embedding-v3 - 支持自定义嵌入模型
# 长期记忆
CONVERSATION_MEMORY_ENABLED=true # 启用长期记忆
MEMORY_TOP_K=3 # 检索条数
MEMORY_SIMILARITY_THRESHOLD=0.3 # 相似度阈值
# 短期记忆
SHORT_TERM_MEMORY_LIMIT=20 # 白天加载条数
NIGHT_MEMORY_LIMIT=10 # 夜晚加载条数knowledge_search_top_k=5 # 默认检索条数
knowledge_similarity_threshold=0.0 # 相似度阈值# 运行测试(如有)
pytest
# 或手动测试 API
curl http://localhost:8000/api/v1/tool/list- 在
app/llm/tools/目录下创建工具文件 - 实现工具类(继承 BaseTool)
- 在
tool_registry.py中注册工具 - 更新工具列表接口
- 在
app/api/v1/下创建路由文件 - 定义 Schema(schemas 目录)
- 实现 Service 逻辑(services 目录)
- 注册路由到主应用
- 在
app/llm/middleware/创建中间件文件 - 实现中间件逻辑
- 在
AgentCore._create_agent()中注册
检查 .env 中的 DATABASE_URL 配置,确保 MySQL 服务正常运行。
确保 vector_store 目录存在且有写入权限。
检查 .env 中的各类 API Key 是否正确配置。
生产环境需要修改 main.py 中的 CORS 配置,设置允许的域名。
本项目采用 MIT 许可证(如有)。
欢迎提交 Issue 和 Pull Request!
- Email: 507811058@qq.com
- 项目问题请提 Issue
感谢以下开源项目:
Built with ❤️ using FastAPI and LangChain