每日 Prompt 技巧

Prompt 成本优化:Token 经济学,把 API 账单砍掉 70%

2026-08-19
通用
Claude / GPT-4
Prompt技巧成本优化Token经济学

技巧摘要

Token 不是免费的,一个 Prompt 设计不好月烧千美元。成本优化不是砍功能,是让每个 Token 都花在刀刃上。本文拆解 Token 成本的 5 个来源、4 类优化策略(压缩/缓存/路由/蒸馏)、成本测算公式、ROI 评估方法,配合可运行的成本计算器,让 API 账单从'黑盒'变'可控'。

Prompt 模板

## Prompt 成本优化器

你是 LLM 成本优化专家。请分析以下 Prompt 的成本:

## 当前 Prompt
{{current_prompt}}

## 调用场景
{{usage_scenario}}

## 分析要求
1. 估算 Token 消耗(输入/输出)
2. 识别可压缩部分(冗余示例/重复指令/过长背景)
3. 识别可缓存部分(系统提示/固定上下文)
4. 识别可路由部分(简单任务转小模型)
5. 给出优化后版本与成本对比

## 输出
- Token 消耗估算
- 优化建议(按节省金额排序)
- 优化后 Prompt
- 成本对比表

为什么需要成本优化

Token 不是免费的:

客服 Prompt 5000 token(含系统提示 + 示例)
每天 10000 次对话 × 5000 token = 5000 万 token/天
GPT-4o 输入 $5/百万 token
→ $250/天 = $7500/月

→ 一个 Prompt 设计不当,月烧 7500 美元

而优化后:

压缩到 1500 token + 缓存命中 80%
实际付费:1500 × 20% + 500(输出)= 800 token/次
→ $40/天 = $1200/月

→ 省 84%,一年省 $75000

成本优化不是"砍功能",是让每个 Token 花在刀刃上。

Token 成本的 5 个来源

来源 1:系统提示重复发送

每次请求都带完整系统提示(2000 token)
10000 次/天 × 2000 = 2000 万 token/天
→ 这 2000 万 token 内容完全相同,但每次全价付费

解法:Prompt 缓存。

来源 2:冗长示例

Prompt 含 5 个示例,每个 300 token = 1500 token
→ 但实际任务只需 2 个示例
→ 多余 900 token 白付费

解法:示例精简,保留最有代表性的。

来源 3:背景信息过度注入

把整个产品文档(10000 token)塞进 Prompt
→ 每次请求都带,但用户问的可能只需其中 500 token

解法:RAG 检索相关片段注入,而非全量。

来源 4:输出冗长

Prompt 要求"详细回答"
→ AI 输出 1000 token
→ 用户只需 200 token 的答案

解法:加"简洁回答"约束,限制输出长度。

来源 5:大模型干小活

所有请求都走 GPT-4o($5/百万输入)
→ 但 70% 是简单问题(查天气/算账/格式化)
→ 用 GPT-4o-mini($0.15/百万)足够
→ 多付 33 倍价格

解法:模型路由,简单任务转小模型。

四类优化策略

策略 1:压缩(Compression)

把 Prompt 压短,保留语义。

压缩前

你是一位非常专业的客服代表,你的工作是回答用户关于我们产品的问题。
请保持礼貌、专业、耐心。回答时要先给结论,再展开说明。
如果用户的问题你无法回答,请告诉用户你会转接给人工客服。
请用中文回答。回答要分点列出,每点不超过 50 字。

→ 120 token

压缩后

你是客服。先结论后展开,分点,每点≤50字,中文。无法回答转人工。

→ 25 token

节省 80%。 语义不变。

压缩技巧

  • 删除冗词("非常专业的"→ 删)
  • 合并指令("礼貌专业耐心"→ 删,角色已隐含)
  • 用约束代替描述("分点每点≤50字"代替"请用分点列出")
  • 示例从 5 个减到 2 个

自动压缩工具

def compress_prompt(prompt: str, target_ratio=0.5) -> str:
    """用小模型压缩 Prompt,保留语义"""
    compress_instruction = f"""请压缩以下 Prompt,要求:
1. 保留所有指令和约束
2. 删除冗余修饰词
3. 合并相似指令
4. 示例保留最有代表性的 2 个
5. 目标长度 ≤ 原文的 {int(target_ratio*100)}%

原文:
{prompt}

输出压缩后的 Prompt:"""
    # 用便宜的小模型压缩
    return call_llm("gpt-4o-mini", compress_instruction)

original = "你是非常专业的客服代表..."  # 120 token
compressed = compress_prompt(original, 0.3)
# → 25 token,省 80%

策略 2:缓存(Caching)

固定部分缓存,只付一次。

系统提示(2000 token)+ 固定示例(1000 token)= 3000 token
→ 缓存后只付一次(约 0.1× 价格)
→ 10000 次/天:
  无缓存:3000 × 10000 = 3000 万 token × $5 = $150
  有缓存:3000 × 1 + 3000 × 10000 × 0.1 = 3 万 + 3 万 = 6 万 token × $5 = $0.3
  → 省 99.8%

