小试牛刀调整Prompt,优化Token消耗


在上一篇文章 荒腔走板Mac电脑本地部署 LLM 中介绍过本地部署大模型之后,可以通过定制 prompt 来实现 domain 提取等各种各样的需求。

但是实际上,部署本地大模型 这种方式对于个人开发者来说实在是不太友好。一方面需要投入大量资金确保设备的算力足够支撑LLM的训练和推理;另一方面本地部署的大模型的量级都不会太大,所以效果也不会太理想。

对于个人开发者来说,想开发一个 AI 应用,最快的方式就是集成某个大模型平台 API。这种情况下,所有的成本主要体现在 Token 花费。以下是各大 LLM 平台的 Token 价格:

通义千问

智普

百度文心Ernie

月之暗面 Kimi

谷歌 Gemini

Claude

接下来我将使用通义千问平台实现一个伪需求,来看下具体的 Token 使用情况。

实际上各个平台都提供了一定量的免费Token,之所以采用通义千问,是因为通义千问相对便宜。

通义千问实现展览馆搜索

我将实现的伪需求是:列举某个城市的3个展览馆,并分别介绍每一个展览馆的一些藏品。

返回JSON格式

通过定制 Prompt,可以让大模型返回固定格式的数据,一种常用的格式就是 JSON。 Prompt 如下:

具体代码如下:

返回结果如下图:

很明显,通义千问大模型返回的结果是符合我们需求的。但是请求时间使用了将近 17s,并且一次性消耗了 543 个 Token。1百万的Token量只能支持访问 1000000/543 = 1841 次请求。

假设你开发的大模型应用比较受大众欢迎,有1000个日活用户,每个用户每天会请求10次请求。那你每天的 Token 消耗计算公式如下:

1000用户 * 10次请求 * 单次请求Token 543 = 5430000个

作为一名合格的穷人,一定要节约使用 Token。如何优化 prompt,尽量在不损失准确率的基础上,减少 token 的使用量,显得尤为重要。

精简 JSON 格式

在基于JSON格式的基础上,进行格式精简并删除非必要内容。在之前 Prompt 基础上新增如下内容:
可以看出,Prompt新增了一行 "使用精简模式的JSON,删除一切不必要的空格和换行符号"。

具体修改代码如下:

运行上述代码,最终返回结果如下:

明显可以看出性能有明显提升:推理耗时优化到8s,并且 Token 消耗也减少到393个。

使用自定义格式

实际上就算是精简后的JSON格式,依然是一种比较复杂的数据格式。我们可以通过自定义一种简单,进一步减少大模型推理的耗时以及Token使用。

比如以下格式:

上图中我们自定义的格式相比于JSON格式,虽然可读性很差,但是对于高性能的机器来说不算一件难事。我用 ! 符号代表一个JSON的Object,用 ? 符号代表一个字符串,最后用 # 符号代表数组对象。

具体修改代码如下:

最终运行结果如下图:

通过自定义数据格式,到模型推理的时间和Token消耗被进一步优化。

Prompt Engineering 是一个不断持续优化的过程,但是也是有一些基本规则的。后面文章会尝试梳理如何写一个完善 Prompt 的基本准则。

如果你喜欢本文

长按二维码关注

相关推荐
霸道流氓气质7 小时前
Prompt 版本控制与 A/B 测试实战:语义版本管理、一致性哈希分流与 Thompson Sampling 的 Java 生产级实现
java·prompt·哈希算法
jason.zeng@15022071 天前
(六)Prompt 优化
python·ai·langchain·prompt·ai编程·llama
网络毒刘1 天前
把个人 Prompt 库迁到 AtomGit:版本化、评审与在 Cursor 中通过 @ 引用
prompt·cursor·atomgit·版本化·工具实践
jason.zeng@15022071 天前
(九)多轮对话式新增维修记录实现方案
python·prompt·交互·llama
IT_Octopus1 天前
【零基础入门 LLM 开发 · Day 10】:LangChain 入门——一条管道符串起 prompt 和模型
python·langchain·prompt
oscar9992 天前
用 Opik Prompt Library 管理提示词:版本、追踪与多轮对话的完整指南
prompt·opik
jason.zeng@15022072 天前
(十)分层架构的多文件工程
python·架构·prompt·交互·ai编程·llama
聪明蛋子哟2 天前
大模型工程化全景实战:打通Prompt、RAG、Tool Calling与跨系统集成的任督二脉
人工智能·prompt
Alice-YUE3 天前
从「能用」到「可控」:Prompt 工程与日常写 Prompt 的本质区别
人工智能·大模型·llm·prompt·prompt工程·提示词·ai应用
打工仔折腾 AI3 天前
System Prompt 替代 Few-shot:用规则约束大模型输出的省钱实践
java·人工智能·python·spring·langchain·prompt·ai agent 实战