资讯动态

LLM到Agent的完整学习指南:从感知理解到自主行动(建议收藏)

发布时间:2026/10/9 13:44:05 来源:尧图企业网站定制
1. 从 LLM 到 Agent为什么“会说话”不等于“能干活”很多人第一次接触大模型是从对话框开始的输入问题模型给出回答。用久了会发现一个尴尬的现实——它知道很多但基本只能“说”不能“做”。你让它查一下今天的库存、发一封邮件、跑一段脚本它只能告诉你“你可以这样做”然后就没有然后了。这就是 LLM 和 Agent 的分水岭。LLM 是感知理解层负责把自然语言变成意图、把上下文变成判断Agent 是自主行动层负责把意图拆成步骤、调用工具、拿到结果、再决定下一步。前者像一位知识渊博的顾问后者像一位能替你跑腿的执行助理。我试过把这两层混在一起学结果就是概念全懂、动手全废。后来把学习路径拆成“感知理解 → 规划决策 → 工具调用 → 记忆与反思”四段每一段都配一个可运行的小验证进度才真正跑起来。这篇就按这个顺序把每一层的核心概念、典型任务、自测动作讲清楚并且用统一的 API 通道把感知和行动两个环节串起来验证。适合谁看已经会调用大模型接口、想系统入门 Agent 的开发者做过 RAG 但没做过工具调用的同学以及想搞清楚 Function Calling、MCP、ReAct 这些词到底在解决什么问题的技术人。全文以可跟做的步骤为主配置和命令都能直接复制。2. 感知理解层LLM 接口调用与上下文组织怎么落地感知理解层要解决的核心问题是把用户的一句话变成模型能稳定处理的输入并拿到结构化的输出。这一步看起来简单实际踩坑最多因为大部分 Agent 的失败不是“模型不够聪明”而是输入组织得不对。2.1 先理解 LLM 的三个关键参数在动手之前先把三个概念对齐后面配置才不会懵。上下文长度Context Window决定单次能塞进多少信息单位是 Token。你可以把它理解成模型的“工作台面积”工作台太小RAG 检索回来的资料就放不下Agent 的记忆也存不住。推理速度TPS和首字延迟TTFT决定交互体验。Agent 往往要连续调用多次模型单次慢一点多步叠加后用户就会觉得“卡住了”。幻觉率决定输出可信度。在感知层幻觉表现为“编造了一个不存在的函数名”或“引用了不存在的文档”这会直接导致行动层调用失败。2.2 用统一通道接入模型要让感知层和行动层用同一套凭证最省事的做法是把 Base URL 和 Key 统一管理。TaoToken 提供的就是这样一个统一入口官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。先拿到 Key进入控制台创建https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite创建 API Key 的页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite拿到 Key 之后先别急着写 Agent先用最小请求验证感知层通不通。下面这段 Python 用的是 OpenAI 兼容格式把 base_url 指向 TaoToken 即可from openai import OpenAI client OpenAI( api_keysk-你的TaoTokenKey, base_urlhttps://taotoken.net/api ) resp client.chat.completions.create( modelclaude-sonnet-4-5, messages[ {role: system, content: 你是一个严谨的助手只输出JSON。}, {role: user, content: 把这句话拆成意图和实体帮我查一下北京明天的天气} ], temperature0.2 ) print(resp.choices[0].message.content)这段代码验证的是感知层最基础的能力模型能不能按你要求的格式输出。如果返回的是一段自然语言而不是 JSON说明 system prompt 还不够硬或者 temperature 太高。2.3 上下文组织的三个实用技巧第一把 system prompt 当成“岗位说明书”来写明确角色、输出格式、禁止事项。第二把历史对话做裁剪只保留最近 N 轮加一条摘要避免上下文被无关内容占满。第三对需要结构化输出的场景直接在 prompt 里给出 JSON schema 示例比事后解析自然语言靠谱得多。自测动作让模型连续输出 10 次同样的结构化请求统计格式正确率。低于 9 次通过就回去改 prompt别急着进下一层。3. 规划决策层ReAct 与 Function Calling 的可复制配置感知层通了之后下一步是让模型学会“先想再做”。这一层的核心是 ReAct 范式和 Function Calling前者是思考框架后者是落地手段。3.1 ReAct 到底在循环什么ReAct 的全称是 Reasoning Acting它的循环是Thought想→ Action做→ Observation看结果→ 再 Thought。你可以把它理解成一个人做菜先想“冰箱里有什么”再打开冰箱看看到结果后再决定“先炒鸡蛋还是先切菜”。在代码里这个循环通常由你手写的 while 循环实现模型只负责在每一步输出“下一步该调用哪个工具、传什么参数”。3.2 Function Calling 的配置片段下面是一个可直接复制的工具定义放在请求里让模型知道有哪些工具可用{ tools: [ { type: function, function: { name: get_weather, description: 查询指定城市指定日期的天气, parameters: { type: object, properties: { city: {type: string, description: 城市名如北京}, date: {type: string, description: 日期格式 YYYY-MM-DD} }, required: [city, date] } } } ], tool_choice: auto }对应的调用代码resp client.chat.completions.create( modelclaude-sonnet-4-5, messagesmessages, toolstools, tool_choiceauto ) msg resp.choices[0].message if msg.tool_calls: for call in msg.tool_calls: print(call.function.name, call.function.arguments)如果模型返回了 tool_calls说明它已经决定要行动了。你接下来要做的就是真正执行这个函数把结果作为 roletool 的消息塞回 messages再请求一次。3.3 用 settings 文件固化配置如果你用的是 Claude Code 这类工具配置通常写在 settings.json 里。三件套必须齐全Base URL、Key、Model ID。{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoTokenKey, ANTHROPIC_MODEL: claude-sonnet-4-5 } }注意 Base URL 不要带 UTM 参数保持干净。Key 和 Model ID 缺一不可只填 Key 不填 Model工具会回退到默认模型容易出现“明明配了却报模型不存在”的怪现象。自测动作定义一个假工具让模型连续三轮都正确调用它并且参数格式正确。三轮都过说明规划层基本可用。4. 行动与记忆层把工具调用跑通并验证结果行动层是把规划变成真实副作用的地方记忆层是让 Agent 不在多轮对话里“失忆”。这两层合在一起才构成一个能持续工作的闭环。4.1 工具执行的完整链路一个完整的工具调用链路包含四步模型输出 tool_calls → 你的代码解析参数 → 执行真实函数 → 把结果回传。最容易出错的是第三步和第四步之间的衔接参数类型不对、结果格式不对都会让模型在下一轮“看不懂”。import json def execute_tool(name, args): if name get_weather: data json.loads(args) # 这里替换成真实查询逻辑 return json.dumps({city: data[city], temp: 18C, desc: 晴}) return json.dumps({error: unknown tool}) tool_result execute_tool(msg.tool_calls[0].function.name, msg.tool_calls[0].function.arguments) messages.append(msg) messages.append({ role: tool, tool_call_id: msg.tool_calls[0].id, content: tool_result }) final client.chat.completions.create( modelclaude-sonnet-4-5, messagesmessages ) print(final.choices[0].message.content)4.2 记忆的两种存法短期记忆就是 messages 数组本身靠裁剪和摘要控制长度。长期记忆需要外部存储常见做法是把关键事实抽出来存进向量库下一轮对话时按相关度检索回来作为 system 或 user 消息注入。这里有个坑不要把整段历史都塞进向量库检索回来的内容会互相干扰。只存“事实型”信息比如用户偏好、已确认的结论不存寒暄。4.3 验证请求是否成功跑完上面整条链路后你应该能看到模型基于工具返回的天气数据生成一句自然语言回答。如果模型说“我不知道天气”说明 tool 结果没正确回传如果模型重复调用同一个工具说明 Observation 没让它满意检查返回内容是否包含它需要的信息。自测动作让 Agent 完成一个需要两步工具调用的任务比如“先查天气再根据天气建议穿什么”。两步都跑通行动层就算过关。5. 常见报错排查401、local proxy failed 与 reading choices这一节按真实报错来对照遇到问题直接查。401 Unauthorized九成是 Key 不对或没带上。检查 api_key 是否有多余空格检查 base_url 是否写成了带路径的完整地址。如果用的是环境变量确认变量名和代码里读的一致。local proxy failed这类报错通常出现在本地工具链里本质是请求没发出去。先确认 base_url 是 https://taotoken.net/api 再确认本机网络能正常访问该域名。不要配置任何额外的网络层保持直连即可。reading choices 相关报错一般是响应结构和你解析的字段不匹配。打印完整 resp 看结构确认 choices[0].message 存在。如果模型返回的是 tool_callsmessage.content 可能是 None这时候去读 content 就会报错。OAuth 相关报错出现在 Claude Code 这类工具的登录环节。如果你用的是 API Key 模式就不要走 OAuth 流程检查 settings.json 里是否同时存在两套凭证冲突时以显式配置的 Key 为准。模型不存在检查 Model ID 拼写确认该模型在当前通道可用。Base URL、Key、Model ID 三件套任何一个写错都会报这个。自测动作故意把 Key 改错一位跑一次请求确认你看到的报错和上面描述一致。能复现才说明你真的理解了报错来源。6. 学习路径清单与阶段自测把四层串成一条线把前面四层整理成一条可执行的学习路线每一阶段都有明确的产出物和自测标准。第一阶段感知理解。产出物是一个能稳定输出 JSON 的接口调用脚本。自测标准是连续 10 次结构化输出格式正确率不低于 90%。第二阶段规划决策。产出物是一个带 Function Calling 的最小循环。自测标准是模型能连续三轮正确选择工具并传参。第三阶段行动与记忆。产出物是一个能完成两步工具调用的 Agent。自测标准是任务闭环且第二轮对话能记住第一轮的关键结论。第四阶段工程化。产出物是统一的配置管理Base URL、Key、Model ID 集中维护。自测标准是换一个模型只改一处配置其余代码不动。如果你想把这条线跑得更顺可以用 TaoToken 的统一通道把感知和行动串起来。模型对话入口在这里适合先验证模型输出质量https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite需要长期跑编码类 Agent 的可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite接入文档里有各语言的最小示例配置卡住时对照着看https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite最后给一个实用建议每学完一层不要急着往下走先把这一层的自测动作跑三遍。Agent 的坑大多不是概念不懂而是上一层的输入没组织好导致下一层一直在处理脏数据。把感知层的输出格式固定住后面的规划和行动会顺很多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