news 2026/3/20 22:06:08

震惊!原来大模型Agent是这样实现的,小白程序员也能搞懂!ReAct模式+Function Calling让AI自己干活

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
震惊!原来大模型Agent是这样实现的,小白程序员也能搞懂!ReAct模式+Function Calling让AI自己干活

0. 现象:RAG 的天花板与 Agent 的必然性

你做完前六篇的 RAG,发现模型成了一个“博学的图书管理员”:

问它公司制度,它答得头头是道(RAG)。

问它“帮我查下 A 仓库库存”,它傻了:“对不起,知识库里没有实时库存。”

说“帮我给老板发个请假邮件”,它更傻了:“我只是个语言模型。”

RAG 只能“读”,Agent 才能“做”。

Agent 的第一性原理:LLM + 记忆 + 规划 + 工具 = 自主智能体。

工程上没这么玄乎,Agent 本质上就是:循环调用(Loop) + 工具路由(Router)。

1. 核心解密:ReAct 模式(Reasoning + Acting)

Agent 为什么能自己决定下一步干嘛?全靠一个 Prompt 模式,叫ReAct。

别被学术名词吓到,它的逻辑就像人类思考:

Thought(思考):用户想查库存,我应该先调用“查询库存接口”。

Action(行动):调用 search_inventory(sku=“A001”)。

Observation(观察):接口返回 { “A001”: 50 }。

Thought(再思考):库存查到了,是 50。用户还问能不能发货?我看下规则。

Final Answer(回答):库存充足,可以发货。

工程实现:这不是魔法,是LLM 在一个 while 循环里不断地输出 Thought 和 Action,直到它认为任务完成了。

2. 工程基石:Function Calling(工具定义)

要让 Agent 跑起来,你首先得把你的后端 API 包装成模型能看懂的“工具说明书”。

2.1 定义工具(Schema)

这跟写 Swagger/OpenAPI 文档一模一样。你必须告诉模型:

工具名叫啥?(send_email)

干啥用的?(发送邮件给指定收件人)

参数是啥?(to: string, subject: string, body: string)

示例(OpenAI 格式):

{ "type": "function", "function": { "name": "query_inventory", "description": "查询指定商品的实时库存数量", "parameters": { "type": "object", "properties": { "sku_code": { "type": "string", "description": "商品SKU编码,如 A-101" } }, "required": ["sku_code"] } } }

2.2 工具调用的工程坑点

描述(Description)比代码更重要:模型是根据 description 来决定用不用这个工具的。如果你写得含糊,它就不调,或者乱调。

参数校验(Validation):模型传回来的参数可能是错的(比如把日期写成 “tomorrow”)。后端拿到参数后,必须先做校验,不行就把错误信息塞回给模型让它重试(类似第五篇的重试逻辑)。

3. 多租户下的 Agent 架构:权限是个大雷

RAG 的权限在“查”的时候卡住就行,Agent 的权限涉及“改”(发邮件、改库存),风险极大。

3.1 权限透传(User Context Injection)

绝对不能给 Agent 配置一个超级管理员账号。

Agent 调用后端 API 时,必须复用当前操作用户的 Token/Session。

用户 U 发起请求 -> Agent 决定调 get_salary -> Agent 请求后端。

后端检查:Header 里有没有 U 的 Token?U 有没有 get_salary 权限?

无权:后端返回 403。

Agent 收到 403:思考(Thought) -> 回复用户:“对不起,你没权限查工资。”(

这就对了!)

3.2 敏感操作的“人机确认”(Human-in-the-loop)

对于写操作(发邮件、删库、转账),永远不要让 Agent 自动跑完。

架构模式:

Agent 决定调用 transfer_money(to=“Bob”, amount=100)。

系统暂停(Suspend)。

前端弹窗:“Agent 想要转账 100 给 Bob,是否批准?”

用户点“批准”。

系统把“用户已批准”作为 Observation 塞回给 Agent。

Agent 继续执行。

4. 一个可落地的 Agent Loop 代码逻辑(伪代码)

这就是 Agent 的后端核心逻辑,其实就是一个 While 循环。

