随着大模型(LLM)技术的日益普及,我们越来越依赖这些“数字大脑”来完成各种任务,从撰写代码到创作诗歌,无所不能。然而,通过付费API服务使用LLM也带来了 token成本 的问题,这笔费用会像上了发条的松鼠一样快速消耗我们的预算。本文将深入探讨如何理解和控制 token成本,利用各种策略在保证质量的前提下,最大程度地节省开支,避免因AI使用而倾家荡产。

理解Token成本:你的钱包为何哭泣?

在使用LLM之前,首先要理解 token成本 的基本构成,即 输入token输出token输入token 指的是你输入的提示词(prompt),包括指令、上下文和一些你认为AI会喜欢的玩笑话。 输出token 则是模型生成的回复,从一个简单的词语到一篇关于回形针存在主义焦虑的论文都算在内。一个复杂的prompt可能消耗数千个token,而如果将其扩展到数百个请求,你会迅速意识到在看似简单的自动完成功能上花费了大量的金钱。

不同供应商对token的计算方式也存在差异。 token成本 的高低取决于定价结构和tokenization方法。不同的模型有不同的价格标签,有些是高端定制,有些则更像是现成的便宜货。而且,这些价格变化比变色龙在迪斯科舞池里变换颜色还要快。例如,使用Artificial Analysis的benchmark suite,我们可以看到不同模型的成本差异巨大。Artificial Analysis通过对8个数据集的加权平均,对语言模型进行基准测试,以测试其通用知识、推理和编码能力,采用标准化、公正和透明的方法,以获得公平和适用的结果。它们捕获了许多指标,例如成本、延迟、价格与质量。我们最关心的是成本,因此可以查看此图表,正如你所看到的,根据使用的模型,你可能需要支付高昂的价格。

此外,还有一些隐藏的 token成本 需要注意,例如API调用频率,系统消息,以及“思考token”。每次API调用都像叫了一辆非常昂贵的出租车,如果你不断发送相关的想法,就像每隔一个街区就换一辆出租车一样。正确的做法是将请求批量处理到一个prompt中,这就像邮寄一封内容丰富的信件,而不是每句话都单独寄一张明信片,后者会让你破产。系统消息是指服务商在你的prompt之前插入的一些指令,比如要求AI“有帮助”、“无害”等,虽然你看不见这些指令,但它们会被计入token数量,成为一种隐形的税。当要求模型“逐步思考”复杂的任务时,模型会创建一个隐藏的草稿,你虽然看不到这些数字化的喃喃自语,但需要为此付费。这并非欺诈,而是一种战略性的权衡,是你为获得一个经过深思熟虑的答案而付出的代价。

核心策略:像葛朗台一样精打细算

现在,让我们进入有趣的部分:如何在不牺牲质量的前提下,采取实用的方法来缩减开支。

精简Prompt,更要高效Prompt

虽然简洁是好事,但最终目标是提高效率。有时,花费更多token在详细的prompt上,可以避免多次失败的、廉价的尝试。

  • 简洁规则: 对于简单的任务,直接了当。例如,不要说“如果不麻烦的话,我想知道你是否可以生成一个简短的概述”,直接说“用50个字总结一下”。
  • 效率例外(Few-Shot Prompting): 对于复杂或细致的任务,包含高质量示例(即“Few-Shot Prompt”)的较长prompt可能更具成本效益。向模型提供2-3个你想要结果的示例可以避免代价高昂的错误、幻觉和重复运行。将token投资于一个好的prompt,从而节省在糟糕输出上的token。举个例子,你想让LLM模仿某个特定作家的风格进行写作,与其仅仅告诉它“用莎士比亚的风格写一篇关于爱情的短文”,不如提供几段莎士比亚的原文作为例子,让模型更好地理解你的意图,从而生成更符合期望的结果。

限制输出长度:设定清晰的约束

一个不受约束的LLM会像一个喝多了咖啡的教授一样喋喋不休,你需要为它的每一句题外话付费。明确告诉AI你需要多少内容:“用3个要点回复。” “给我一句话的答案。” 例如,你需要让LLM生成一个产品的描述,与其简单地说“写一段产品描述”,不如明确要求“写一段不超过100字,突出产品功能和优势的产品描述”。

