尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
AgentLoop分享(上): 让 AI 真正“自主干活“-Day15
配套代码simpleAgent 项目agentloop/01_while_loop.py手写 AgentLoop一、一个关键转变从问一句到干一件事用 ChatGPT 时我们是一问一答问一句它答一句。但真实工作不是这样——把收容所的小猫领养出去这个任务需要一连串动作第 1 步先看看收容所有哪些宠物 工具列出目录第 2 步找到猫咪小花把它移走 工具移动文件第 3 步再确认一下现在剩下什么 工具列出目录第 4 步向用户汇报结果 输出总结AI 要完成这类任务不能只答一句话它需要反复地思考 → 动手 → 看结果 → 再思考。这个循环就是AgentLoopAgent 主循环。一句话AgentLoop 反复执行模型提建议 程序执行ToolCall 结果回传直到模型认为任务完成。二、为什么工具执行权必须在我们手里这是 Agent 设计最重要的安全原则模型只会说“我想调用 move_file 工具参数是 inbox/猫咪小花.txt → archive/”真正移动文件的是我们的代码我们可以在执行前做任何检查路径是否合法、权限是否足够、要不要人工确认模型输出文字我要调 move_file(猫咪小花.txt, archive) │ ▼ 代码校验 → 执行 → 返回结果 │ ▼ 结果放回历史 → 模型看到结果 → 决定下一步这也是为什么 Agent 的能力边界 我们给了它多少工具。给它的工具越多、越安全它能干的事越多但风险也越大——工具就是 Agent 的手。三、AgentLoop 的 4 步本质手写版一眼看懂参考代码agentloop/01_while_loop.py核心只有这几步forturninrange(1,8):# ① 限定最多 8 轮防死循环responsellm.invoke(messages)# ② 让模型思考基于全部历史messages.append(response)# 模型的话放回历史ifnotresponse.tool_calls:# ③ 模型没要求调工具print(response.content)# 那就是最终回答结束breaktool_callresponse.tool_calls[0]# ④ 模型要求调工具resulttool_map[tool_call[name]].invoke(tool_call[args])# 执行messages.append(ToolMessage(# 结果放回历史带 tool_call_idcontentstr(result),tool_call_idtool_call[id],))# → 回到 ②模型继续思考这 4 步就是所有 Agent 框架的底层原语。后面学 LangGraph你会发现它只是把这 4 步画成了一张开源的图。三个必须记住的细节历史要全量回传每一轮都要把完整对话历史发给模型模型才能记得前面做过什么。tool_call_id 要对上号工具结果必须带模型给的 id模型才知道这个结果回应的是哪个调用。必须有最大轮数模型可能陷入死循环反复调同一个工具for range(8)就是保险丝。四、核心概念ReAct推理 行动Agent 边思考边行动的经典范式叫ReActReasoning ActingReasoning推理模型观察当前状态决定下一步该干嘛Acting行动调用一个工具观察结果再推理下一步Thought: 我需要先看看收容所有哪些宠物 Action: list_files(inbox) Observation: 有猫咪小花、狗狗旺财、仓鼠球球 Thought: 找到了猫咪小花现在领养它 Action: move_file(inbox/猫咪小花.txt, archive/) Observation: 移动成功 Thought: 任务完成可以汇报了 Answer: 已领养猫咪小花……我们的手写循环就是 ReAct 的代码化。模型输出里的Thought / Action / Observation不一定是显式文字——现在的大模型通过结构化的tool_calls字段直接表达我要行动而观察结果由我们回传。五、动手体验10 分钟cd~/simpleAgentsource.venv/bin/activate# 配置 .env 里的 API_KEYDeepSeek 注册送额度cdagentloop python3 01_while_loop.py运行后你会亲眼看到每一轮的过程--- 第 1 轮模型思考 --- 模型决定调用工具list_files({path: inbox}) 工具返回 - inbox/猫咪小花.txt ... --- 第 2 轮模型思考 --- 模型决定调用工具move_file({source: inbox/猫咪小花.txt, target: archive/}) 工具返回 已移动 ... --- 第 3 轮模型思考 --- ✅ 最终回答已完成领养……推荐练习把任务改成领养仓鼠球球——观察模型怎么自己调整工具参数在代码里故意去掉ToolMessage回传——看模型会失忆把range(1, 8)改成range(1, 2)——看模型来不及完成任务六、小结概念一句话AgentLoop反复思考 → 执行工具 → 回传结果直到任务完成的循环ReAct推理 行动交替的经典范式tool_calls模型表达想调工具的结构化字段name / args / id执行权永远在我们代码手里模型只提议最大轮数防止死循环的保险丝
RELATED

