旅行智能体(Agent)(手工实现版本)
这是一个不依赖 LangChain 框架的手工实现版本,展示了智能体的核心原理。
特点
- ✅ 完全手工实现,不依赖 LangChain
- ✅ 支持函数调用(Function Calling)
- ✅ 模块化设计,易于理解和扩展
- ✅ 使用 DeepSeek API
项目结构
manual_agent/
├── data/ # 数据文件
│ ├── weather.json
│ ├── flights.json
│ └── attractions.json
├── tools/ # 工具函数
│ ├── weather_tools.py
│ ├── flight_tools.py
│ ├── attraction_tools.py
│ └── budget_tools.py
├── base.py # 基础类(Tool、装饰器)
├── llm.py # LLM 接口类
├── agent.py # 智能体核心类
├── main.py # 主程序
└── requirements.txt # 依赖
核心组件说明
1. base.py - 基础设施
Tool类:封装工具函数@tool装饰器:将函数转换为工具ToolRegistry类:工具注册表
2. llm.py - LLM 接口
LLM类:封装 OpenAI 兼容的 API- 支持函数调用(Function Calling)
- 自动处理工具调用和结果返回
3. agent.py - 智能体核心
Agent类:智能体实现- 自动构建工具定义
- 迭代式执行:LLM 决策 → 工具调用 → 结果反馈 → 最终回复
4. tools/ - 工具集合
query_weather:查询天气query_flights:查询航班recommend_attractions:推荐景点calculate_total_budget:计算预算
安装依赖
pip install -r requirements.txt --index-url https://pypi.org/simple/
配置
设置 DeepSeek API Key:
# Windows (PowerShell)
$env:OPENAI_API_KEY='your_deepseek_api_key'
# Windows (CMD)
set OPENAI_API_KEY=your_deepseek_api_key
# Linux/Mac
export OPENAI_API_KEY='your_deepseek_api_key'
使用方法
cd manual_agent
python main.py
工作原理
用户输入
↓
LLM 分析 + 选择工具
↓
调用工具函数
↓
获取工具结果
↓
将结果反馈给 LLM
↓
LLM 生成最终回复
↓
返回给用户
与 LangChain 版本对比
| 特性 | LangChain 版本 | 手工实现版本 |
|---|---|---|
| 依赖 | LangChain 框架 | 仅 OpenAI SDK |
| 代码量 | 较少 | 较多 |
| 可控性 | 中等 | 高 |
| 学习价值 | 学习如何使用框架 | 理解核心原理 |
| 扩展性 | 受限于框架 | 完全自定义 |
示例对话
您:我想从北京去上海,帮我查一下航班
助手:[调用 query_flights 工具]
[显示北京到上海的航班信息]
您:推荐一下上海的景点
助手:[调用 recommend_attractions 工具]
[显示上海热门景点推荐]
您:我和女朋友想去上海玩3天,预算5000元
助手:[调用 calculate_total_budget 工具]
[根据预算给出建议和规划]
扩展建议
- 添加更多工具:在
tools/目录下创建新的工具文件 - 优化提示词:修改
agent.py中的系统提示词 - 支持记忆:添加对话历史存储
- 多轮对话:实现上下文管理
- 流式输出:添加打字机效果
注意事项
- 需要有效的 DeepSeek API Key
- 当前仅支持北京和上海两个城市
- 工具参数需要严格按照 JSON 格式传递
源码
参见 https://github.com/chendanyu/travel_agent/tree/main/manual_agent

被折叠的 条评论
为什么被折叠?



