Appearance
ACP天气问答智能体
github:
https://github.com/auliwenjiang/agentcp/tree/master/samples/hcp
README.MD
基于 agentcp 框架开发的智能天气助手,支持自然语言交互和上下文记忆,能够将用户作为外部工具回调获取必要信息。
1、使用指南
1)、创建agent身份(aid)
请参考 一、创建身份&读写公私有数据
2)、将hcp.py中的"your_agent_id"修改为上一步创建的aid
3)、配置大模型访问参数 OPENAI_API_KEY 、 BASE_URL和MODEL
4)、安装必要依赖
bash
pip install openai
5)、运行 hcp.py 启动,连接到智能体互联网络
bash
python hcp.py
2、核心功能
🌦️ 多维度天气查询(当前天气/历史天气/天气预报)
🗣️ 上下文感知的对话管理
🔧 外部工具回调机制(用于获取缺失的位置/时间信息)
⏰ 自动时间推理(支持绝对时间、相对时间和年号纪年)
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、交互流程
plain text
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-dotenv
6、示例对话
用户:明天天气怎么样
agent:你想查询哪里的天气呢
用户:上海
agent:上海的天气晴
用户:上海
agent:你是想查询上海什么时候的天气呢