- ✅ 基于LangGraph的智能体编排
- ✅ FastAPI提供RESTful API接口
- ✅ OpenAI 兼容 API - 使用标准 OpenAI SDK 即可访问
- ✅ 多模型支持 - 通过 model 参数选择不同的智能体配置
- ✅ 支持工具调用(计算器、文本处理、API调用等)
- ✅ 支持RAG知识库(Milvus向量数据库)
- ✅ 支持独立的 Embedding API 配置 - 对话和 RAG 可使用不同的 API
- ✅ 支持 MCP 工具 - 可配置多个 MCP 服务器,单独启用/禁用
- ✅ 支持流式输出(SSE)
- ✅ OpenAPI文档自动生成
- ✅ 结构化日志记录
- ✅ 配置化管理
- ✅ LangSmith 集成 - 完整的可观测性和调试能力
- ✅ LangGraph Studio 支持 - 可视化调试和监控
- Python 3.10+
- LangGraph: 智能体编排框架
- LangGraph Studio: 可视化调试工具
- LangChain 0.3+: LLM应用开发框架 (Pydantic v2 兼容)
- LangSmith: 可观测性和调试平台
- FastAPI: Web框架
- Uvicorn: ASGI服务器
- Milvus: 向量数据库
- OpenAI: 大模型API
cus-ai-agent/
├── docs/ # 文档目录
│ ├── PRD.md # 产品需求文档
│ └── architecture.md # 架构设计文档
├── scripts/ # 脚本目录
│ ├── start.sh # 启动脚本
│ └── test_api.sh # API测试脚本
├── src/ # 源代码目录
│ ├── agent/ # 智能体核心
│ │ ├── graph.py # LangGraph图定义
│ │ ├── nodes.py # 节点定义
│ │ └── state.py # 状态定义
│ ├── tools/ # 工具集
│ │ ├── api_caller.py # API调用工具
│ │ └── custom_tools.py # 自定义工具
│ ├── api/ # API接口
│ │ ├── main.py # FastAPI主入口
│ │ ├── routes.py # 路由定义
│ │ └── models.py # 数据模型
│ ├── config/ # 配置
│ │ └── settings.py # 配置文件
│ └── utils/ # 工具类
│ └── logger.py # 日志工具
├── logs/ # 日志目录
├── requirements.txt # Python依赖
├── .env.example # 环境变量示例
└── README.md # 项目说明
确保已安装Python 3.10或更高版本:
python3 --versiongit clone <repository-url>
cd cus-ai-agent复制环境变量示例文件并编辑:
cp .env.example .env编辑.env文件,配置必要的环境变量:
bash scripts/setup_rag_config.sh# 必需配置
OPENAI_API_KEY=your_openai_api_key_here
# LangSmith 配置(可观测性和调试)
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=your_langsmith_api_key_here
LANGCHAIN_PROJECT=cus-ai-agent
# RAG 知识库配置(可选)
ENABLE_RAG_TOOL=true
# 独立的 Embedding API 配置(推荐:对话用 DeepSeek,Embedding 用 OpenAI)
# 如果不设置,将使用上面的 OPENAI_API_KEY
RAG_OPENAI_API_KEY=your_openai_api_key_for_embedding
RAG_OPENAI_API_BASE=https://api.openai.com/v1
# 可选配置
MODEL_NAME=gpt-4-turbo-preview
TEMPERATURE=0.7
API_PORT=8000💡 成本优化建议:
- 对话使用 DeepSeek($0.14/1M tokens)
- Embedding 使用 OpenAI($0.02/1M tokens)
- 总成本节省约 99%
详细配置说明请查看:
获取 LangSmith API Key:
- 访问 LangSmith
- 注册/登录账号
- 进入 Settings → API Keys
- 创建新的 API Key
如果需要使用 MCP (Model Context Protocol) 工具:
# 复制配置示例
cp config/mcp_tools.example.yaml config/mcp_tools.yaml
# 编辑配置文件
vim config/mcp_tools.yaml配置示例:
global:
enabled: true # 启用 MCP 工具
servers:
- name: filesystem
enabled: true
url: http://localhost:3000
tool_prefix: fs_详细配置说明请查看:MCP 工具集成方案
chmod +x scripts/install.sh
./scripts/install.sh# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
# 升级pip
pip install --upgrade pip
# 安装依赖
pip install -r requirements.txt如果安装过程中遇到依赖冲突错误,可以使用修复脚本:
chmod +x scripts/fix_dependencies.sh
./scripts/fix_dependencies.sh详细说明请查看: 依赖冲突解决方案
# 确保已安装依赖
python run.pychmod +x scripts/start.sh
./scripts/start.sh# 如果使用虚拟环境,先激活
source venv/bin/activate
# 启动服务
python -m uvicorn src.api.main:app --host 0.0.0.0 --port 8000 --reload- API文档: http://localhost:8000/docs
- ReDoc文档: http://localhost:8000/redoc
- OpenAPI规范: http://localhost:8000/openapi.json
使用标准的 OpenAI SDK 访问智能体服务:
from openai import OpenAI
# 创建客户端
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="any-value" # API key 不验证
)
# 发送消息
response = client.chat.completions.create(
model="multi-agent-default",
messages=[
{"role": "user", "content": "你好"}
]
)
print(response.choices[0].message.content)可用模型:
multi-agent-default- 默认的多智能体配置multi-agent-supervisor- Supervisor 模式multi-agent-with-memory- 启用记忆的配置
详细文档:OpenAI 兼容 API 使用指南
GET /api/v1/healthPOST /api/v1/chat
Content-Type: application/json
{
"message": "帮我计算 123 + 456",
"session_id": "user-123",
"config": {
"temperature": 0.7
}
}POST /api/v1/chat/stream
Content-Type: application/json
{
"message": "你好",
"session_id": "user-123"
}import requests
# 普通对话
response = requests.post(
"http://localhost:8000/api/v1/chat",
json={
"message": "帮我计算 123 + 456",
"session_id": "test-session"
}
)
print(response.json())# 普通对话
curl -X POST "http://localhost:8000/api/v1/chat" \
-H "Content-Type: application/json" \
-d '{
"message": "帮我计算 123 + 456",
"session_id": "test-session"
}'
# 健康检查
curl -X GET "http://localhost:8000/api/v1/health"chmod +x scripts/test_api.sh
./scripts/test_api.sh执行数学计算:
用户: 帮我计算 123 + 456
智能体: 使用计算器工具计算结果为 579
处理文本(大小写转换、反转、长度等):
用户: 请把 hello world 转换为大写
智能体: 使用文本处理工具,结果为 HELLO WORLD
调用外部HTTP API:
用户: 调用 https://api.example.com/data 获取数据
智能体: 使用API调用工具获取数据...
| 变量名 | 说明 | 默认值 |
|---|---|---|
| OPENAI_API_KEY | OpenAI API密钥 | 必需 |
| MODEL_NAME | 模型名称 | gpt-4-turbo-preview |
| TEMPERATURE | 温度参数 | 0.7 |
| MAX_TOKENS | 最大令牌数 | 2000 |
| API_HOST | API主机 | 0.0.0.0 |
| API_PORT | API端口 | 8000 |
| LOG_LEVEL | 日志级别 | INFO |
| 变量名 | 说明 | 默认值 |
|---|---|---|
| ENABLE_API_TOOL | 启用API调用工具 | true |
| ENABLE_SEARCH_TOOL | 启用搜索工具 | false |
- 在
src/tools/custom_tools.py中创建新工具类:
from langchain.tools import BaseTool
class MyCustomTool(BaseTool):
name: str = "my_tool"
description: str = "工具描述"
def _run(self, query: str) -> str:
# 实现工具逻辑
return "结果"- 在
src/tools/__init__.py中注册工具:
from .custom_tools import MyCustomTool
def get_available_tools():
tools = []
tools.append(MyCustomTool())
return tools编辑src/agent/graph.py和src/agent/nodes.py来自定义智能体的执行流程。
docker build -t cus-ai-agent .
docker run -p 8000:8000 --env-file .env cus-ai-agent使用Gunicorn + Uvicorn:
gunicorn src.api.main:app \
--workers 4 \
--worker-class uvicorn.workers.UvicornWorker \
--bind 0.0.0.0:8000修改.env文件中的MODEL_NAME和相关API配置。
使用/api/v1/chat/stream接口,返回Server-Sent Events流。
如果遇到 Pydantic 相关错误,运行升级脚本:
python scripts/upgrade_langchain.py详见 故障排查指南
- ✅ 自动追踪: 自动追踪所有 LLM 调用和工具执行
- ✅ 实时监控: 实时查看性能指标和错误
- ✅ 调用链路: 完整的调用链路可视化
- ✅ 性能分析: Token 使用量、响应时间统计
- ✅ 错误调试: 详细的错误堆栈和上下文
- 配置环境变量
# 在 .env 文件中
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=your_langsmith_api_key_here
LANGCHAIN_PROJECT=cus-ai-agent- 启动服务
python run.py- 查看追踪数据
访问 LangSmith Dashboard 查看实时追踪数据
- LLM 调用 (ChatOpenAI)
- 工具执行 (Calculator, TextProcess, API Call, RAG)
- 智能体决策 (LangGraph 节点)
- 错误和异常
- 性能指标 (响应时间、Token 使用量)
- ✅ 可视化 Graph: 直观查看智能体执行流程
- ✅ 交互式调试: 实时测试和调试智能体
- ✅ 状态检查: 查看每个节点的状态变化
- ✅ 性能监控: 执行时间和 Token 使用统计
- ✅ 状态回溯: 检查历史执行状态
- 安装依赖
pip install -r requirements.txt- 启动 Studio
# 使用启动脚本 (推荐)
chmod +x scripts/start_studio.sh
./scripts/start_studio.sh
# 或直接使用 CLI
langgraph dev遇到端口冲突? 使用自动修复脚本:
./scripts/fix_port_conflict.sh- 访问 Studio UI
浏览器自动打开或手动访问: http://localhost:8123
- Graph 可视化: 查看节点和边的关系
- 交互测试: 输入消息并查看执行过程
- 状态追踪: 查看每个节点的输入输出
- 调试工具: 断点、单步执行、状态回溯
本项目采用 MIT License 开源许可证。
我们欢迎所有形式的贡献!
请阅读 贡献指南 了解详情。
如果这个项目对你有帮助,请给我们一个 Star!
感谢以下开源项目:
Made with ❤️ by the cus-ai-agent team