ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

《AI Agent原理与实战》2026版 第2课 LLM 基础回顾:Agent 视角下的语言模型

《AI Agent原理与实战》2026版 第2课 LLM 基础回顾:Agent 视角下的语言模型 本文收录于专栏agent智能体系列—— 专栏系统覆盖 AI Agent 的记忆、工具、插件与实战点击订阅可跟踪后续更新。本课定位第 1 课给了判定框架但要动手还得先补一块地基Agent 眼中的 LLM 到底长什么样。本课从 Agent 视角重讲四个底层机制——消息结构、chat template、function calling 协议、上下文窗口与 token 账单。Agent 的每一层机制最终都落在对 LLM API 的理解上。本课不讲 transformer 结构只讲写 Agent 时必须内化的四件事。它们是后面每一课代码的物理定律第 6 课的最小 Agent 会逐条用到。阶段 1概念与基础 来源【补】吸收微软课程微· 00 环境准备与微·04 Tool Use 设计模式的思想关键字大模型基础、消息结构、Chat Template、Function Calling、上下文窗口、token计费、OpenAI兼容API、Agent底层机制本节目录2.1 消息结构Agent 的一切状态都在 messages 数组里2.2 Chat Template 与 special tokens同一模型千种格式2.3 Function Calling / Tool Call模型输出的是意图不是执行2.4 上下文窗口与 token 计费Agent 的资源约束概念讲解2.1 消息结构Agent 的一切状态都在 messages 数组里OpenAI 兼容 API如今是事实行业标准国内外模型几乎全部兼容的最小请求是{model:...,messages:[{role:system,content:你是一个助手},{role:user,content:你好},{role:assistant,content:你好},{role:user,content:介绍一下你自己},]}四个角色各司其职角色谁写的Agent 中的用途system开发者人格、纪律、工具使用规则——模型宪法user最终用户任务目标assistant模型历史模型过去的回答与工具调用决策tool运行时工具执行结果回传对应tool_call_id关键认知API 是无状态的。你以为的模型记得上下文实际是你客户端把完整历史messages数组每次重发一遍。这个事实推出 Agent 工程的三条铁律上下文不是免费的——数组越长费用和延迟越高见 2.4 节。历史是可编辑的——压缩、截断、重写历史都是合法操作这是第 13 课上下文工程的全部基础。谁控制 messages 数组谁控制 Agent 的记忆——框架做的事无出其右。2.2 Chat Template 与 special tokens同一模型千种格式API 背后服务端会把 messages 数组渲染成模型实际吃到的单个 token 序列渲染规则就是chat template对话模板。例如某模型的模板可能是|system|你是一个助手|user|你好|assistant|你好...其中|system|、|user|这类就是special tokens特殊标记——加入词表、被分词器强制切分、对模型有特殊语义的 token。三条工程含义不要手拼 prompt 绕过 template。直接把System: xxx写进 user 消息是常见错误——模型的对齐训练是在 template 格式上做的格式不对指令遵循显著退化。special token 注入是攻击面。用户输入里若含有|im_end|之类标记可能截断/伪造对话结构。生产系统要对输入做转义或过滤第 29 课展开。开源模型换壳要换 template。本地部署 Qwen/Llama/GLM 系模型时template 用错是模型突然变笨的头号原因vLLM/Ollama 等推理框架已内置各家模板走/v1/chat/completions端点即可自动套用。2.3 Function Calling / Tool Call模型输出的是意图不是执行微软第 4 课把 Tool Use 立为独立设计模式其定义值得原文引用“Tools are code that can be executed by an agent… tools are designed to be executed by agents in response tomodel-generated function calls”工具是 Agent 执行的代码其触发由模型生成的函数调用驱动——注意 “model-generated”决策在模型、执行在代码这正是本节要拆开的机制。2023 年 6 月 OpenAI 引入 function calling现演化为tools参数。当前 API 层的工作流OpenAI 兼容口径五步① 定义工具 JSON Schema ──► ② 连同 messages 发给模型 ▲ │ │ ▼ ⑤ 模型给出最终回答 ◄──── ④ 结果以 role:tool 消息回传 ▲ ▲ │ │ └── ③ 模型返回 tool_calls你要自己执行关键点逐条① 工具定义是 JSON Schema。namedescriptionparameters其中 description 是写给模型看的——它就是工具的prompt第 8 课 ACI 的核心议题。② 模型返回的是结构化意图{role:assistant,tool_calls:[{id:call_abc123,type:function,function:{name:calculator,arguments:{\expr\: \12*345\}}}]}注意arguments是JSON 字符串不是对象解析时要json.loads。③ 模型不执行任何东西。它只是说我想调 calculator参数是这。执行永远发生在你的代码里——这就是为什么同一个协议能对接数据库、HTTP API、本地脚本执行器是你写的。④ 结果回传要带tool_call_id。模型靠 id 把结果和请求配对。一次返回多个tool_calls并行调用时逐个配对回传。⑤ 停止信号。当模型不再返回tool_calls而返回纯文本循环结束——这就是 Agent loop 的终止条件第 6 课。最后一条容易被忽略function calling 不是魔法是受控输出格式训练。模型被训练成该调工具时输出这种 JSON 结构但何时该调仍由概率决定——所以参数可能错、可能编造不存在的工具参数值、可能在不需要时硬调。工程上永远要校验schema 验证 参数合法性检查。2.4 上下文窗口与 token 计费Agent 的资源约束Token 是什么文本的计量单位。英文约 1 token ≈ 0.75 个单词中文常见 1 汉字 ≈ 1~2 token不同分词器差异大。模型输入输出都按 token 计费。上下文窗口 单次请求 messages 的最大 token 数。2026 年主流旗舰模型窗口普遍在 128K~1M token 量级但注意三个坑窗口 ≠ 记忆。长上下文中间部分的信息利用率显著低于两端“lost in the middle” 现象关键信息要放头尾。计费按输入输出全算。Agent 每轮循环都重发全部历史——一个 20 轮工具循环累计输入 token 是 O(N²) 增长的第 1 轮发 1k第 20 轮发 20k总计远超单轮 20k。输出上限 ≠ 窗口余量。max_tokens受剩余窗口约束长历史会挤压单步可输出长度工具结果如整页网页文本是隐性大户。粗算一笔账示意数字假设每轮工具往返增加 2k token20 轮循环的累计输入 ≈ 2k×(12…20) 420k token——是单轮对话的 20 倍以上。这是Agent 很贵的数学根源也是第 13 课压缩/截断与第 26 课成本控制存在的原因。案例实战用裸 API 完成一次最小工具调用目标不用任何框架用标准库urllib走完 2.3 节的五步流程看清模型出意图、代码去执行、结果再回传的完整环。运行环境两平台任选其一环境组成获取方式A. 云端 APIWindows/Linux 通用推荐入门Python 3.8任意 OpenAI 兼容 API key装 Python 后无需pip install任何包——本例只用标准库改API_URL/MODEL/API_KEY三行B. 本地模型离线可跑Ollama 0.34 glm-4.7-flash官方 tag约 19GB或任意支持 tools 的对话模型Ollama 官网下载安装包Windows/macOS/Linux 均有ollama pull glm-4.7-flash拉模型国外主流模型速览先全球视野国内落地见下表详细来头/价格/合规路线见第 16 课 16.6 节2026-10-01 检索口径厂商当前旗舰API 模型 IDOpenAI 兼容国内可及性OpenAIgpt-6-astra/gpt-6-sol/gpt-6-luna✅ 原生行业模板需代理境外支付企业走 Azure OpenAIAnthropicClaude Opus 5.5❌ 自有 Messages API需代理境外支付MCP 协议发起方Googlegemini-3.1-pro1M 上下文❌ 自有 Gemini API企业走 Vertex AIxAI马斯克Grok 4.5 / 4.6✅api.x.ai/v1需代理Mistral法国Mistral Large 3675B MoE部分✅开放权重 Apache 2.0Ollama 自托管无门槛MetaLlama 开放系新一代命名调整中—✅开放权重Ollama/HF 国内直用国内读者记两条① 前四家 API 有网络支付双重门槛个人直接开通隐性成本常高于 token 费② 后两家走开放权重路线ollama pull即用、零账号——这是国内体验海外模型的主要路径。国内模型接入速查面向国内读者以下端点/模型名/鉴权方式均于 2026-10-01 逐一实测或验证提供商端点API_URL模型名MODEL鉴权方式本课验证DeepSeekhttps://api.deepseek.com/v1/chat/completionsdeepseek-chatBearer✅ 实测正确返回 tool_calls智谱 GLMhttps://open.bigmodel.cn/api/paas/v4/chat/completionsglm-4.7-flashBearer✅ 实测正确返回 tool_callsMiniMaxhttps://api.minimaxi.com/v1/text/chatcompletion_v2MiniMax-M2.5Bearer✅ 实测正确返回 tool_calls小米 MiMo按量付费sk-keyhttps://api.xiaomimimo.com/v1/chat/completionsToken Plantp-keyhttps://token-plan-cn.xiaomimimo.com/v1/chat/completionskey 前缀决定端点打错一律 401mimo-v2.5-proV2 系列 2026-06-30 已下线Bearer主端点亦接受api-key头✅ 实测Token Plan 端点正确返回 tool_calls2026-10-01详见第 7 课Kimihttps://api.kimi.com/coding/v1/chat/completionskimi-k2.7亦验证kimi-latestBearer✅ 实测正确返回 tool_calls2026-10-01sk-kimi- 前缀 key裸/v1端点 404必须带/coding段Qwen阿里https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completionsqwen-plus/qwen-max模型 ID 以百炼控制台当日为准Bearer◐ 端点规格验证无 key 探测返回 401 invalid_api_key说明端点与鉴权口径正确tool_calls 行为按官方文档口径本机无 key 未跑通——有 DASHSCOPE_API_KEY 的读者可按第 7 课code/07b_cn_models.py探针一行复测两个真实的坑OpenAI 兼容并不完全统一① MiniMax 官方文档主推的端点是/v1/text/chatcompletion_v2实测标准路径/v1/chat/completions也能用2026-10-01 双路径均返回 200——但文档主推路径才是承诺支持的接口换模型前以官方文档当日为准② 小米 MiMo 按 key 前缀分两套端点tp-打主端点一律 401且 V2 系列模型名已下线——第 7 课有完整排坑记录。上表就是换三行跑通的全部成本。本课实测环境为 BLinux 消费级 GPU输出见下。A 路线在 Windows 上零差异纯 HTTP 调用无平台相关依赖B 路线在 Windows 上装好 Ollama 后命令完全一致第 6 课附 Windows 具体步骤。# -*- coding: utf-8 -*-# 裸 API 最小工具调用仅标准库无框架# 依赖Python 3.8实测环境Ollama 0.34 glm-4.7-flash64K 变体 tag2026-10-01importjsonimporturllib.request API_URLhttp://localhost:11434/v1/chat/completionsAPI_KEYYOUR_API_KEYMODELglm-4.7-flash:latest# 官方 tag实测用同权重 64K 变体 -100kdefchat(messages,toolsNone):body{model:MODEL,messages:messages,temperature:0.2}iftools:body[tools]tools requrllib.request.Request(API_URL,datajson.dumps(body).encode(),headers{Content-Type:application/json,Authorization:fBearer{API_KEY}})withurllib.request.urlopen(req,timeout120)asr:returnjson.load(r)[choices][0][message]tools[{type:function,function:{name:calculator,description:计算四则运算表达式如 12*345,parameters:{type:object,properties:{expr:{type:string}},required:[expr]}}}]# ①② 发起带工具的请求messages[{role:user,content:用计算器算 12*345}]msgchat(messages,tools)# ③ 模型返回意图注意 arguments 是 JSON 字符串print(tool_calls:,json.dumps(msg.get(tool_calls),ensure_asciiFalse))tcmsg[tool_calls][0]argsjson.loads(tc[function][arguments])# {expr: 12*345}# ★ 执行发生在你的代码里——模型只是想调用exprargs[expr]assertall(c.isdigit()orcin-*/(). forcinexpr),非法字符resulteval(expr,{__builtins__:{}},{})# ④ 结果以 role:tool 回传messages.append(msg)messages.append({role:tool,tool_call_id:tc[id],content:str(result)})# ⑤ 模型给出最终回答finalchat(messages,tools)print(最终回答:,final.get(content))【已实测】2026-10-01Ollama 0.34 glm-4.7-flash-100k〔64K 变体〕Linux/消费级 GPU实际输出tool_calls: [{id: call_crevitxs, index: 0, type: function, function: {name: calculator, arguments: {\expr\: \12*345\}}}] 本地执行结果: 413 最终回答: 计算结果是 **413**。 计算过程 - 12 × 34 408 - 408 5 413观察三个细节模型正确地把意图装进了 JSONfinish_reason: tool_callsarguments是字符串需要二次解析执行后一轮模型就停止调用、转入文本回答——没有循环只有一次往返。把这次往返套上 while 循环和终止条件就是第 6 课的 Agent。预期输出同上。若你换用其他 OpenAI 兼容服务注意个别实现要求tool_choice显式传auto云端 API 下首个 tool_call 的 id 格式会不同如call_abc123不影响逻辑。小结messages 数组是 Agent 的全部状态无状态 API 客户端重发历史 记忆的真相。chat template 决定模型实际吃什么绕过 template 手拼 prompt、special token 注入都是工程雷区。function calling 五步环定义 schema → 发请求 → 收 tool_calls 意图 → 本地执行 → role:“tool” 回传执行永远在模型之外。arguments 是 JSON 字符串配对靠 tool_call_id终止信号是不再返回 tool_calls。Agent 成本按 O(轮数²) 累计输入 token 增长——上下文管理不是优化项是生存项。交叉引用工具定义怎么写才好用参见第 8 课《工具设计与 ACI 工程规范》把五步环升级为完整循环参见第 6 课《从零写一个最小 Agent Loop》。扩展阅读 网络提示openai.com 系需代理协议层知识已进正文实测均可用国产端点替代huggingface.co 走镜像export HF_ENDPOINThttps://hf-mirror.compip 安装建议加清华镜像-i https://pypi.tuna.tsinghua.edu.cn/simple。详见总纲附录《国内网络访问与国产适配指南》。OpenAI Function Calling 官方指南五步流程与各语言示例https://developers.openai.com/api/docs/guides/function-calling 2026-10-01 检索部分网络环境可能 403可检索OpenAI function calling guide替代入口HuggingFace Chat Templates 文档special tokens 与模板机制https://huggingface.co/docs/transformers/chat_templating 中国大陆网络建议镜像入口 hf-mirror.com 同路径访问Liu et al.《Lost in the Middle: How Language Models Use Long Contexts》arXiv:2307.03172我的专栏蛋白 / 抗体 / 多肽 / 核酸分子模拟 / 动力学 / 对接药物 / 设计 / 案例AI / Agent / 大模型开源蛋白结构预测分子模拟基础小分子药物设计案例AI Agent系列开源蛋白生成方法实践分子动力学模拟-Amber蛋白药物设计案例化学大模型开源多肽设计模型分子动力学模拟-Gromacs多肽药物设计案例《AI Agent原理与实战》开源多肽性质预测分子动力学模拟-OpenMM开源小分子生成设计CADD中的机器学习模型DNA/RNA药物设计結合自由能开源药代动力学软件高效计算配置siRNA药物设计模型UCSF DOCK系列我胡师兄说药ASO药物设计模型rDock系列 LeDock系列 gnina系列
返回列表