跳到主要内容

指南

托管运行

托管运行在 Oloproof 的工作节点而不是你的机器上执行你的套件,你可以在作业页面或终端中查看它。你只需要 oloproof login;不需要数据库连接,也不需要自己的运行器。

工作节点会运行什么

工作节点通过 HTTP 调用你的系统。在 oloproof.yaml 中用 http: 声明它(配置):

system:
  name: support-bot
  version: v3
  http:
    url: https://support-bot.example.com/answer
    output_path: answer

工作节点会拒绝:

  • callable: 或 rag: 系统,在作业入队之前即被拒绝。那是你的代码,而 Oloproof 的工作节点不运行客户代码;请在自己的机器上运行(oloproof run)并推送该运行,或在你自己运营的运行器上运行。
  • recorded: 回答文件。它留在你的机器上;请用 oloproof run 在本地运行。
  • 不在公共互联网上的地址:localhost、单标签名称、私有地址、链路本地地址或云元数据地址。每次调用都会在发出时检查,因此这样的用例会报错而不会到达该地址;工作节点只能到达互联网上任何人都能到达的地方。
  • 生成的攻击用例,除非 oloproof.yaml 声明了 adversarial: {sandboxed: true}(生成攻击)。--allow-adversarial 只适用于本地运行。

运行一次

oloproof login
oloproof run --cloud --max-runtime 900

run --cloud 将套件的用例发送到工作区(托管运行无法执行它没有的用例),然后将作业入队,并打印查看它的位置。工作区已完整持有的套件不会再次发送。

worker 在保留套件之前会将每个用例与其摘要核对,并拒绝不匹配的套件。因此,即使项目为隐去内容而对摘要加了密钥(egress:,结果与执行),run --cloud 也像 worker 一样以不加密钥的方式计算用例摘要:用例无论如何都会完整发送,加密钥也隐藏不了什么。所以托管运行的套件与同一项目的本地运行所记录的套件是不同的套件。工作区已持有(来自 push 的)加密钥证据的项目会被拒绝:请用 oloproof run 运行它并推送该运行。

--max-runtime 是作业的截止时间,以秒为单位,最长一天,若你的套餐限制更短则以套餐为准。oloproof.yaml 中的 budget: 在工作节点上与在本地一样具有约束力。

谁可以运行:工作区的 Owner、Admin 或 Member。Reviewer 不可以。

查看它

项目的作业页面会在每个作业的用例到达时显示它们:已运行和已评判的数量、每项检查的通过与失败计数,以及最新的用例。计数只是目前为止的数量,不是结果。判定在整个运行存储后才会得出,随后显示在该运行的页面上。

在终端中:

oloproof job JOB_ID --follow

每隔几秒打印相同的计数,然后打印运行的门禁,并以门禁的退出码退出,因此流水线可以像等待本地运行一样等待托管运行(CI)。不加 --follow 时,job 只报告一次;仍在运行的作业以 2 退出,因为它还不是判定。--cancel 会立即停止排队中的作业,并在下一次调用之前停止运行中的作业,保留已完成的用例。

评判模型的密钥

调用模型提供方的评判模型或系统需要在工作节点上有其密钥。存储一次即可:

export OPENAI_API_KEY=...
oloproof credentials set OPENAI_API_KEY
oloproof credentials list

密钥从环境变量或标准输入读取,绝不从命令行读取。它由工作节点加密,只有运行此工作区作业的工作节点才能读取;任何人都无法读回它,credentials list 只显示名称。随后评估器的 api_key_env: OPENAI_API_KEY 就能找到它。托管作业不读取其他任何环境变量。只有 Owner 或 Admin 可以存储密钥。

这无法告诉你的

  • 你的系统从 Oloproof 的网络访问时是否与从你的网络访问时表现相同。工作节点从公共互联网调用你的端点;对它区别对待的速率限制、区域和允许列表会改变它所测量的内容。
  • 关于工作节点未运行的代码的任何事情。托管运行测量的是你指定的端点,而不是其背后的代码。

评估无法告诉你的内容中的其他所有限制在这里同样适用。