如何 30 分钟跑通 AI 智能体:基于 Agents Course 的 ReAct 循环原理拆解与实战步骤 如何 30 分钟跑通 AI 智能体基于 Agents Course 的 ReAct 循环原理拆解与实战步骤【免费下载链接】agents-courseThis repository contains the Hugging Face Agents Course.项目地址: https://gitcode.com/GitHub_Trending/ag/agents-courseHuggingFace Agents Course 帮 Python 开发者补齐了 AI 智能体开发最缺的一环从零搞懂智能体内部机制再亲手搭出一个能调工具的可用智能体。这个开源仓库就是该课程的完整教材从概念讲到框架最后用基准测试收尾。本文带你看懂它最核心的思考-行动-观察循环并用 smolagents 跑通一个带时区查询工具的智能体。动手前先准备先备齐四样东西后面全程不会卡住Python 3.9 及以上环境装好huggingface_hub、smolagents、pytz三个库一个 Hugging Face 账号并在设置页生成 read 权限的 API token后续调用推理接口要用把课程仓库 clone 到本地git clone https://gitcode.com/GitHub_Trending/ag/agents-course浏览器里预留 30 分钟代码会在真实模型接口上运行可选会读 units/zh-CN/ 下的中文课程内容遇到名词可以随手查它到底是怎么工作的核心结论一句话模型只负责说框架负责做两者靠一段循环咬合起来。用一个类比建立直觉。模型像管家 Alfred 的脑子能想事但出不了书房门smolagents 这类框架是管家的腿脚负责跑腿工具则是书房外的电话、日历、搜索引擎。脑子的产出始终是文字跑腿和拨电话的事全由框架代劳。拆成 5 个要点工具就是一个 Python 函数。它和普通函数唯一的不同是额外携带一份契约名字、功能描述、参数类型、返回类型。框架把契约写进系统提示。模型靠读这段文本才知道有哪些工具可用、参数怎么传这是全部秘密的第一半。模型输出的仍然是文本。它生成一段 Python 代码或 JSON 结构而不是真的调用任何东西。框架执行这段代码拿到返回值把结果作为观察Observation即工具的执行反馈追加回对话再发回模型。整个过程是个 while 循环。模型每轮基于最新观察重新决策直到给出最终答案或触达步数上限。这个循环就叫 ReAct 循环是 Reasoningacting 的合称。想看完整推导读 units/zh-CN/unit1/agent-steps-and-structure.mdx 里 Alfred 查天气的逐步演示即可。跟着跑一遍下面的小任务搭一个能回答东京现在几点的智能体。全程三段代码每段都在解决循环里的一个零件。先登录模型接口token 换成你自己的from huggingface_hub import login login()接着定义工具。注意两个细节参数要有类型注解文档字符串要写清每个参数的用途——框架靠这两样自动生成给模型看的工具描述。from smolagents import tool import datetime import pytz tool def get_time_in_timezone(timezone: str) - str: 查询指定时区的当前时间。 Args: timezone: IANA 时区名如 Asia/Tokyo tz pytz.timezone(timezone) return datetime.datetime.now(tz).strftime(%Y-%m-%d %H:%M:%S)然后组装智能体。CodeAgent是 smolagents 的默认类型模型每轮输出一段 Python 代码框架执行后把结果交还。from smolagents import CodeAgent, InferenceClientModel agent CodeAgent( tools[get_time_in_timezone], modelInferenceClientModel(), max_steps5, )最后发起任务agent.run(现在东京是几点)控制台会打印每一步的追踪模型先生成代码print(get_time_in_timezone(Asia/Tokyo))框架执行它时间字符串回到模型手里模型再输出 Final Answer。整个思考-行动-观察循环你刚才已经亲眼跑通一遍。工具定义的完整写法在 units/zh-CN/unit1/tools.mdx。进阶玩法两条路线各点一下换一种动作格式ToolCallingAgent让模型输出 JSON 而非代码适合不需要变量处理的简单场景对比见 unit2/smolagents/tool_calling_agents.mdx换一种控制方式流程固定时改用 LangGraph 的有向图比自由循环更可控入口在 units/zh-CN/unit2/langgraph/做完 unit4 的 GAIA 基准项目还能拿到带评分的结业认证容易踩的坑工具参数没写类型注解→ 现象是模型传的参乱七八糟、工具频繁报错。原因是框架用 Python 自省自动生成工具描述缺注解它就只能猜。解法每个参数补上: str、- str这类注解返回类型也别省。文档字符串只有一句功能描述→ 现象是模型不知道什么时候该调用你的工具或把参数填错。原因是模型判断工具的唯一依据就是这段描述。解法在Args:下逐个参数写清用途参考上面时区工具的写法。免费推理接口偶发超时或过载→ 现象是同一份代码时好时坏。原因是公共端点排队与你的代码无关。解法换个模型重试并用max_steps控制循环轮数避免反复烧额度。收尾整篇的核心就一条链路模型生成文本、框架执行工具、结果回灌成观察、循环直到出答案——理解了这条链路换任何框架都是同样的零件。想继续深入按 units/zh-CN/ 的单元顺序走unit1 吃透 ReAct 循环unit2 横向对比三个框架unit3 实战 Agentic RAGunit4 上 GAIA 基准。【免费下载链接】agents-courseThis repository contains the Hugging Face Agents Course.项目地址: https://gitcode.com/GitHub_Trending/ag/agents-course创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

