Skip to main content

故障排除

内存不足错误

要增加 Promptfoo 可用的内存量,请使用 --max-old-space-size 标志增加节点堆大小。例如:

# 8192 MB 是 8 GB。根据您的机器设置适当的值。
NODE_OPTIONS="--max-old-space-size=8192" promptfoo eval

OpenAI API 密钥未设置

如果您使用的是 OpenAI,请设置 OPENAI_API_KEY 环境变量或在提供者配置中添加 apiKey

如果您没有使用 OpenAI 但仍然收到此消息,您可能有一些 模型评分指标,例如 llm-rubricsimilar,需要您 覆盖评分器

按照说明覆盖评分器,例如使用 defaultTest 属性。

在此示例中,我们将文本和嵌入提供者覆盖为使用 Azure OpenAI(gpt-4o 用于文本,ada-002 用于嵌入)。

defaultTest:
options:
provider:
text:
id: azureopenai:chat:gpt-4o-deployment
config:
apiHost: xxx.openai.azure.com
embedding:
id: azureopenai:embeddings:text-embedding-ada-002-deployment
config:
apiHost: xxx.openai.azure.com

超时错误

在运行评估时,您可能会遇到超时错误,尤其是在使用本地提供者或运行许多并发请求时。这些超时可能会表现为通用错误或缺乏有用的错误消息。

要解决超时问题,请尝试通过在运行 promptfoo eval 时使用 -j 1 标志来限制并发性。这将减少同时请求的数量:

promptfoo eval -j 1

调试 Python

在使用自定义 Python 提供者、提示、钩子、断言等时,您可能需要调试您的 Python 代码。以下是一些帮助您排查问题的提示:

查看 Python 输出

要查看您的 Python 脚本的输出,包括打印语句,请在运行评估时将 LOG_LEVEL 环境变量设置为 debug

LOG_LEVEL=debug promptfoo eval

或者,您可以使用 --verbose 标志:

promptfoo eval --verbose

使用调试器

虽然不直接支持标准的 Python 调试器(如 pdb),但您可以使用 remote-pdb 进行调试。首先,安装 remote-pdb

pip install remote-pdb

然后,在您希望设置断点的 Python 脚本中添加以下行:

from remote_pdb import RemotePdb
RemotePdb('127.0.0.1', 4444).set_trace()

当您的代码到达这一点时,它将暂停执行并等待您连接到调试器。然后,您可以使用 telnet 等工具连接到调试器:

telnet 127.0.0.1 4444

处理错误

如果您的 Python 脚本中遇到错误,错误消息和堆栈跟踪将显示在 promptfoo 输出中。请确保检查此信息以获取有关代码中可能出错的线索。

请记住,promptfoo 在单独的进程中运行您的 Python 脚本,因此某些标准调试技术可能无法按预期工作。使用上述的日志记录和远程调试是最可靠的排查 Python 提供者问题的方法。