基于 FastAPI + LangGraph 的智能 Agent API 服务,支持 RAG 知识库、工具调用、流式输出和多种执行后端。
- Agent 系统:基于 LangGraph 的 DeepAgent/ReactAgent,支持本地 Shell、Store 和 Sandbox 三种执行后端
- RAG 知识库:基于 Elasticsearch 的向量检索 + 知识图谱 RAG,支持文档上传和智能问答
- 工具生态:内置天气查询、网页抓取、定时任务等工具,支持 MCP 协议扩展
- 流式输出:SSE 实时流式返回,支持 AG-UI 协议
- 前端界面:Next.js + React 构建的交互式聊天界面
- 可观测性:集成 Phoenix tracing,支持 LangSmith
langchain-api/
├── langchain_api/ # 后端核心
│ ├── agent/ # Agent 系统
│ ├── api/ # API 路由层
│ ├── middleware/ # 中间件(业务开关、工具搜索、沙箱)
│ ├── rag/ # RAG 检索系统
│ ├── tools/ # 内置工具
│ ├── main.py # FastAPI 入口
│ └── settings.py # 配置管理
├── frontend/ # Next.js 前端
│ ├── app/ # 页面路由
│ └── components/ # React 组件
├── .langchain_api/ # 工作区(技能、文件)
└── docker-compose.yml # 可选服务(Phoenix)
# Python 3.12+
# Node.js 18+
# Elasticsearch 8.x# 复制环境变量配置
cp .env.example .env
# 编辑 .env 填入必要配置
# OPENAI_API_BASE=https://api.openai.com/v1
# OPENAI_API_KEY=your-api-key
# CHAT_MODEL_NAME=qwen3
# EMBEDDING_MODEL_NAME=qwen3-embedding
# ES_URL=http://localhost:9200
# 安装依赖
uv sync --dev# 启动后端(默认端口 7869)
uv run uvicorn langchain_api.main:app --reload --host 0.0.0.0 --port 7869
# 或直接运行
uv run python -m langchain_api.maincd frontend
pnpm install
pnpm dev # 开发模式 http://localhost:3000
pnpm build # 构建静态文件前端构建后会自动部署到后端,通过 http://localhost:7869/ 访问。
| 接口 | 协议 | 用途 |
|---|---|---|
POST /api/agent/ag_ui |
AG-UI | Agent 交互界面 |
POST /api/agent/general_api |
SSE | 通用流式接口 |
| 接口 | 协议 | 用途 |
|---|---|---|
POST /api/rag/general_api |
SSE | RAG 流式问答 |
POST /api/rag/management/upload |
REST | 上传文档 |
GET /api/rag/management/knowledge_bases |
REST | 获取知识库列表 |
DELETE /api/rag/management/documents/{doc_id} |
REST | 删除文档 |
| 变量 | 说明 |
|---|---|
OPENAI_API_BASE |
LLM API 地址 |
OPENAI_API_KEY |
LLM API 密钥 |
CHAT_MODEL_NAME |
聊天模型名称(如 qwen3) |
EMBEDDING_MODEL_NAME |
向量模型名称(如 qwen3-embedding) |
ES_URL / ES_URSR / ES_PWD |
Elasticsearch 连接配置 |
| 变量 | 默认值 | 说明 |
|---|---|---|
BACKEND_TYPE |
local_shell |
执行后端:local_shell/store/sandbox |
TAVILY_API_KEY |
- | 启用联网搜索 |
PG_DATABASE_URL |
- | Postgres 持久化记忆 |
USE_TOOL_SEARCH |
False |
启用延迟工具加载 |
USE_COPILOTKIT |
False |
启用 CopilotKit |
PHOENIX_COLLECTOR_ENDPOINT |
- | 启用 Phoenix tracing |
- 向量检索:Dense Vector + BM25 混合检索
- 知识图谱:自动抽取实体和关系,构建三元组索引
- 图扩展:基于实体关系进行图传播召回
- 文档管理:支持 PDF、TXT 等格式上传和 chunk 管理
用户查询 → 实体抽取 → 向量/图检索 → 关系扩展 → 上下文组装 → LLM 生成
# 上传知识库文档
curl -X POST http://localhost:7869/api/rag/management/upload \
-F "files=@document.pdf" \
-F "knowledge_base_id=kb-001"
# 列出知识库
curl http://localhost:7869/api/rag/management/knowledge_bases
# 删除文档
curl -X DELETE http://localhost:7869/api/rag/management/documents/{doc_id}| 工具 | 说明 |
|---|---|
weather |
天气查询 |
web_fetch |
网页内容抓取 |
cron_manager |
定时任务管理 |
启用 USE_TOOL_SEARCH=True 后,Agent 会根据任务需求动态搜索可用工具,提升工具调用效率。
支持通过 LangChain MCP Adapters 接入外部工具服务。
使用 OpenSandbox 实现代码执行沙箱:
# 配置 .sandbox.toml
opensandbox-server --config .sandbox.toml
# 安装 Playwright
playwright install --with-deps chromium# 启动 Phoenix
docker-compose up -d phoenix
# 访问 http://localhost:6006 查看 traces# Python 语法检查
uv run python -m py_compile <file.py>
# 前端 lint
cd frontend && pnpm lint.langchain_api/workspace 用于存放:
skills/:自定义技能定义pdf_files/:上传的文档converted_pdf/:转换后的文本
- 后端:FastAPI, LangGraph, DeepAgents, Elasticsearch
- 前端:Next.js, React, TypeScript
- 向量存储:Elasticsearch
- 持久化:PostgreSQL (可选)
- 可观测性:Phoenix, LangSmith
MIT