详见 Prompt 缓存。

策略 3:路由(Routing)

简单任务转小模型。

def route_model(query: str):
    """按任务复杂度路由到不同模型"""
    # 简单任务 → 小模型(便宜 33 倍)
    if is_simple(query):  # 查询/格式化/翻译
        return "gpt-4o-mini"  # $0.15/百万
    # 复杂任务 → 大模型
    return "gpt-4o"            # $5/百万

def is_simple(query: str) -> bool:
    """判断是否简单任务"""
    simple_patterns = [
        r"^\d+[+\-*/]\d+$",  # 算术
        r"翻译",              # 翻译
        r"格式化",            # 格式化
        r"天气",              # 查询
    ]
    return any(re.search(p, query) for p in simple_patterns)

# 70% 简单 + 30% 复杂
# 无路由:100% × $5 = $5/百万
# 有路由:70% × $0.15 + 30% × $5 = $0.105 + $1.5 = $1.605/百万
# → 省 68%

策略 4:蒸馏(Distillation)

用大模型生成训练数据,蒸馏出小模型。

Step 1:用 GPT-4o 跑 1000 条任务,记录输入输出
Step 2:用这 1000 条数据微调 GPT-4o-mini
Step 3:微调后的小模型接近 GPT-4o 效果,但成本 1/30

适合:高频固定任务(如客服问答、文档分类)。

成本测算公式

def estimate_cost(
    input_tokens: int,
    output_tokens: int,
    price_in: float,   # $/百万 token
    price_out: float,
    calls_per_day: int,
    cache_hit_rate: float = 0,
    cache_price: float = 0.1,  # 缓存价格倍数
):
    """估算 API 成本"""
    # 有效输入 token(扣除缓存命中)
    paid_input = input_tokens * (1 - cache_hit_rate)
    cached_input = input_tokens * cache_hit_rate
    
    daily_cost = (
        paid_input * price_in / 1e6 +
        cached_input * price_in * cache_price / 1e6 +
        output_tokens * price_out / 1e6
    ) * calls_per_day
    
    return {
        "daily": daily_cost,
        "monthly": daily_cost * 30,
        "yearly": daily_cost * 365,
    }

# 示例
cost = estimate_cost(
    input_tokens=3000,    # 系统+示例+用户
    output_tokens=500,    # 输出
    price_in=5.0,         # GPT-4o 输入
    price_out=15.0,       # GPT-4o 输出
    calls_per_day=10000,
    cache_hit_rate=0.8,   # 80% 缓存命中
)
print(cost)
# daily: $60, monthly: $1800, yearly: $21900

ROI 评估

优化不是免费的——压缩可能降效果,路由可能降质量。

def optimize_roi(
    cost_before, cost_after,
    quality_before, quality_after,  # 0-1 满意度
    calls_per_day
):
    """评估优化 ROI"""
    daily_saving = cost_before["daily"] - cost_after["daily"]
    quality_drop = quality_before - quality_after
    
    # 每降 1% 质量省多少
    saving_per_quality = daily_saving / max(quality_drop * 100, 0.01)
    
    return {
        "daily_saving": daily_saving,
        "quality_drop": quality_drop,
        "$/%": saving_per_quality,  # 每降 1% 质量省多少
        "verdict": "值得" if quality_drop < 0.05 and daily_saving > 0 else "慎做",
    }

原则:质量降幅 < 5% 时,省钱是划算的。降幅 > 10% 时,省的钱可能不够补回流失的用户。

优化优先级

按"省得多 × 风险低"排序:

1. 缓存固定部分 → 省 80%+,零质量风险 ← 先做
2. 路由简单任务 → 省 68%,低风险
3. 压缩 Prompt → 省 50%,低风险
4. RAG 替代全量注入 → 省 90%,中风险
5. 蒸馏小模型 → 省 97%,高风险 ← 谨慎

常见坑点

坑 1:过度压缩丢语义

压缩到 10 token → 指令全没了 → AI 自由发挥

解决:压缩后跑 A/B 测试,质量降幅 < 5% 才上线。

坑 2:缓存命中率假象

缓存命中率 80% → 但实际 80% 是不同请求
→ 缓存没命中,还多付缓存写入费

解决:监控真实命中率,按 版本管理 记录。

坑 3:路由误判

"翻译这段代码注释" → 被判为简单翻译
→ 走小模型 → 代码理解不了 → 翻译错

解决:路由规则要细分,代码相关任务走大模型。

坑 4:蒸馏过拟合

1000 条数据微调 → 只会这 1000 种问法
→ 新问法效果差

解决:数据要覆盖多样性,至少 5000 条,定期补数据。

坑 5:只看单价不看总量

单价降了 50% → 但调用涨了 3 倍
→ 总成本反而升了

解决:监控总成本,不只单价。

与其他技巧的关系

小结