messages = [{"role": "user", "content": "帮我查下 A001 库存,够的话发个邮件给老板"}] while True: 1. 调大模型,把工具定义(Schema)传进去 response = llm.chat(messages, tools=[query_inventory, send_email]) # 2. 判断模型是否想调工具 if response.tool_calls: tool_call = response.tool_calls[0] func_name = tool_call.function.name args = json.loads(tool_call.function.arguments) # --- 权限校验与执行 --- # 必须带上当前用户的 context if func_name == "query_inventory": result = api.query_inventory(sku=args['sku_code'], user=current_user) elif func_name == "send_email": # 敏感操作,插入人工确认逻辑 if not user_approved(func_name, args): result = "User denied the operation." else: result = api.send_email(**args, user=current_user) # 3. 把执行结果(Observation)追加到消息历史 messages.append(response.message) # 把模型的 Action 加上 messages.append({ # 把结果加上 "role": "tool", "tool_call_id": tool_call.id, "content": str(result) }) # 进入下一轮循环,模型会看到结果,然后决定下一步 else: # 4. 模型不想调工具了,直接回答用户(Final Answer) print("Agent 回复:", response.content) break

5. Agent 的常见死法与救法

5.1 死循环(Looping)

现象:模型不停地查库存,查完了又查,不输出结果。

解法:

设置 max_steps(最大步数,比如 10 步)。超过就强制停止并报错。

System Prompt 里加一句:“如果多次尝试失败,请停止并询问用户。”

5.2 乱调参(Hallucinated Arguments)

现象:调用 search_user(id=“张三”),但接口要求 id 必须是数字。

解法:

把错误信息(Error: id must be integer)塞回给模型(Observation)。

聪明的模型(如 GPT-4)看到报错会自我修正:“对不起,我应该先按名字查 ID。” -> get_user_id(name=“张三”)。

6. 本篇小结(从 Demo 到生产)

Agent = Loop + Tools。核心是 ReAct 循环。

工具定义要像写代码一样严谨。Description 是给模型看的文档。

权限控制必须在后端。Agent 只是一个代理,不能绕过业务鉴权。

敏感操作必须有人工确认(Human-in-the-loop)。

做好容错。把 API 报错喂回给模型,让它自己修。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 1:32:00

基于S7 - 200西门子PLC的汽车自动清洗机控制系统揭秘

S7-200 MCGS 基于S7-200西门子PLC汽车自动清洗机控制系统带解释的梯形图接线图原理图图纸,io分配,组态画面在自动化领域,汽车自动清洗机的控制系统是一个很有趣的应用场景。今天咱们就来唠唠基于S7 - 200西门子PLC以及MCGS的汽车自动清洗机控…

作者头像 李华
网站建设 2026/3/19 12:59:17

三电平变换器中的中点电位平衡控制与载波层叠调制

中点电位平衡控制,载波层叠调制,三电平变换器,三电平逆变器,T型变换器 在电力电子领域,三电平变换器以其独特的优势广泛应用于众多场合,像高压大功率的电机驱动、可再生能源发电并网等。其中,三…

作者头像 李华
网站建设 2026/3/9 15:59:15

LabVIEW 与 MySQL 数据库的奇妙联动:数据管理全攻略

LabVIEW数据库Mysql数据库操作;增加-删除-更新-查询;数据管理程序,完整案例,可移植。 在数据驱动的时代,数据库操作是众多应用不可或缺的一环。LabVIEW 作为一款功能强大的图形化编程环境,与 MySQL 这个广泛使用的开源数据库相结…

作者头像 李华
网站建设 2026/3/14 11:07:37

程序员必看!大模型技术栈全解析,从Token到Agent,小白也能变大神

本文将系统梳理AI大模型领域的14个核心概念,从基础架构到训练优化,再到前沿应用模式,帮助读者建立对这一复杂技术的全面认知框架。通过深入浅出的解释,读者将理解大模型为何能实现"智能涌现",以及如何解决其…

作者头像 李华
网站建设 2026/3/17 11:05:43

【小白必看】大模型RAG技术实战教程,让你的AI开发技能yyds!保姆级教学,从入门到精通,一键搞定检索增强生成!

一、LLMs 已经具备了较强能力了,为什么还需要 RAG(检索增强生成)? 尽管 LLM 已展现出显著的能力,但以下几个挑战依然值得关注: 幻觉问题:LLM 采用基于统计的概率方法逐词生成文本,这一机制内在地导致其可能出现看似…

作者头像 李华