相关推荐

家庭网络从传统路由器转向 OVN 的实践与思考

家庭网络从传统路由器转向 OVN 的实践与思考

家庭网络从传统路由器转向 OVN 的实践与思考 很多技术爱好者或家庭实验室管理员都曾对消费级路由器感到失望:功能固化、性能瓶颈、日志简陋、高级网络策略难以实现。当 VLAN、多 WAN、复杂防火墙规则、流量监控和网络隔离成为刚需时,这些“黑盒子”路由…

📅 2026/10/7 22:42:55
音乐解密终极指南:5分钟解锁所有加密音乐格式的完整方案

音乐解密终极指南:5分钟解锁所有加密音乐格式的完整方案

音乐解密终极指南:5分钟解锁所有加密音乐格式的完整方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: htt…

📅 2026/9/12 1:10:56
大模型应用开发教程04 | 多轮对话原理与实现(Chatbot)

大模型应用开发教程04 | 多轮对话原理与实现(Chatbot)

理论部分 很多人第一次写多轮对话,会误以为“模型记住了刚才聊过的内容”。但从 API 的角度看,多轮对话的本质其实是: 每一轮请求都把历史消息一起发给模型。 也就是说: 模型没有“长期记忆”(默认情况下不会跨请求自动…

📅 2026/10/8 6:18:15
MORE NEWS

更多资讯

📰

Drummond Group AS2认证EDI产品选型避坑指南

做 EDI 这几年,被问得最多的问题之一就是:“怎么找真正有 Drummond Group AS2 国际认证的 EDI 产品?”说实话,这个问题看起来简单,实际坑特别多。不是随便找一个支持 AS2 的软件就行,也不是销售拍着胸脯说一…

📰

链表合并:非递减有序链表的原地归并实现

1. 项目概述:为什么链表合并不是“拼接”,而是“手术式融合”“基于链表的两个非递减有序序列的合并”——这行字看起来像教科书里的课后习题,但在我带过的十几个算法实训班里,它常年稳居“表面简单、实操翻车率最高”的前三名。不…

📰

Spring Boot 3.x 整合 Elasticsearch 8.x:客户端迁移与搜索实践

Spring Boot 3.x 要接 Elasticsearch 8.x,很多人的第一反应是“这不就是个 starter 依赖么”,但真正上手后会连续被几个版本问题砸懵。RestHighLevelClient 在 ES 8 里已经明确不建议再用,网上教程的示例一大半还停在 7.x 写法,Sp…

📰

AI越聪明,人类越忙?被忽视的“验证税”正在吞噬效率

纽约时报发表题目《What’s Dragging Down A.I. Efficiency? The ‘Verification Tax.’》的文章,其核心观点是:AI 虽然提高了内容生成速度,但同时创造了一种新的人工成本,即“验证税(Verification Tax)”…

📰

MATLAB逆傅里叶变换ifft实战:归一化、频率排列与单双边谱处理

简介:这份资源围绕逆傅里叶变换(IFFT)在MATLAB中的实现展开,面向信号处理、通信工程与图像分析方向的学习者和开发者,帮助理解频域信息如何还原为时域信号。压缩包内仅含1个m文件,即自定义函数F2T.m&#x…

📰

SpringBoot+Vue实验报告管理系统:从部署到二次开发全流程实战

拿到这套基于SpringBoot和Vue的实验报告管理系统源码时,我第一反应是典型的教学管理类全栈项目。但真正动手把它从代码仓库变成能跑通、能交付的完整系统,才发现里面涉及的坑远比想象中多。这篇文章不打算写泛泛的架构科普,而是记录我从零开始…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