本教程将带你逐步实现一个基于 ReAct 模式的 AI Agent,能够查询实时天气、搜索景点并生成旅行规划。无需复杂框架,仅用 Python 原生代码即可构建。

一、AI Agent 的核心概念

传统大语言模型(如 ChatGPT)知识丰富,但无法访问实时数据(如天气、新闻)。AI Agent 通过组合 LLM(大脑)、记忆、规划和工具,打破这一限制。

简单公式:Agent = LLM + Memory + Planning + Tools。

本教程聚焦旅行助手场景,让 Agent 能回答“今天郑州天气如何?”等实时问题。

二、ReAct 模式:让 AI 学会使用工具

ReAct(Reasoning + Acting)通过强制模型循环执行以下步骤实现工具调用:

  1. Thought:分析当前需求(如“需要查询天气”)。

  2. Action:调用工具函数(如 get_weather(city="郑州"))。

  3. Observation:获取工具返回结果(如“郑州当前天气晴,气温 25℃”)。

  4. 重复:直到满足用户请求。

关键点:通过 Prompt Engineering 让模型输出文本格式的 Action,而非依赖 OpenAI Function Calling,确保兼容性。

三、代码实战:四步构建旅行助手

步骤 1:定义工具函数(Python 实现)

工具是 Agent 的“手”,我们准备三个核心函数:

  • get_weather(city):调用 wttr.in API 获取实时天气。

  • get_forecast(city, days):查询多日天气预报。

  • get_attraction(city, weather):通过 Tavily Search API 基于天气推荐景点。

import requests
from tavily import TavilyClient

def get_weather(city: str) -> str:
    url = f"https://wttr.in/{city}?format=j1"
    response = requests.get(url)
    data = response.json()
    desc = data['current_condition'][0]['weatherDesc'][0]['value']
    temp = data['current_condition'][0]['temp_C']
    return f"{city}当前天气:{desc},气温{temp}摄氏度"

# 其他工具函数详见原文完整代码

步骤 2:设计系统提示词(Agent 的“说明书”)

在 System Prompt 中明确规则格式,强制模型按 ReAct 循环思考:

AGENT_SYSTEM_PROMPT = """
你是一个智能旅行助手。可用工具:get_weather、get_forecast、get_attraction。
行动格式:
Thought: [思考过程]
Action: [函数调用,如 get_weather(city="Beijing")]
任务完成后使用 finish(answer="...") 输出结果。
"""

步骤 3:实现思考循环(Python 主逻辑)

循环执行:模型输出 Action → 执行工具 → 返回 Observation → 继续思考。

history = ["用户请求: 帮我查郑州天气并推荐景点"]
while True:
    response = llm.generate(history, system_prompt=AGENT_SYSTEM_PROMPT)  # 调用 LLM
    if "Action:" in response:
        tool_name, args = parse_action(response)  # 解析工具名和参数
        result = available_tools[tool_name](**args)  # 执行工具
        history.append(f"Observation: {result}")  # 记录结果
    if "finish" in response:
        print("最终答案:", extract_answer(response))
        break

步骤 4:运行示例(以“洛阳玩三天”为例)

  • 循环 1:模型思考需天气数据 → 调用 get_forecast(city="洛阳", days=3)→ 获取天气预报。

  • 循环 2:根据晴天结果 → 调用 get_attraction(city="洛阳", weather="Clear")→ 获取景点推荐。

  • 循环 3:整合信息 → 输出三日行程规划(含景点、美食提示)。

四、完整代码与配置

  1. 环境配置:在 .env文件设置 AI_KEY(OpenAI 兼容 API 密钥)、AI_URLTAVILY_API_KEY

  2. 运行代码:执行主程序后输入请求(如“查询杭州天气”),Agent 自动完成多步规划。

  3. 源码扩展:支持错误处理、记忆管理等生产级优化。

五、总结与进阶

通过本教程,你已掌握:

  • ReAct 模式的核心原理。

  • 用 Python 手动实现 Agent 循环。

  • 集成实时工具(搜索、天气)的方法。

未来可扩展方向:

  • 记忆管理:压缩长对话历史。

  • 多步规划:处理“订机票+酒店”复杂任务。

  • 容错机制:工具调用失败时自动重试。

AI Agent 开发门槛正逐渐降低,掌握基础原理后,可快速适配各种场景(如客服、数据分析)。开始动手,打造你的第一个智能体吧!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