Skip to main content

自托管

promptfoo 提供了一个 Docker 镜像,允许您托管一个中央服务器来存储团队的评估。通过这种方式,您可以:

  • 与团队共享您的评估。
  • 在 CI/CD 管道中运行评估并汇总结果。
  • 将敏感数据保留在本地机器之外。

自托管应用程序包括:

  • 自托管应用程序是一个 Express 服务器,提供 Web UI 和 API。

使用预构建的 Docker 镜像

快速入门的方法是使用预构建的镜像。

要使用预构建的镜像:

  1. 拉取镜像:
docker pull ghcr.io/promptfoo/promptfoo:main

您可以使用特定版本标签而不是 main 来获取更稳定的版本。

  1. 运行容器:
docker run -d --name promptfoo_container -p 3000:3000 -v /path/to/local_promptfoo:/root/.promptfoo ghcr.io/promptfoo/promptfoo:main

关键点:

  • -v /path/to/local_promptfoo:/root/.promptfoo 将容器的工目录映射到本地文件系统。将 /path/to/local_promptfoo 替换为您喜欢的路径。
  • 省略 -v 参数将导致评估不持久。
  • 将任何 API 密钥作为环境变量添加到 Docker 容器中。例如,-e OPENAI_API_KEY=sk-abc123 设置 OpenAI API 密钥,以便用户可以直接从 Web UI 运行评估。将 sk-abc123 替换为您的实际 API 密钥。

从源代码构建

1. 克隆仓库

首先,从 GitHub 克隆 promptfoo 仓库:

git clone https://github.com/promptfoo/promptfoo.git
cd promptfoo

2. 构建 Docker 镜像

使用以下命令构建 Docker 镜像:

docker build -t promptfoo .

3. 运行 Docker 容器

使用以下命令启动 Docker 容器:

docker run -d --name promptfoo_container -p 3000:3000 -v /path/to/local_promptfoo:/root/.promptfoo promptfoo

高级配置

评估存储

promptfoo 使用位于镜像中 /root/.promptfoo 的 SQLite 数据库 (promptfoo.db)。确保此目录持久化以保存您的评估。将 -v /path/to/local_promptfoo:/root/.promptfoo 传递给 docker run 命令以持久化评估。

将 promptfoo 指向您的托管实例

在自托管时,您需要设置环境变量,以便 promptfoo share 命令知道如何访问您的托管应用程序。以下是一个示例:

PROMPTFOO_REMOTE_API_BASE_URL=http://localhost:3000 PROMPTFOO_REMOTE_APP_BASE_URL=http://localhost:3000 promptfoo share -y

这将使用您的自托管服务创建一个可共享的 URL。

PROMPTFOO_REMOTE_API_BASE_URL 环境变量指定自托管服务的 API 端点的基本 URL。这是 promptfoo share 命令发送数据以创建可共享 URL 的地方。

同样,PROMPTFOO_REMOTE_APP_BASE_URL 环境变量设置自托管服务的 UI 的基本 URL。这将是可共享 URL 的可视部分。

这些配置选项也可以在 promptfoo 配置的 sharing 属性下设置:

sharing:
apiBaseUrl: http://localhost:3000
appBaseUrl: http://localhost:3000