
从零构建智能旅行助手一个基于 ReAct 模式的 Python Agent 实战摘要本文介绍了一个使用 Python 构建的轻量级智能旅行助手。该助手能够理解用户自然语言请求自主调用天气查询和景点搜索工具通过“思考 - 行动 - 观察”ReAct循环逻辑最终为用户提供个性化的旅行建议。 项目亮点这个看似简单的脚本实则完整实现了一个Agent智能体的核心工作流自主规划模型能拆解复杂任务如“查天气并推荐景点”。工具使用动态调用外部 APIwttr.in 天气 Tavily 搜索。闭环反馈根据工具返回结果调整后续策略直到完成任务。️ 核心技术栈大语言模型 (LLM)使用kimi-for-coding-free模型通过 OpenAI 兼容接口调用。自定义OpenAICompatibleClient类封装 API 调用逻辑。工具函数 (Tools)get_weather(city): 调用wttr.in免费 API 获取实时天气。get_attraction(city, weather): 利用Tavily Search API基于天气状况搜索最佳景点。ReAct 框架Thought: 模型分析当前状态并制定计划。Action: 执行具体工具调用或输出最终答案 (Finish[...])。Observation: 记录工具执行结果作为下一轮输入。⚙️ 运行流程解析以用户请求“查询北京天气并推荐景点”为例初始化将用户请求存入prompt_history。循环推理(最多 5 轮)Step 1 (思考): 模型识别需先查天气 → 输出Action: get_weather(city北京)。Step 2 (执行): 代码解析 Action调用get_weather返回 “北京当前天气: 晴气温 25℃”。Step 3 (再思考): 模型获知天气为“晴”决定搜索晴天景点 → 输出Action: get_attraction(city北京, weather晴)。Step 4 (再执行): 调用 Tavily 搜索返回景点推荐列表。Step 5 (终结): 模型整合信息输出Finish[北京今天晴朗推荐去颐和园...]。结束检测到Finish动作打印最终答案并退出循环。 关键代码片段定义系统提示词 (System Prompt)AGENT_SYSTEM_PROMPT 你是一个智能旅行助手... 可用工具: get_weather, get_attraction 格式要求: Thought: ... \n Action: function_name(argvalue) 或 Finish[答案] 工具注册与调用available_tools{get_weather:get_weather,get_attraction:get_attraction,}# 动态执行observationavailable_tools[tool_name](**kwargs)主循环逻辑foriinrange(5):llm_outputllm.generate(full_prompt,system_promptAGENT_SYSTEM_PROMPT)# 解析 Action - 执行工具 - 记录 Observation - 更新历史ifFinishinaction_str:break运行结果截图遇到的问题手册写的非常好把所以代码复制进去就能跑动我还是对py不太熟练还是得练习 如何扩展增加工具添加get_flight_price()或book_hotel()函数并注册到available_tools。更换模型修改API_KEY和BASE_URL即可切换至其他兼容 OpenAI 接口的模型如 DeepSeek, Qwen 等。持久化记忆将prompt_history存入数据库实现多轮长期对话。 总结本项目仅用200 行左右代码就实现了一个具备感知、决策和执行能力的智能 Agent。它展示了 LLM 如何通过结构化提示词Prompt Engineering与外部世界交互是学习 AI Agent 开发的绝佳入门案例。代码已开源你可以基于此框架轻松构建属于自己的专属智能助手标签#Python #AI #Agent #ReAct #LLM #自动化 #旅行助手