GPT 3.5 vs GPT 4: 在自己的数据上进行基准测试
本指南将引导你如何使用 promptfoo 比较 OpenAI 的 GPT-3.5 和 GPT-4。这个测试框架将让你有机会测试模型的推理能力、成本和延迟。
通用基准测试适用于通用用例。如果你正在构建一个 LLM 应用,你应该在自己的数据上评估这些模型,并根据你的特定需求做出明智的决策。
最终结果将是一个并排比较,看起来像这样:
前提条件
在我们深入之前,确保你已经准备好以下内容:
第一步:设置
为你的比较项目创建一个专用目录:
npx promptfoo@latest init gpt-comparison
编辑 promptfooconfig.yaml
以包含 GPT-3.5 和 GPT-4:
providers:
- openai:gpt-4o-mini
- openai:gpt-4o
第二步:设计提示
在我们的比较中,我们将使用一个简单的提示:
prompts:
- '解决这个谜语:{{riddle}}'
你可以随意添加多个提示并根据你的用例进行调整。
第三步:创建测试用例
在上面的提示中,我们有一个 {{riddle}}
占位符变量。每个测试用例都会使用不同的谜语运行提示:
tests:
- vars:
riddle: '我不用嘴说话,不用耳朵听。我没有身体,但风一来我就活了。我是什么?'
- vars:
riddle: '你看到一艘载满人的船。它没有沉,但当你再看时,船上一个人也没有了。为什么?'
- vars:
riddle: '这种东西越多,你看到的就越少。它是什么?'
第四步:运行比较
使用以下命令执行比较:
npx promptfoo@latest eval
这将处理谜语并针对 GPT-3.5 和 GPT-4 进行测试,在你的命令行界面中提供并排的结果:
npx promptfoo@latest view
第五步:自动评估
为了简化评估过程,你可以为测试用例添加各种类型的断言。断言验证模型的输出是否符合某些标准,并相应地将测试标记为通过或失败:
tests:
- vars:
riddle: '我不用嘴说话,不用耳朵听。我没有身体,但风一来我就活了。我是什么?'
assert:
# 确保 LLM 输出包含这个单词
- type: contains
value: echo
# 推理成本应始终低于此值(美元)
- type: cost
threshold: 0.001
# 推理应始终快于此值(毫秒)
- type: latency
threshold: 5000
# 使用模型评级的断言来强制执行自由形式的指令
- type: llm-rubric
value: 不要道歉
- vars:
riddle: '你看到一艘载满人的船。它没有沉,但当你再看时,船上一个人也没有了。为什么?'
assert:
- type: cost
threshold: 0.002
- type: latency
threshold: 3000
- type: llm-rubric
value: 解释说人们都在甲板下
- vars:
riddle: '这种东西越多,你看到的就越少。它是什么?'
assert:
- type: contains
value: darkness
- type: cost
threshold: 0.0015
- type: latency
threshold: 4000
设置好断言后,重新运行 promptfoo eval
命令。这个自动化过程有助于快速确定哪个模型最适合你的推理任务需求。
有关可用断言类型的更多信息,请参见 断言与指标。
清理
最后,我们将使用 defaultTest
来清理一下, 并应用全局的 latency
和 cost
要求。以下是最终的评估配置:
providers:
- openai:gpt-4o-mini
- openai:gpt-4o
prompts:
- '解开这个谜语:{{riddle}}'
defaultTest:
assert:
# 推理成本应始终低于此值(美元)
- type: cost
threshold: 0.001
# 推理速度应始终快于此值(毫秒)
- type: latency
threshold: 3000
tests:
- vars:
riddle: "我不用嘴说话,不用耳朵听。我没有身体,但风一吹我就活了。我是什么?"
assert:
- type: contains
value: 回声
- vars:
riddle: "你看到一艘载满人的船。它没有沉没,但当你再看时,船上一个人也没有了。为什么?"
assert:
- type: llm-rubric
value: 解释说人们都在甲板下
- vars:
riddle: "这种东西越多,你看到的就越少。它是什么?"
assert:
- type: contains
value: 黑暗
有关配置设置的更多信息,请参阅配置指南。
结论
最终,您将看到类似这样的结果:
在这个特定的评估中,GPT-3.5 似乎答对了所有谜题,除了一个(它误解了“single”的含义!)。然而,GPT-4 未能满足我们的成本要求,因此总体得分较低。
成本、延迟和准确性之间的权衡将根据每个应用的需求进行定制。这就是为什么进行自己的评估非常重要的原因。
我鼓励您使用自己的测试案例进行实验,并将本指南作为起点。要了解更多信息,请参阅入门指南。