【AI】更精炼的输入 更少的TOKEN消耗
在使用 AI(尤其是按 Token 计费的 API 或长上下文模型)时,节约 Token 的核心思路是:减少无效输入、压缩有效信息、控制输出长度、复用上下文。以下是分维度的具体方法及示例:
一、Prompt 工程:让输入更精炼
1. 删除冗余修饰词
低效:
“请你作为一个非常专业、经验丰富、在业界享有盛誉的资深 Java 后端开发工程师,帮我详细分析一下下面这段代码可能存在的问题,要非常详细、全面、深入、透彻地分析……”
高效:
“作为资深 Java 工程师,分析以下代码的潜在问题(重点关注 NPE、并发安全、资源泄漏):”
节约点:删除形容词堆砌,直接限定角色 + 任务 + 约束条件。
2. 使用结构化标记替代自然语言描述
低效:
“这里有一个用户表,字段包括用户ID、用户名、邮箱、创建时间、状态。还有一个订单表,字段包括订单ID、用户ID、订单金额、订单状态、创建时间。用户表和订单表通过用户ID关联。请帮我写一条SQL查询每个用户的订单总金额……”
高效:
表结构:
- users(id, username, email, created_at, status)
- orders(id, user_id, amount, status, created_at)
需求:查询每个用户的订单总金额,按金额降序。
节约点:用表格/列表/代码块替代大段叙述,结构化信息密度更高。
3. 提供最小可复现示例(MRE)
低效: 粘贴 500 行业务代码让 AI 找 Bug。
高效:
// 问题:以下代码在并发下可能丢失更新
public void deductStock(Long itemId, int qty) {
int stock = getStock(itemId); // ①
if (stock >= qty) {
updateStock(itemId, stock - qty); // ②
}
}
// 请指出问题并给出修复方案
节约点:只保留与问题相关的核心逻辑,删除无关业务代码、注释、空行。
二、上下文管理:避免重复携带历史
4. 主动摘要历史对话
当对话轮次很长时,不要让模型重复读取完整历史。
操作方式:
“以上对话我们讨论了 MySQL 索引优化的 5 个要点。后续问题请基于这 5 点展开,无需重复之前的详细解释。”
API 层面:定期将多轮对话压缩为一条 System Prompt:
System: 用户正在优化 MySQL 慢查询。已确认:①无索引 ②回表过多 ③需用覆盖索引。当前问题:如何优化 LIMIT 深分页。
节约点:将 10 轮对话(可能 3000+ Token)压缩为 1 条摘要(200 Token)。
5. 分片处理长文本(Chunking)
处理超长文档(如 PDF、代码库)时,不要一次性全量投喂。
低效: 直接粘贴 2 万字技术文档问"总结一下"。
高效:
- 先让 AI 分段处理:
“这是文档第 1-5 章,请提取各章核心论点(限 50 字/章)。”
- 再将摘要汇总:
“基于以下各章摘要,生成全文总结……”
节约点:避免单次请求超出上下文窗口,同时减少重复计费。
三、控制输出:限定响应长度
6. 显式约束输出格式和长度
低效:
“介绍一下 Redis 持久化。”
高效:
“用表格对比 RDB 和 AOF,3 行以内,只列核心差异(机制、性能、场景)。”
API 参数:设置 max_tokens 上限,避免模型"发散"生成冗长内容。
7. 要求代码-only 回复
低效:
“请给我写一个 Java 单例模式,并附带详细解释、优缺点分析、使用场景说明……”
高效:
“用 Java 枚举实现线程安全单例,只输出代码,不要解释。”
节约点:解释性文字往往占输出 Token 的 60% 以上。
四、工具与策略层面
8. 使用 Prompt Cache / 上下文缓存
部分平台(如 Claude、Kimi)支持Prompt Cache:
- 将不变的系统指令、文档背景缓存,后续请求只计费变化的 Token。
- 示例:把 5000 Token 的产品文档作为缓存上下文,每次只问新问题(50 Token),只需付 50 Token 而非 5050 Token。
9. 批量处理替代单条循环
低效(API 调用):
for code_snippet in code_list:
response = ai.chat(f"Review this code: {code_snippet}") # 每次都要付系统 Prompt Token
高效:
prompt = "批量审查以下代码片段,按序号输出问题:\n" + "\n---\n".join(code_list)
response = ai.chat(prompt) # 只付一次系统 Prompt Token
节约点:减少系统消息(System Prompt)的重复计费。
10. 用英文关键词替代中文长句(API 场景)
模型对英文 Token 的切分效率通常高于中文(1 个英文词 ≈ 1 Token,1 个汉字 ≈ 1~1.5 Token)。
示例:
- “请详细解释” → “Explain in detail”(3 Token vs 5 Token)
- 技术术语直接用英文:
OOP、NPE、GC比全称更省 Token。
五、总结对照表
| 策略 | 适用场景 | 预估节约比例 |
|---|---|---|
| 删除冗余修饰 | 所有对话 | 10%~20% |
| 结构化输入 | 代码/数据分析 | 20%~40% |
| 最小可复现示例 | Bug 排查 | 50%~80% |
| 主动摘要历史 | 长对话 | 30%~60% |
| 分片处理长文本 | 文档分析 | 避免超限重复计费 |
| 限定输出长度 | 所有场景 | 20%~50% |
| Prompt Cache | 固定背景 + 多变问题 | 80%~90%(背景部分) |
| 批量处理 | API 批量任务 | 30%~50% |
核心原则:Token 是信息的度量单位,不是字数的度量单位。信息密度越高、冗余越低,同样的任务消耗的 Token 就越少,模型理解也越精准。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)