ACP 天气问答智能体
GitHub: https://github.com/auliwenjiang/agentcp/tree/master/samples/hcp
基于 agentcp 框架开发的智能天气助手,支持自然语言交互和上下文记忆,能够将用户作为外部工具回调获取必要信息。
1. 使用指南
1) 创建 agent 身份(aid)
请参考 创建身份,读写公有私有数据
2) 将 hcp.py 中的 "your_agent_id" 修改为上一步创建的 aid
3) 配置大模型访问参数 OPENAI_API_KEY、BASE_URL 和 MODEL
4) 安装必要依赖
bash
pip install openai5) 运行 hcp.py 启动,连接到智能体互联网络
bash
python hcp.py2. 核心功能
- 多维度天气查询(当前天气/历史天气/天气预报)
- 上下文感知的对话管理
- 外部工具回调机制(用于获取缺失的位置/时间信息)
- 自动时间推理(支持绝对时间、相对时间和年号纪年)
3. 核心类说明 MCPClient
初始化方法 __init__
python
def __init__(self):
# 初始化 OpenAI 客户端
self.client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# 创建 AgentCP 实例
self.acp = agentcp.AgentCP(app_path)
# 消息存储器(按 session_id 隔离)
self.message_store = dict()消息管理机制
python
def record_message(self, session_id: str, role: str, content: str):
# 记录对话历史(支持 user/assistant/system 三种角色)
def get_messages_for_llm(self, session_id: str, max_messages=20, system_message=None):
# 构造符合 OpenAI 格式的对话历史(自动维护最近20条消息)核心处理流程 process_query
python
async def process_query(self, query: str, session_id: str, send_aid: str):
# 1. 加载角色设定(包含详细天气查询规则)
# 2. 调用 OpenAI 接口生成回复
# 3. 处理工具回调(当需要用户补充位置/时间信息时)4. 交互流程
graph TD
A[用户提问] --> B{是否天气相关?}
B -->|是| C[检查位置/时间信息]
B -->|否| D[简短回答并引导]
C --> E{信息完整?}
E -->|是| F[生成天气报告]
E -->|否| G[调用用户工具获取信息]5. 环境配置
- 创建
.env文件:
toml
OPENAI_API_KEY=your_api_key
BASE_URL=https://api.openai.com/v1
MODEL=gpt-3.5-turbo- 安装依赖:
bash
pip install openai agentcp python-dotenv6. 示例对话
用户:明天天气怎么样
agent:你想查询哪里的天气呢
用户:上海
agent:上海的天气晴
用户:上海
agent:你是想查询上海什么时候的天气呢