尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
深入理解AI Agent(1.1)---现代Agent=LLM+工具+上下文
本文从 Agent 不是孤立的它在和 Environment文件、数据库、网页、API、用户交互 这句话展开。首先理清两个概念和一个过程概念 1什么是 Agent概念 2什么是环境过程Agent 是怎么跟环境交互的。一、什么是 Agent请记住这个核心公式Agent LLM 上下文 工具当代 Agent 由 3 个组件构成。最熟悉的就是 LLM国内有 DeepSeek、Qianwen、GLM国外有 Claude、ChatGPT、Grok。用拟人化梳理LLM 是大脑Agent 是给大脑装上配套躯体的完整体。躯体骨架很重要 —— 霍金天赋极高但羸弱的身体限制了他的现实活动。而人体怎么跟现实交互这引出 harness 工程可把它拟人成神经系统—— 但注意harness 不是第四个组件它属于工程范畴负责构建上下文、挂载工具。我们先把这个最小骨架搭起来import os from openai import OpenAI client OpenAI( api_keyos.environ[DEEPSEEK_API_KEY],#.env预占位也可以直接替换成key但不要外泄 base_urlhttps://api.deepseek.com ) messages [ {role: system, content: 你是一个会用工具的助手。}, {role: user, content: 请帮我算一下 (125 375) * 8。}, ]messages就是上下文client背后接的是 LLM—— 但此刻还缺 手脚也就是工具。二、什么是环境Environment环境 Agent 外部的、有自身状态、且能通过观察被感知、通过行动被改变的一切外部系统。三个核心性质有状态环境存着东西文件内容、数据库的行、网页 DOM、用户心情。Agent 不能直接读写它只能走两个口 ——Observation观察环境给 Agent 的输入Action行动Agent 通过工具对环境施加的改变。行动会反作用于环境。举个对比算一道题不改变环境但 写文件 会真实地改变文件系统def write_file(path: str, content: str) - str: with open(path, w, encodingutf-8) as f: f.write(content) return f已写入 {path} # 调用后文件系统环境真的变了下次读就是新内容三、三大组件之一工具工具就好比给大脑接一副强健躯体。工具分五类感知、执行、协作、事件触发、用户沟通。先定义工具函数本身def calculate(expression: str) - str: 接收数学表达式返回计算结果 try: return str(eval(expression)) except Exception as e: return f计算出错: {e}光有函数还不够还得写一份 说明书 告诉 LLM 这个工具叫什么、要什么参数tools [ { type: function, function: { name: calculate, description: 使用 eval 计算数学表达式需要计算时直接调用不可心算, parameters: { type: object, properties: { expression: {type: string, description: 如 124/2} }, required: [expression], additionalProperties: False } } } ]工具调用Function Calling流程声明工具 → LLM 决定调哪个、传什么参数 → 执行 → 返回结果 → 模型再决策。 实验 1-1 消融实测我们用messages[]追加式维持完整对话做了两组消融表格消融方式模型表现说明正常full调一次calculate→ 给出 4000基线藏起工具结果content 置空反复重调直到 3 轮上限看不到结果就一直重试不声明工具不传 tools一次不调直接心算根本不知道有这个工具结论工具定义能做什么和工具结果做成了什么是两件事缺一不可。四、三大组件之二LLMLLM 本质是概率机器预测下一个 token。它动手前会先在内部推演 —— 这就是返回 JSON 里的reasoning_contentmsg resp.choices[0].message print(内部思考:, msg.reasoning_content) # The user wants me to calculate... Let me use the calculate tool. print(最终回答:, msg.content)关于 工具能力被内化后 Agent 是否岌岌可危我的看法是环境复杂性客观存在模型越把工具调用内化harness 这层约束、验证、纠错反而越关键。学习机制三层更新位置越深、泛化越强、回滚越难上下文适应临时塞示例即时生效任务结束即失效外部产物更新写进 Prompt/Skill/ 代码跨任务持久、可审计参数更新微调 / RL泛化最强但成本最高。五、三大组件之三上下文上下文是 Agent 在每个决策点能看到的全部信息五种内容系统提示词、工具定义、用户消息、模型回复、工具执行结果。在消息列表里五种消息长这样注意不同 role 的字段messages [ {role: system, content: ...}, # ① 系统提示词静态前缀 {role: user, content: ...}, # ③ 用户消息轨迹 {role: assistant, content: ..., tool_calls: [...]}, # ④ 模型回复轨迹 {role: tool, tool_call_id: call_xxx, content: 4000} # ⑤ 工具结果轨迹 ]两个关键点模型无状态它不记得上一轮每调一次create()都要把完整历史重发 —— 这就是为什么用messages[]一路追加。上下文 静态前缀 轨迹静态前缀system 工具定义固定命中 KV Cache(复用之前的计算成果省成本)轨迹user/assistant/tool随循环追加、越来越长。(可以理解为单会话中的完整的事件过程)六、三大组件怎么协作ReAct 循环诞生ReAct 范式的提出2022年10月普林斯顿大学和 Google 的研究团队Shunyu Yao 等人发表了经典论文《ReAct: Synergizing Reasoning and Acting in Language Models》。1. 核心思想ReAct 强制模型在输出时必须交替生成Thought思考、Action行动和Observation观察。2. 标准执行循环ReAct LoopQuestion: 2024年巴黎奥运会首金得主是哪个国家的他出生的城市人口是多少 Thought 1: 我需要先查出2024巴黎奥运会首金得主是谁。 Action 1: Search(2024 Paris Olympics first gold medalist) Observation 1: [搜索结果] 首金得主是黄雨婷/盛李豪射击10米气步枪混合团体这里指个人首金是盛李豪... Thought 2: 盛李豪获得了首金。接下来我需要查他出生的城市。 Action 2: Search(盛李豪 出生地) Observation 2: [搜索结果] 盛李豪出生于江苏省张家港市。 Thought 3: 出生地是张家港市。现在我需要查张家港市的人口。 Action 3: Search(张家港市 人口) Observation 3: [搜索结果] 截至2023年末张家港市常住人口为143.2万人。 Thought 4: 我已经找到了所有需要的信息。首金得主是中国选手他出生的城市人口是143.2万。 Action 4: Finish(中国143.2万人)3. 为什么 ReAct 有效Reasoning 引导 Action思考过程帮助模型制定计划决定调用什么工具、传什么参数避免盲目调用。Action 纠正 Reasoning工具返回的真实结果Observation作为外部锚点Grounding打破了模型的幻觉让下一步的思考基于事实。可以简单理解ReActReasoning Acting就是把 LLM、工具、上下文串起来的核心机制思考 → 行动 → 观察 → 再思考循环往复核心循环的骨架注意每次如何追加、如何回灌while turn max_turns: resp client.chat.completions.create( modeldeepseek-v4-flash, messagesmessages, toolstools ) msg resp.choices[0].message messages.append(msg.model_dump()) if msg.tool_calls: for tc in msg.tool_calls: args json.loads(tc.function.arguments) result calculate(args[expression]) messages.append({ role: tool, tool_call_id: tc.id, content: result }) else: print(最终回答:, msg.content) break死循环怎么办两道保险模型不再调工具finish_reasonstop就给最终答案到最大轮次上限如 3 轮还没收敛就强制停并报警。轨迹按会话隔离 —— 每个用户、每个任务有独立的messages[]互不污染。七、完整实验代码下面是完整的最小 ReAct Agent含两个消融开关import os import json from openai import OpenAI from dotenv import load_dotenv, find_dotenv load_dotenv(find_dotenv()) def calculate(expression: str) - str: try: return str(eval(expression)) except Exception as e: return f计算出错: {e} tools [ { type: function, function: { name: calculate, description: 使用 eval 计算数学表达式需要计算时直接调用不可心算, parameters: { type: object, properties: { expression: {type: string, description: 如 124/2} }, required: [expression], additionalProperties: False } } } ] def main(): client OpenAI( api_keyos.environ[DEEPSEEK_API_KEY], base_urlhttps://api.deepseek.com ) messages [ {role: system, content: 你是一个会用工具的助手。}, {role: user, content: 请帮我算一下 (125 375) * 8 等于多少。}, ] HIDE_TOOL_RESULT False # True藏起工具结果消融1 HIDE_TOOLS False # True不声明工具消融2 max_turns 3 turn 0 while turn max_turns: turn 1 kwargs {model: deepseek-v4-flash, messages: messages} if not HIDE_TOOLS: kwargs[tools] tools resp client.chat.completions.create(**kwargs) msg resp.choices[0].message messages.append(msg.model_dump()) if msg.tool_calls: for tc in msg.tool_calls: args json.loads(tc.function.arguments) result calculate(args[expression]) sent if HIDE_TOOL_RESULT else result messages.append({ role: tool, tool_call_id: tc.id, content: sent }) else: print(最终回答:, msg.content) break else: print(f⚠️ 跑到 {max_turns} 轮上限模型没收敛) if __name__ __main__: main()小结Agent 大脑LLM 眼睛上下文 手脚工具靠 ReAct 循环把 思考→行动→观察 转起来模型每轮无状态地把完整历史重读一遍。本文参考书籍:《深入理解 AI Agent设计原理与工程实践》李博杰 著
RELATED

相关推荐

CES 2026深度观察:AI融合如何重构智能硬件与产业边界

CES 2026深度观察:AI融合如何重构智能硬件与产业边界

1. CES 2026的核心风向:智能单品退场,智联生态登场1.1 展台主角不再是“设备”,而是“场景”2026年的CES,给我的第一印象不是哪个展台更大、哪块屏幕更炫,而是几乎所有产品都在围绕同一个关键词做文章:AI深…

📅 2026/10/18 6:17:18
大模型私有化部署生产环境全链路指南:从显存估算到推理优化与运维避坑

大模型私有化部署生产环境全链路指南:从显存估算到推理优化与运维避坑

大模型私有化部署到生产环境,单看这句话,很多人第一反应是:把开源权重下载下来,用一个推理框架起个服务,不就完了吗?我在实际推动这类项目时,体验完全不是这样。权重下载只是最简单的第一步&…

📅 2026/10/18 6:17:18
在职前端Leader的AI Agent落地实践:71天从工具到系统

在职前端Leader的AI Agent落地实践:71天从工具到系统

1. 项目概述:一个前端技术管理者的真实AI Agent学习切口“在职前端Leader学习/转行 AI Agent -DAY71”——这个标题不是打卡式的情绪宣泄,也不是轻飘飘的跨界宣言,而是一份高度浓缩的、来自一线技术管理者的实践日志切片。它背后站着的&#…

📅 2026/10/18 6:17:18
MORE NEWS

更多资讯

📰

从容器到Kubernetes:一张读懂云原生技术全景的地图

简介:一份梳理云原生技术演进脉络的电子课件,适合刚接触容器、微服务与Kubernetes的开发者、运维人员及架构师快速建立整体认知。内容从CNCF官方定义切入,系统介绍容器、服务网格、微服务、不可变基础设施和声明式API等核心技术,并…

📰

OpenClaw实战:从聊天机器人到AI Agent的关键跃迁

先问大家一个问题:你上次让聊天机器人"帮我把这份PDF里的数据整理成Excel",它是不是只回了一句"我可以帮你,请提供文件",然后就没了下文?我自己的体验是,过去绝大多数对话式AI都停在&q…

📰

Python爬虫实战:定时抓取技术博客排行榜,还原博主影响力演变轨迹

去年整理书签的时候,我翻到一个自己收藏了很久的技术博客榜单页面,顺手对比了一下三年前印象里的“头部博主”名单,发现变化比想象中大得多:有人从榜尾一路冲进前十,也有人在榜单上彻底消失。排名这个东西,…

📰

Vuex与antv/g6协同:在线流程图编辑器状态同步实践

简介:基于Vue与antv/g6实现的流程图在线绘制演示Demo,面向需要集成可视化流程编辑功能的前端开发者。资源抽离了流程图创建、节点链接、节点删除、菜单操作、重新渲染与本地存储等核心交互,重点演示框架层面的实现思路,供有类似需…

📰

初中道德与法治课件教案全集(7-9年级上下册):含PPT、PDF、教案与知识点,约1.93GB

资源概述 这套初中道德与法治课件教案资源覆盖了七年级、八年级、九年级的上下册全部内容,整体文件规模约1.93GB,是较为完整的初中道法教学配套材料合集。资源按照年级和学期两级目录进行组织,进入每个年级目录后,再按单元和课时…

📰

Hermes Agent入门:用配置化任务编排替代cron脚本

前阵子我负责的一个小项目里,服务器上挂着一堆定时任务、消息推送脚本和文件同步逻辑,每天手工维护特别折腾。后来朋友推荐我用 Hermes Agent 来接管这些活,我花了一个晚上装好、配好,然后在生产环境跑了两周,确实省了…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