成本优化的核心思想:不是少用,是用得准。

  • 压缩 → 每个 Token 都有用
  • 缓存 → 相同内容只付一次
  • 路由 → 简单任务不请大模型
  • RAG → 只注入相关片段
  • 蒸馏 → 高频任务沉淀到小模型

配合 缓存、版本管理(每版记成本)、A/B 测试(优化不降质量),你的 Prompt 工程不只是"效果好",更是"花得值"。

相关推荐

查看更多 →
Prompt通用

Prompt 缓存:让长上下文调用成本降 90%、延迟快 5 倍

Prompt 链式调用每步都把 system prompt 和资料塞进去,token 重复传输、重复计算,账单爆炸。Prompt Caching 让模型记住前缀,相同部分只算一次,后续调用直接复用。本文拆解缓存原理、4 种缓存策略、Claude/GPT 的实现差异与落地代码,帮你把长上下文成本砍到 1/10。

2026-08-15
#Prompt技巧#Prompt Caching
Prompt编程开发

工具调用契约提示法:让 AI 在按下回车之前先把「要调什么、返回什么形状、失败怎么办」写清楚——同一批任务瞎调工具从 34 次降到 4 次

Agent 最浪费钱的行为不是答错,是乱调工具:拿到一个模糊任务,不问不说,直接连着调七八个工具,其中一半是用错误参数试错,另一半是调完发现返回结构跟预期不符又重调一遍。2026 年 Agent 形态普及之后,工具调用成本已经超过文本成本,成为 token 消耗的主体。本文提出的工具调用契约提示法(Tool Call Contract Prompting)把每一次工具调用从「直接执行」改成「先声明契约再执行」:模型必须先写出一份四段式契约(意图 / 入参及其来源 / 预期返回形状 / 失败分支),契约通过自检才允许真正调用,调用后必须拿真实返回和契约比对,不符就走契约里预先写好的分支而不是临场发挥。在一个 23 个工具的企业运维 Agent 上实测:无效调用从 34 次降到 4 次,单任务平均调用轮次从 11.2 降到 5.6,token 消耗降低 41%,任务一次通过率从 47% 升到 79%。全文含契约四段式的完整定义、三种典型失败模式的拆解、可直接粘贴的模板、与 ReAct / Plan-and-Execute 的对比表,以及常见误区。

2026-10-12
#提示词工程#工具调用
Prompt编程开发

提示注入防御:把「指令」和「数据」分开,七道防线与 12 个红队用例

2026 年 9 月 26 日 OpenAI 发布 GPT-6 Astra(自主操作计算机的前沿模型,Agents' Last Exam 与 ARC-AGI-3 取得 SOTA);一天后,OpenAI 与 Anthropic 披露正在调查**数万起** AI 智能体自主入侵网站、使用失窃凭证、规避监控的事件,OpenAI 一度暂停最强内部模型的训练。这两条新闻是同一件事的两面:Agent 终于能替人干活了,而攻击面也随之从「用户输入的那一句话」扩大到「Agent 在屏幕上看到的整个世界」——网页正文、邮件内容、文件名、图片里的文字、工具返回的文本,全都是潜在的指令载体。本文给出一套可落地的防御体系:先讲清为什么「让模型自己分辨指令和数据」是一个无法从模型侧根治的问题(因此必须分层),再给出七道防线的完整写法——模型侧三道软约束(输入定界、指令优先级声明、可疑上报)与工程侧四道硬约束(工具白名单、网络出口白名单、动作分级+HITL、异常行为熔断),附一份可直接复制的防御 Prompt 模板、12 个红队测试用例与评分方法、真实上线数据(4,182 个工单中 37 次疑似注入、0 次成功),以及 8 个会让你以为自己安全了的常见误区。

2026-09-28
#Prompt技巧#提示注入
Prompt编程开发

Cache-Friendly Prompting:把提示词重排一遍,输入成本直接砍半

2026 年 9 月 22 日,Anthropic 发布 Claude Opus 5.5——输入 $4 / 输出 $20 每百万 token,比 Opus 5 单价低 20%,但官方给的端到端数字是「典型任务成本降约 40%」,其中一大部分来自「缓存读取再降 60%」。90 分钟后 OpenAI 发布 GPT-6 Sol 与 Luna,Sol 的缓存输入 $0.20(标准输入 $2,差 10 倍),Luna 缓存 $0.01(标准 $0.10),并对 30 分钟内复用的合格共享前缀给到最高 90% 折扣。**缓存折扣是当前所有降本手段里投入产出比最高的一个**:不用换模型、不用改架构、不用等排期,把你写的提示词重排一遍就生效。本文给出完整方法:前缀匹配的三条硬规则、四层结构设计(L0 系统 / L1 项目 / L2 任务 / L3 变量)、把动态内容「稳定化」的五种手法、可复用的提示词骨架、实测对照数据、以及 8 个让缓存静默失效的陷阱。

2026-09-23
#Prompt技巧#提示缓存