最小化多轮对话中的上下文

让对话历史不断累积就像让酒吧的账单整晚都在跑一样。总结历史记录中的关键点,而不是重新发送整个文字记录。例如,在与客户进行多次对话后,你需要将对话内容总结给其他同事。与其将整个对话记录都发送过去,不如让LLM将对话中的关键信息(客户姓名、需求、问题等)提取出来,形成一个简短的总结,这样可以大大减少token的使用量。

重构迭代任务:变浪费为投资

旧的建议是避免要求多个版本。但对于某些用例,这种说法是错误的。

  • 避免无引导的迭代: 不要只是为了看看会发生什么而要求“五个不同的营销口号”。这是低效的。
  • 拥抱引导式迭代: 对于创意或探索性工作,迭代是对发现的投资。关键是要有目的性。要求提供一个好的版本,然后引导改进:“这个不错。现在,让它更幽默一点。” “好的,让这个版本更正式,面向企业受众。” 举例来说,你想让LLM生成一个网站的设计方案,可以先让它生成一个初步方案,然后根据你的反馈,逐步进行修改和完善,比如“将背景颜色改为蓝色”、“将字体调整为微软雅黑”等等。

使用更便宜的模型进行测试和初稿

不要用大锤砸坚果。使用经济实惠的模型来起草和完善你的提示词,然后切换到高级模型进行最终的关键任务运行。比如,在正式生成一篇重要的报告之前,你可以先使用一个价格较低的模型来生成一个草稿,看看整体的结构和内容是否符合你的要求,然后再使用更强大的模型进行润色和完善。

案例分析:昂贵的Prompt vs. 优化的Prompt

让我们用一个常见的商业场景来说明:从客户电子邮件中提取关键信息。

场景1:昂贵的、模糊的Prompt(高Token使用量)

这种方法是对话式的,没有提供任何约束,导致冗长、非结构化和非优化的响应。

Prompt:

“嘿,你能帮我看看下面的这封客户邮件吗?我需要了解他们的情况。请阅读并告诉我主要内容,他们是谁,他们想要什么,以及他们的情绪是什么。请给我一个关于整件事的总体总结。谢谢你的帮助,你最棒了。”

邮件:

“尊敬的支持团队,