单片机计算机毕设之基于 STM32 单片机的声光报警饮水设备物联网系统设计 基于 STM32 的手动自动双模式智能饮水控制系统设计(012106)

单片机计算机毕设之基于 STM32 单片机的声光报警饮水设备物联网系统设计 基于 STM32 的手动自动双模式智能饮水控制系统设计(012106)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/2 15:18:40
AI Agent 面试题 316:如何处理Agent中API调用的异步和并发问题?

AI Agent 面试题 316:如何处理Agent中API调用的异步和并发问题?

🔥 AI Agent 面试题 316:如何处理Agent中API调用的异步和并发问题?摘要:本文深入解析了「如何处理Agent中API调用的异步和并发问题?」这一 AI Agent 领域的核心面试题。文章从 API 编排与链式调用 的基本概念出发&…

2026/9/2 15:18:40
CI2454无线SoC开发攻略:从硬件设计到软件流程全解析

CI2454无线SoC开发攻略:从硬件设计到软件流程全解析

简介:CI2454国产单片机样例程序资源包,面向嵌入式开发工程师、电子设计爱好者以及正在评估国产MCU选型的项目团队,适用于物联网终端、智能家居控制、工业自动化、消费电子等典型应用场景。资源围绕CI2454的核心开发流程,梳理了初始…

2026/9/2 15:18:40
AI Agent 面试题 318:MCP协议的设计理念和核心组件有哪些?

AI Agent 面试题 318:MCP协议的设计理念和核心组件有哪些?

🔥 AI Agent 面试题 318:MCP协议的设计理念和核心组件有哪些?摘要:本文深入解析了「MCP协议的设计理念和核心组件有哪些?」这一 AI Agent 领域的核心面试题。文章从 MCP 协议 的基本概念出发,系统性地剖析了…

2026/9/2 15:18:39
AI Agent 面试题 327:A2A协议中的Agent Card和Task管理机制

AI Agent 面试题 327:A2A协议中的Agent Card和Task管理机制

🔥 AI Agent 面试题 327:A2A协议中的Agent Card和Task管理机制摘要:本文深入解析了「A2A协议中的Agent Card和Task管理机制」这一 AI Agent 领域的核心面试题。文章从 A2A 协议 的基本概念出发,系统性地剖析了 Agent Card、Task管…

2026/9/2 15:18:39
两周快速掌握FreeRTOS:基于STM32CubeMX的任务创建与源码分析实战

两周快速掌握FreeRTOS:基于STM32CubeMX的任务创建与源码分析实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 15:13:39