Skip to content

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、环境配置

  1. 创建 .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:你是想查询上海什么时候的天气呢

ACP 智能体通信协议文档