第 1.3.1 节:理解模型、Token 和上下文如何影响一次调用
模型、Token 和上下文只有拆成可执行步骤,才容易复核、排错和交接。完成本节后,你应该能够按顺序说明模型、Token 和上下文的触发、处理、复核、记录和兜底步骤。
本章要解决什么问题
AI Agent(人工智能体)项目的底层依赖是模型调用。很多项目早期看起来失败,是因为没有先理解模型调用的几个基本约束:
- 模型 不是数据库。
- Token(文本计量单位) 会影响成本、上下文容量和延迟。
- 上下文窗口 不是无限的。
- API(应用程序接口) 调用会失败、超时、限流或返回不符合预期的内容。
- 不同模型供应商的接口、能力、价格和稳定性不同。
本章不深入某个 SDK(软件开发工具包)的每个参数,而是建立工程底座:你需要知道模型调用如何进入系统设计,如何做上下文预算,如何保护 API Key(接口密钥),如何设计 Mock(模拟)模式,以及如何避免业务代码被某一家模型供应商绑死。
学习目标
读完本章后,你应该能够:
- 解释模型、Token(文本计量单位)、上下文窗口之间的关系。
- 判断哪些资料应该进入 Prompt(提示词),哪些应该进入 RAG(检索增强生成)。
- 说明 API Key(接口密钥)为什么不能写进代码和书稿。
- 设计 Mock(模拟)模式和 Real Provider(真实模型供应商)模式。
- 理解 Responses API(响应接口)、工具调用和 Agents SDK(智能体软件开发工具包)的定位。
- 给项目设计一个最小模型适配层。
为什么要学这一章
很多读者第一次做 Agent 项目,会把注意力放在“模型回答得聪不聪明”。但真实项目里,模型调用更像一个外部服务:它会花钱、会变慢、会超时、会限流,也可能返回不符合系统契约的结果。
如果你不了解 Token(文本计量单位)和上下文窗口,就容易把企业资料、历史对话、工具结果全塞进 Prompt,最后成本高、延迟长、回答还不稳定。如果你不了解 API Key(接口密钥)管理,就可能把密钥写进文档、截图、日志或配置示例里。如果你把业务代码绑死在一家模型供应商上,供应商涨价、限流或接口变化时,整个客服工作台都会受影响。
所以本章不是教一次模型调用,而是教读者建立模型调用底座:上下文可控、密钥安全、供应商可切换、输出可校验、失败可兜底、成本可复盘。
业务场景
一个客户要求:
我们有几百份产品资料,希望用户问什么都能直接回答。你把资料全部发给模型不就行了吗?
这个需求暴露了典型误区。模型一次调用能接收的上下文有限,即使上下文很大,也不代表应该把所有资料塞进去。原因包括:
- 成本会变高。
- 延迟会变长。
- 资料越多,模型越难抓住真正相关的内容。
- 过期资料可能污染答案。
- 不同用户可能没有权限查看同一批资料。
正确做法通常是:先建立资料处理和检索流程,再把与问题最相关的片段放入上下文,让模型基于这些片段生成回答。
这就是后面 RAG 章节要解决的问题。本章先把底层概念讲清楚。
真实岗位会怎么问
模型基础在面试中通常不会以“解释定义”的方式出现,而是和成本、稳定性、安全、供应商切换放在一起问。
| 真实问法 | 背后考点 | 回答方向 |
|---|---|---|
| 公司资料很多,为什么不全部放进上下文? | Token(文本计量单位)、上下文预算、RAG | 讲成本、延迟、相关性、资料更新和权限,说明只放当前任务相关内容。 |
| 模型调用超时,客服用户怎么办? | 外部服务治理 | 讲超时、有限重试、降级、转人工和日志记录。 |
| API Key(接口密钥)怎么管理? | 安全和交付规范 | 讲环境变量、安全配置、日志脱敏、密钥轮换,不进入书稿和仓库。 |
| 为什么要做模型适配层? | 供应商锁定和维护 | 讲业务层依赖统一契约,供应商、模型名、重试、日志放在适配层。 |
| 大上下文模型出现后,RAG 还有必要吗? | 架构判断 | 仍然需要资料选择、权限、更新、引用和质量评估。 |
贯穿项目:客服工作台里的模型底座
在“企业客服知识库与工单 Agent 工作台”里,模型不是一个孤立按钮,而是贯穿多个环节:
| 环节 | 模型做什么 | 不能让模型做什么 |
|---|---|---|
| 意图识别 | 判断用户是咨询政策、查订单、投诉、退款还是闲聊 | 不能凭感觉确认真实订单状态。 |
| 问题改写 | 把用户口语问题改写成适合检索的查询 | 不能把用户没说的事实补进去。 |
| 答案生成 | 基于检索片段和工具结果组织回复 | 不能脱离来源编造政策。 |
| 工具选择 | 判断是否需要查订单、建工单或转人工 | 不能绕过系统权限直接执行动作。 |
| 总结复盘 | 总结一次会话的问题、处理动作和风险 | 不能隐藏失败和人工介入原因。 |
所以本章的重点不是“怎么调用一次模型”,而是设计一个能被客服系统长期使用的模型调用底座。
新手为什么会卡住
| 常见误解 | 项目后果 | 正确理解 |
|---|---|---|
| 上下文窗口越大越好 | 成本高、延迟高、答案反而混乱 | 上下文要做预算,只放和当前任务相关的内容。 |
| 模型知道公开资料,所以不用知识库 | 回答不符合企业最新政策 | 企业私有资料必须通过 RAG 或工具进入上下文。 |
| 接一个供应商就够了 | 供应商限流、涨价或不可用时系统被锁死 | 业务层要通过模型适配层调用供应商。 |
| Prompt 写清楚就不会失败 | 仍可能超时、限流、输出无效 | 模型调用要有超时、重试、校验和降级。 |
| 把 API Key(接口密钥)写在示例里更方便 | 泄露密钥和客户风险 | 只展示变量名,真实值放安全配置。 |