Promptfoo

promptfoo 是一个开源库(和 CLI),用于评估 LLM 输出质量。

Portkey 为您的 Promptfoo 项目带来了先进的 AI 网关 功能、全栈 可观察性提示管理 + 版本控制。本文档提供了如何利用这两个平台的优势来简化您的 AI 开发工作流程的概述。

使用 Portkey 与 Promptfoo,您可以:

让我们看看这些是如何工作的!


1. 来自 Portkey 的 Promptfoo 参考提示

  1. 在你的 Promptfoo 项目中设置 PORTKEY_API_KEY 环境变量

  2. 在你的配置 YAML 中,使用 portkey:// 前缀来标识你的提示,后面接上你的 Portkey 提示 ID。

例如:

prompts:
  - portkey://pp-test-promp-669f48

providers:
  - openai:gpt-3.5-turbo-0613

tests:
  - vars:
      topic: ...

来自你 Promptfoo 测试用例的变量将自动插入到 Portkey 提示中作为变量。生成的提示将被渲染并返回给 promptfoo,并用作测试用例的提示。


2. 路径到 Anthropic、Google、Groq 等

  1. 设置 PORTKEY_API_KEY 环境变量

  2. 在配置 YAML 中添加提供者时,使用 portkey 前缀设置模型名称(如 portkey:gpt-4o

  3. config 参数中,为上述选择的模型设置相关提供者为 portkeyProvider(如 portkeyProvider:openai

例如,调用 OpenAI

就这样!通过这个,您所有的 Promptfoo 调用现在将开始出现在您的 Portkey 控制面板上。

现在让我们调用 Anthropic, Google, Groq, Ollama

Azure OpenAIAWS BedrockGoogle Vertex AI 的示例

使用 虚拟密钥

不使用虚拟密钥

首先,设置 AZURE_OPENAI_API_KEY 环境变量。

使用客户端凭据(JSON Web Token)

您可以为您的客户端凭据生成一个 JSON Web Token,并将其添加到 AZURE_OPENAI_API_KEY 环境变量中。


3. 段请求、查看成本和性能指标

Portkey 自动记录有关您的请求的所有关键信息,包括成本、使用的令牌、响应时间、请求和响应体等。

使用 Portkey,您还可以在每个请求中发送自定义元数据,以便进一步对日志进行分段,以获得更好的分析。同样,您还可以将多个请求追踪到单个追踪 ID,并在 Portkey 日志中单独过滤或查看它们。

您可以在 Portkey 仪表板上按这些元数据键过滤或分组数据。


4. 避免 Promptfoo 速率限制并利用缓存

由于 promptfoo 可以非常快速地进行大量调用,您可以在 Portkey 中使用启用缓存的负载均衡配置。您可以传递类似于 promptfoo 中虚拟密钥的配置头。

以下是您可以在 Portkey UI 中保存的示例配置,并获取相应的配置标识:

然后我们只需在 YAML 中添加保存的配置标识:


🚧 [Roadmap] 在 Portkey 中查看 Promptfoo 评估的结果

我们正在构建支持在 Portkey 中查看 promptfoo 评估结果的功能,这将使您能够在 Portkey 的反馈部分查看 promptfoo 评估的结果。

Last updated