ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI 编程省 Token 指南:在保证质量的前提下把成本打下来

AI 编程省 Token 指南:在保证质量的前提下把成本打下来 AI 编程省 Token 指南在保证质量的前提下把成本打下来写在前面Token 越来越贵每次调用大模型都像在烧钱。但省 Token 不等于牺牲质量——用对方法既能省下真金白银又能让 AI 输出更精准。本文从输入、输出、对话管理、代码场景四个维度系统梳理可落地的省 Token 技巧。一、先搞懂Token 是怎么被消耗的大模型按 Token 计费且输入和输出通常分开计费输出往往更贵。一次对话的总 Token 消耗 历史上下文 当前输入 模型输出。消耗来源占比典型场景可控程度系统提示词System Prompt5%–15%高历史对话上下文30%–60%中用户输入含代码/错误信息20%–40%高模型输出15%–50%中高核心思路能精简的精简能复用的复用能截断的截断能换模型的换模型。二、输入侧从源头砍掉冗余 Token2.1 精简提示词说人话但别废话坏例子啰嗦版你现在是一个非常专业的资深前端工程师拥有10年以上的React开发经验 我希望你能帮我看一下下面这段代码有没有什么问题 如果有问题的话请你帮我指出来并且告诉我怎么修改谢谢。好例子精简版角色资深前端工程师 任务审查以下 React 代码的问题并给出修复方案 代码技巧用关键词 冒号的结构化写法替代完整句子删除礼貌用语“请”“谢谢”“麻烦你”去掉重复强调的身份描述保留最核心的角色定位2.2 只给必要的上下文别整段贴错误做法把整个文件几千行代码全贴进去让 AI 找 bug。正确做法只贴相关函数/类 必要的依赖定义报错信息只贴关键栈帧最相关的前 5–10 行提供最小可复现示例Minimal Reproducible Example# 报错只贴关键部分 Error: Cannot read property map of undefined at UserList.render (UserList.js:42) at ReactCompositeComponentWrapper._renderValidatedComponent2.3 用缩写和符号替代长文本原写法精简写法节省函数 functionfn约 50%例如 / 比如e.g.约 40%也就是说 / 换句话说即约 60%请帮我分析一下这段代码分析代码约 60%⚠️ 注意缩写以不产生歧义为前提。专业术语不要随意缩写以免 AI 理解偏差导致输出质量下降。2.4 代码输入的压缩技巧去掉注释除非注释对理解逻辑至关重要否则全部删掉去掉空行和多余空格保留必要缩进即可用占位符替代重复结构// 不用贴10个类似的接口定义写 // 其余9个接口格式同上仅路径和参数不同长数据用摘要// 数据结构示例共200条格式一致 {id: 1, name: xxx, score: 85}三、输出侧让 AI 说短话说准话3.1 明确限制输出格式和长度在提示词末尾加上输出约束输出要求 - 只给代码不要解释 - 总长度不超过 50 行 - 用 diff 格式展示修改效果对比不加限制AI 可能输出 200 行代码 500 字解释加限制后20 行 diffToken 消耗减少 70%3.2 要代码不要废话编程场景下最省 Token 的输出方式就是纯代码# 提示词模板 任务用 Python 实现快速排序 输出仅代码无注释无解释如果需要解释单独问一次而不是每次都让 AI 附带说明。3.3 用结构化输出控制粒度指定输出格式避免 AI 自由发挥写长篇大论输出格式严格按以下结构 1. 问题根因一句话 2. 修复方案代码 diff 3. 风险提示无则写无3.4 分步输出按需追问不要一次性让 AI 做太多事。先让它给方案确认后再让它写代码第1步给出3种实现思路每种一句话 → 你选思路2 第2步按思路2写核心函数代码 → 你觉得可以 第3步补充边界条件处理看似多了一轮但每轮输出都很短总 Token 往往比一次输出大段内容更少且质量更可控。四、对话管理上下文才是 Token 大户4.1 定期开启新对话历史上下文会被每一轮都重新计费。聊了 20 轮后第 21 轮的输入 Token 可能已经是第 1 轮的 10 倍。策略每个独立任务开一个新对话长任务每完成一个阶段就开新对话并把必要结论带过去不要在一个对话里既问 React 又问 Python 又问算法4.2 主动总结并压缩上下文当对话变长时让 AI 做一次上下文压缩请用不超过100字总结我们目前的讨论结论和当前任务状态 后续我将基于这个总结继续提问。然后开新对话把这个总结作为初始上下文贴进去。几十轮的对话可能被压缩到 100 字。4.3 善用 System Prompt而不是每次重复说如果每次都要强调你是一个 Go 后端工程师输出只给代码把它放到 System Prompt 里而不是每轮 User Message 都重复一遍。注意System Prompt 也会消耗 Token且每轮都算。所以 System Prompt 也要精简。4.4 及时丢弃无关上下文对话中跑题了、试错了的内容不要留着占上下文。可以直接开新对话重来明确告诉 AI “以上讨论作废重新开始”但 Token 已经花了不如开新的五、代码场景专属技巧5.1 用伪代码/思路代替完整实现当你只是想确认方案对不对不要让 AI 写完整代码不要写完整代码只用伪代码描述实现思路 重点说明时间复杂度和关键数据结构选择。确认思路没问题后再让 AI 写代码避免反复修改浪费 Token。5.2 错误排查先定位再修复错误做法把报错和整段代码一起丢给 AI让它帮我看看怎么回事。正确做法先让 AI 分析可能的原因只给报错 相关代码确认原因后再让 AI 写修复代码修复代码只改相关部分用 diff 格式5.3 代码审查分模块来不要一次性审查整个项目。按模块/文件逐个来每次只审查一个关注点审查以下代码的【安全漏洞】只列问题不给修复代码。确认问题清单后再针对性地让 AI 写修复方案。5.4 用类型签名/接口定义代替完整实现讨论架构或接口设计时只给签名就够了# 不用贴函数体只给签名defprocess_data(input:List[Dict],config:Config)-Result:...AI 完全能基于签名理解你的设计并给出建议。六、工具与工程化手段6.1 选择合适的模型不是所有任务都需要最强模型简单代码补全、格式转换 → 用轻量模型便宜 5–10 倍复杂架构设计、Debug → 用强模型先用便宜模型试搞不定再换贵的6.2 本地缓存常见问答把常用的代码片段、配置模板、常见问题答案存在本地不要每次都问 AI。建立自己的Snippets 库项目脚手架模板常用工具函数常见 bug 修复方案6.3 用 Embedding RAG 替代长上下文如果你经常需要 AI 参考某个文档/代码库❌ 每次都把文档贴进对话贵且有长度限制✅ 用 Embedding 把文档向量化检索相关片段后再提问RAGRAG 能把每次的上下文从几千 Token 降到几百 Token。6.4 Token 计数工具调用前先估算 Token 消耗简单估算中文 1 字 ≈ 1–2 Token英文 1 词 ≈ 1–1.5 Token精确计算用官方 Tokenizer如 tiktoken# 示例用 tiktoken 计算importtiktoken enctiktoken.encoding_for_model(gpt-4)tokenslen(enc.encode(your_prompt))七、质量保证省 Token 不能省效果省 Token 的前提是不降低输出质量。以下是质量保障策略7.1 精简 ≠ 模糊✅ 删掉的是冗余表达不是关键信息❌ 把需求缩到 AI 看不懂的地步检验标准删掉的内容AI 是否还能准确理解你的意图如果不能就删过头了。7.2 关键约束必须保留以下信息绝对不能省编程语言和版本Python 3.10 vs Python 2.7 差很多框架和库版本React 18 vs React 16运行环境和限制浏览器/Node/嵌入式性能要求时间/空间复杂度约束安全要求是否需要处理边界/异常7.3 分步验证及时纠偏省 Token 的风险是信息不足导致 AI 跑偏。对策分步输出每步确认后再继续先让 AI 复述需求确认理解一致再干活复杂任务先给方案方案确认再写代码7.4 建立省 Token 模板库把常用的精简提示词模板化# Code Review 模板 角色{语言} 资深工程师 任务审查以下代码的 {关注点} 代码 {代码} 输出 - 问题列表优先级从高到低 - 每个问题一句话描述 代码位置 - 不给修复代码每次用模板填空既省 Token 又保证质量稳定。八、实战案例一次 Debug 的 Token 优化前后对比优化前约 3500 Token嗨你好呀我最近在学习React遇到了一个问题想请教你。 我写了一个UserList组件用来展示用户列表但是运行的时候 浏览器控制台报错了说什么Cannot read property map of undefined 我不太明白这是什么意思能不能帮我看看是怎么回事 我把整个组件的代码都贴在下面了你帮我仔细检查一下 最好能告诉我为什么会出现这个错误以及怎么修改才能解决 如果有其他可以优化的地方也顺便告诉我一下谢谢啦 [完整组件代码 200 行含注释、空行、import、样式等] 对了我用的是React 18版本项目是用Create React App创建的 Node版本是18不知道这些信息有没有用都告诉你吧。 还有就是这个错误是在我点击了加载更多按钮之后出现的 一开始页面加载的时候是好的点了按钮就报错了。优化后约 800 Token角色React 18 前端工程师 任务定位并修复以下错误 错误 Cannot read property map of undefined at UserList.render (UserList.js:42) 触发条件点击加载更多按钮后 相关代码第35-50行 [15 行核心代码] 输出 1. 根因一句话 2. 修复代码diff 格式节省比例约 77%且因为信息更聚焦AI 回答的准确率反而更高。九、总结省 Token 的 10 条黄金法则输入精简结构化表达删废话用关键词上下文最小化只给必要的代码和信息输出可控明确格式、长度、内容边界要代码不要废话纯代码输出最省新任务开新对话别让历史上下文滚雪球定期压缩上下文总结结论轻装上阵分步输出先方案后代码按需追问选对模型简单任务用轻量模型缓存复用常见问题和代码片段存本地质量兜底关键约束不省分步验证纠偏最后一句话省 Token 的本质是提升沟通效率——你和 AI 沟通得越精准Token 花得越少效果还越好。这不是抠门是工程素养。本文持续更新欢迎补充你的省 Token 小技巧。
返回列表