教程:用 Python 从零手写智能旅行助手 AI Agent
本教程将带你逐步实现一个基于 ReAct 模式的 AI Agent,能够查询实时天气、搜索景点并生成旅行规划。无需复杂框架,仅用 Python 原生代码即可构建。
一、AI Agent 的核心概念
传统大语言模型(如 ChatGPT)知识丰富,但无法访问实时数据(如天气、新闻)。AI Agent 通过组合 LLM(大脑)、记忆、规划和工具,打破这一限制。
简单公式:Agent = LLM + Memory + Planning + Tools。
本教程聚焦旅行助手场景,让 Agent 能回答“今天郑州天气如何?”等实时问题。
二、ReAct 模式:让 AI 学会使用工具
ReAct(Reasoning + Acting)通过强制模型循环执行以下步骤实现工具调用:
-
Thought:分析当前需求(如“需要查询天气”)。
-
Action:调用工具函数(如
get_weather(city="郑州"))。 -
Observation:获取工具返回结果(如“郑州当前天气晴,气温 25℃”)。
-
重复:直到满足用户请求。
关键点:通过 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:整合信息 → 输出三日行程规划(含景点、美食提示)。
四、完整代码与配置
-
环境配置:在
.env文件设置AI_KEY(OpenAI 兼容 API 密钥)、AI_URL、TAVILY_API_KEY。 -
运行代码:执行主程序后输入请求(如“查询杭州天气”),Agent 自动完成多步规划。
-
源码扩展:支持错误处理、记忆管理等生产级优化。
五、总结与进阶
通过本教程,你已掌握:
-
ReAct 模式的核心原理。
-
用 Python 手动实现 Agent 循环。
-
集成实时工具(搜索、天气)的方法。
未来可扩展方向:
-
记忆管理:压缩长对话历史。
-
多步规划:处理“订机票+酒店”复杂任务。
-
容错机制:工具调用失败时自动重试。
AI Agent 开发门槛正逐渐降低,掌握基础原理后,可快速适配各种场景(如客服、数据分析)。开始动手,打造你的第一个智能体吧!
更多推荐



所有评论(0)