当前位置: 首页 > news >正文

hello-agent task01打卡

从零构建智能旅行助手:一个基于 ReAct 模式的 Python Agent 实战

摘要:本文介绍了一个使用 Python 构建的轻量级智能旅行助手。该助手能够理解用户自然语言请求,自主调用天气查询和景点搜索工具,通过“思考 - 行动 - 观察”(ReAct)循环逻辑,最终为用户提供个性化的旅行建议。

🌟 项目亮点

这个看似简单的脚本,实则完整实现了一个Agent(智能体)的核心工作流:

  • 自主规划:模型能拆解复杂任务(如“查天气并推荐景点”)。
  • 工具使用:动态调用外部 API(wttr.in 天气 + Tavily 搜索)。
  • 闭环反馈:根据工具返回结果调整后续策略,直到完成任务。

🛠️ 核心技术栈

  1. 大语言模型 (LLM)

    • 使用kimi-for-coding-free模型(通过 OpenAI 兼容接口调用)。
    • 自定义OpenAICompatibleClient类封装 API 调用逻辑。
  2. 工具函数 (Tools)

    • get_weather(city): 调用wttr.in免费 API 获取实时天气。
    • get_attraction(city, weather): 利用Tavily Search API基于天气状况搜索最佳景点。
  3. ReAct 框架

    • Thought: 模型分析当前状态并制定计划。
    • Action: 执行具体工具调用或输出最终答案 (Finish[...])。
    • Observation: 记录工具执行结果,作为下一轮输入。

⚙️ 运行流程解析

以用户请求“查询北京天气并推荐景点”为例:

  1. 初始化:将用户请求存入prompt_history
  2. 循环推理(最多 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[北京今天晴朗,推荐去颐和园...]
  3. 结束:检测到Finish动作,打印最终答案并退出循环。

💡 关键代码片段

定义系统提示词 (System Prompt)

AGENT_SYSTEM_PROMPT=""" 你是一个智能旅行助手... 可用工具: get_weather, get_attraction 格式要求: Thought: ... \n Action: function_name(arg="value") 或 Finish[答案] """

工具注册与调用

available_tools={"get_weather":get_weather,"get_attraction":get_attraction,}# 动态执行observation=available_tools[tool_name](**kwargs)

主循环逻辑

foriinrange(5):llm_output=llm.generate(full_prompt,system_prompt=AGENT_SYSTEM_PROMPT)# 解析 Action -> 执行工具 -> 记录 Observation -> 更新历史if"Finish"inaction_str:break

运行结果截图

遇到的问题

手册写的非常好,把所以代码复制进去就能跑动,我还是对py不太熟练,还是得练习

🚀 如何扩展?

  • 增加工具:添加get_flight_price()book_hotel()函数并注册到available_tools
  • 更换模型:修改API_KEYBASE_URL即可切换至其他兼容 OpenAI 接口的模型(如 DeepSeek, Qwen 等)。
  • 持久化记忆:将prompt_history存入数据库,实现多轮长期对话。

📝 总结

本项目仅用200 行左右代码,就实现了一个具备感知、决策和执行能力的智能 Agent。它展示了 LLM 如何通过结构化提示词(Prompt Engineering)与外部世界交互,是学习 AI Agent 开发的绝佳入门案例。

代码已开源:你可以基于此框架,轻松构建属于自己的专属智能助手!


标签:#Python #AI #Agent #ReAct #LLM #自动化 #旅行助手

http://www.jsqmd.com/news/497636/

相关文章:

  • PDF文件拆分, 不限制文件大小
  • 携程任我行礼品卡回收秒变现攻略 - 京顺回收
  • 任务栏标语图片
  • 加一 - 题目笔记
  • MySQL主键设计原则与自增ID的潜在问题分析
  • 自动化测试常用函数(元素的定位)
  • 技术分享-日志链路追踪
  • 龙虾智能体不是玩具!国家安全部提醒:这3个防护步骤必做
  • (独自升级Lv.1)C++基础面试题
  • 从零学网安第四期--在kali里面制作木马程序并实现远程控制
  • 238. 除了自身以外数组的乘积
  • 自动驾驶购物车测试:超市里的交通拥堵难题——软件测试工程师的实战解构
  • 《MySQL数据库基础》4. 数据类型
  • 别再花冤枉钱了!强推10款国内免费降AI神器,一键破解论文AIGC难题(附传送门)
  • 基于Vue.js的实验室耗材管理系统设计与实现 毕业设计源码+论文+PPT
  • 基础 语法
  • 机器人关节润滑脂如何选择?工程师必须了解的技术指标
  • 数组指针:高效操作多维数组
  • MATLAB与CST联合仿真:快速建模超表面阵列,涡旋波生成与雷达散射优化
  • 分享两道关于运算符号的题目
  • 全息医疗诊断测试:医生在空中操作器官模型的精度验证
  • 嘎嘎降AI升级双引擎技术,9大检测平台达标率超99%
  • Java面试八股文问答集——大厂必备含金量20题
  • 挖洞必看!40 个漏洞挖掘姿势吐血整理,小白也能快速挖到洞
  • ASP.NET公交车管理系统的实现与设计(源代码+论文)
  • 基于springboot的作业批改系统设计与实现 毕业设计源码+论文+PPT
  • TPC标准基准测试:如何评估并建立TDengine时序数据库的性能基线
  • 【苍穹外卖|项目日记】 第二天
  • Day2 java的基础语法
  • 论文降AIGC太难?这10个国内免费降AI工具一键搞定降重(附全套传送门)