我是 Innovate Corp 的 John Doe。我们已经是你们三年的忠实客户,对你们的服务总体上感到满意。但是,我们最近的订单(#AB-12345)收到了几件损坏的物品,这阻碍了我们的生产线。这对我们来说是一个关键问题。我们需要立即将更换物品隔夜运出。我对这种情况很不满意,需要今天解决。

谢谢,

John Doe,首席运营官,Innovate Corp.”

昂贵的原因:

  • 浪费的输入Token: 对话式的介绍(“嘿,你能帮我个忙吗…谢谢你的帮助,你最棒了”)增加了不必要的Token。
  • 不受约束的输出: 该prompt要求“总体总结”,邀请模型漫无边际地使用比所需更多的输出Token。
  • 高昂的人工时间成本: 非结构化的响应需要用户花费时间阅读和解析摘要,以找到他们需要的特定数据点。

场景2:优化的、高效的Prompt(低Token使用量)

这个prompt是直接的,利用格式的优势,并告诉模型要做什么,从而产生简短、可预测和廉价的响应。

Prompt:

“从以下电子邮件中提取关键信息。仅使用包含以下键的JSON对象回复:’customername’、’companyname’、’sentiment’、’issuesummary’、’ordernumber’、’action_required’。”

邮件:

“尊敬的支持团队,

我是 Innovate Corp 的 John Doe。我们已经是你们三年的忠实客户,对你们的服务总体上感到满意。但是,我们最近的订单(#AB-12345)收到了几件损坏的物品,这阻碍了我们的生产线。这对我们来说是一个关键问题。我们需要立即将更换物品隔夜运出。我对这种情况很不满意,需要今天解决。

谢谢,

John Doe,首席运营官,Innovate Corp.”

具有成本效益的原因:

  • 最少的输入Token: 指令是直接且简洁的。
  • 严格的输出约束: 请求具有特定键的JSON格式迫使模型仅提供基本信息,从而大大减少了输出Token的数量。
  • 低人工时间成本: 结构化输出可以直接在其他应用程序中使用或立即读取,从而节省宝贵的人工时间。这使其成为总体上最具成本效益的解决方案。

最重要的指标:总拥有成本(人工时间 vs. API成本)

这是成本优化中最关键的概念。如果以牺牲人工时间为代价,那么一味地专注于最小化API成本就是一个错误。

一个开发人员花费四个小时构建一个复杂的系统来节省5美元的Token是一个巨大的净亏损。你的时间是宝贵的。通常,最具“成本效益”的解决方案是使用最强大、最昂贵的模型,因为它能立即提供正确、高质量的答案,从而让你有时间从事其他工作。

最终目标是降低总成本(API成本 + 人工时间),而不仅仅是API成本。例如,一个需要高精度翻译的法律文件,如果使用免费的翻译工具,可能需要花费大量时间进行校对和修改,才能达到可用的水平。但如果直接使用一个高质量的翻译模型,虽然API成本较高,但可以大大缩短校对时间,最终的总成本反而更低。

利用模型设置进行成本控制

大多数LLM API都有一些旋钮和杠杆,可以让你控制AI的个性。降低Temperature、Top-k和Top-p的值通常会产生更集中、可预测和不那么冗长的输出。 Max Tokens是你的数字安全词,对输出长度有硬性限制。 例如,Temperature参数控制着模型输出的随机性,较低的Temperature值会让模型更倾向于选择最常见的、最符合逻辑的答案,从而减少不必要的token使用。

高级成本管理技术

  • 监控: 使用提供商的仪表板和像TikToken这样的库来计算GPT的token,或者计算Gemini的token,看看你的钱花在哪里。
  • 缓存: 如果你经常问同样的问题,那就保存答案!不要让AI为同样的问题支付两次费用。
  • 微调: 一项很大的前期投资,但一个经过微调的模型可以用更短(更便宜)的prompt来执行专门的任务。例如,你可以使用你的特定行业的数据来微调一个LLM,使其更擅长处理你的业务相关的任务,从而减少token的使用量。

成本优化的未来

好消息是,情况总是在变得更好和更便宜。新的技术正在涌现:

  • 上下文压缩: 这正变得越来越普遍。它涉及到一个更小、更快的模型或算法,在主要的、昂贵的LLM看到它之前,自动总结你的输入上下文,从而节省你的输入token。
  • 模型级联: 将其视为一个智能分诊系统。一个管理模型首先评估你的prompt的复杂性。简单的请求?它被路由到一个廉价、快速的模型。复杂的、改变世界的查询?它被“级联”到高级、强大的模型。这种自动化的工作流程优化了成本性能,而无需你费力。
  • 混合专家(MoE)架构: 模型设计中一个新兴的趋势,即不是一个巨大的模型处理你的请求,而是只激活相关的“专家”子模型。这在本质上更有效,并且是许多较新的、具有成本效益的模型的关键驱动力。

结论

最小化LLM token成本 是一场效率、质量和你的总预算之间的战略性舞蹈。通过超越简单的简洁性来实现真正的prompt效率,了解你的时间和API账单之间的关键权衡,并密切关注使用像Artificial Analysis这样的资源的新技术,以获得关于性能与成本的宝贵见解,你可以显著降低你的费用。现在去负责任地prompt吧,赶在松鼠们学会如何使用你的API密钥之前。

空谈无益,API调用可不是免费的。在我们能够将这些削减成本的策略应用于我们之前的文章之前,我们需要定义成功的样子。毕竟,一个廉价但错误的总结只是昂贵的垃圾。在下一期中,我们将进入“Franken-Lab”来建立基本规则,探索什么使总结好、坏或“自信的骗子”。加入我们,为我们宏伟的实验奠定基础。