故障排除
内存不足错误
要增加 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-rubric
或 similar
,需要您 覆盖评分器。
按照说明覆盖评分器,例如使用 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 提供者问题的方法。