Skip to main content

如何评估OpenAI助手

OpenAI最近发布了一个助手API,简化了消息状态和工具使用的处理。它还启用了代码解释器和知识检索功能,抽象了一些实现RAG架构的繁琐工作。

测试驱动开发允许你在测量改进并避免无法解释的回归的同时,比较提示、模型和工具。这是系统迭代与试错的一个例子。

本指南将引导你使用promptfoo,通过OpenAI的助手API选择最佳的提示、模型和工具。假设你已经设置了promptfoo。

第一步:创建一个助手

使用OpenAI playground创建一个助手。评估将使用这个助手,并使用不同的指令和模型。

添加你想要的函数,并根据需要启用代码解释器和检索功能。

创建助手后,记录其ID。它看起来类似于asst_fEhNN3MClMamLfKLkIaoIpgB

第二步:设置评估

一个评估配置有几个关键组件:

  • prompts:你想要测试的用户聊天消息
  • providers:你想要测试的助手和/或LLM API
  • tests:要尝试的单个测试用例

让我们设置一个基本的promptfooconfig.yaml

prompts:
- '帮我解决这个问题:{{message}}'
providers:
- openai:assistant:asst_fEhNN3MClMamLfKLkIaoIpgB
tests:
- vars:
message: 写一条关于香蕉的推文
- vars:
message: 38.293和30300300的平方根之和是多少
- vars:
message: 反转字符串“all dogs go to heaven”

第三步:运行评估

现在我们已经设置好了配置,在命令行上运行评估:

npx promptfoo@latest eval

这将生成一个简单的助手输出视图。请注意,它会记录对话,以及代码解释器、函数和检索的输入和输出:

助手评估

这是一个基本视图,但现在我们准备真正认真地进行评估。在接下来的部分中,我们将学习如何比较不同的助手或同一助手的不同版本。

比较多个助手

要比较不同的助手,请在promptfooconfig.yamlproviders部分引用它们。例如:

providers:
- openai:assistant:asst_fEhNN3MClMamLfKLkIaoIpgB
- openai:assistant:asst_another_assistant_id_123

这将针对两个助手运行相同的测试,并允许你比较它们的性能。

比较同一助手的不同版本

如果你想为特定测试覆盖助手的配置,可以在测试的options部分进行。例如:

providers:
- id: openai:assistant:asst_fEhNN3MClMamLfKLkIaoIpgB
config:
model: gpt-4o
instructions: '在这里输入系统级指令的替代内容'
tools:
- type: code_interpreter
- type: retrieval
thread:
messages:
- role: user
content: '这些消息在每个测试用例的提示之前包含。'
- role: assistant
content: '好的'

在这个例子中,助手API使用上述参数调用。

以下是一个比较保存的助手设置与新潜在设置的例子:

providers:
# 原始
- id: openai:assistant:asst_fEhNN3MClMamLfKLkIaoIpgB

# 修改
- id: openai:assistant:asst_fEhNN3MClMamLfKLkIaoIpgB
config:
model: gpt-4o
instructions: '总是像海盗一样说话'

这个评估将测试助手的两个版本,并并排显示结果。

添加指标和断言

指标和断言允许你自动评估助手的性能。你可以在测试的assert部分添加它们。例如:

tests:
- vars:
message: 写一条关于香蕉的推文
assert:
- type: contains
value: '香蕉'
- type: similar
value: '我喜欢香蕉!'
threshold: 0.6

在这个例子中,contains断言检查助手的响应是否包含单词'香蕉'。similar断言检查助手的响应在语义上是否与'我喜欢香蕉!'相似,余弦相似度阈值为0.6。

有许多不同的断言可以考虑,从简单的指标(如字符串匹配)到复杂的指标(如模型评级的评估)。我强烈建议你设置适合你用例的断言。 基于这些断言,promptfoo 将自动为你的助手的不同版本评分,以便你可以选择表现最佳的那个。

下一步

既然你已经设置了一个基本的评估集,你可能还会对评估检索代理的具体技术感兴趣。