服务器指南

NeMo Guardrails 工具包使您能够创建 guardrails 配置,并使用 guardrails 服务器actions 服务器 以可扩展且安全的方式部署它们。

Guardrails 服务器

Guardrails 服务器在启动时加载一组预定义的 guardrails 配置,并公开 HTTP API 以使用它们。该服务器使用 FastAPI,并且界面基于 chatbot-ui 项目。此服务器最适合提供可视化界面/playground 来与机器人交互并试用 rails。

启动服务器

> nemoguardrails server [--config PATH/TO/CONFIGS] [--port PORT] [--prefix PREFIX] [--disable-chat-ui] [--auto-reload] [--default-config-id DEFAULT_CONFIG_ID]

如果未指定 --config 选项,服务器将尝试从当前目录中的 config 文件夹加载配置。如果未找到任何配置,它将加载所有示例 guardrails 配置。

如果指定了 --prefix 选项,则 guardrails 服务器的根路径将位于指定的前缀。

注意:由于服务器旨在为多个 guardrails 配置提供服务,因此 path/to/configs 必须是包含每个单独配置的子文件夹的文件夹。例如

.
├── config
│   ├── config_1
│   │   ├── file_1.co
│   │   └── config.yml
│   ├── config_2
│       ├── ...
│   ...

注意:如果服务器指向包含单个配置的文件夹,则只有该配置可用。

如果指定了 --auto-reload 选项,服务器将监视配置文件夹中文件的任何更改,并在更改时自动重新加载它们。这使您可以更快地迭代配置,甚至在更改后在对话过程中重新生成消息。重要提示:此选项仅应在开发环境中使用。

CORS

如果您想让您的 guardrails 服务器直接从另一个基于浏览器的 UI 接收请求,您需要启用 CORS 配置。您可以通过设置以下环境变量来完成此操作

  • NEMO_GUARDRAILS_SERVER_ENABLE_CORS: TrueFalse (默认 False)。

  • NEMO_GUARDRAILS_SERVER_ALLOWED_ORIGINS:允许的来源列表(默认 *)。您可以使用逗号分隔多个来源。

端点

服务器的 OpenAPI 规范可在 http://127.0.0.1:8000/redochttp://127.0.0.1:8000/docs 中找到。

/v1/rails/configs

要列出服务器可用的 guardrails 配置,请使用 /v1/rails/configs 端点。

GET /v1/rails/configs

示例响应

[
  {"id":"abc"},
  {"id":"xyz"},
  ...
]

/v1/chat/completions

要获取聊天会话的完成结果,请使用 /v1/chat/completions 端点

POST /v1/chat/completions
{
    "config_id": "benefits_co",
    "messages": [{
      "role":"user",
      "content":"Hello! What can you do for me?"
    }]
}

示例响应

[{
  "role": "bot",
  "content": "I can help you with your benefits questions. What can I help you with?"
}]

完成端点还支持在单个请求中组合多个配置。为此,您可以使用 config_ids 字段而不是 config_id

POST /v1/chat/completions
{
    "config_ids": ["config_1", "config_2"],
    "messages": [{
      "role":"user",
      "content":"Hello! What can you do for me?"
    }]
}

配置将按照它们在 config_ids 列表中指定的顺序组合。如果配置之间存在任何冲突,则列表中的最后一个配置将优先。rails 将按照它们在 config_ids 列表中指定的顺序组合。跨配置的模型类型和引擎必须相同。

默认配置

NeMo Guardrails 服务器支持拥有默认的 guardrail 配置,可以使用 --default-config-id 标志设置。当请求中未提供 config_id 时,将使用此配置。

POST /v1/chat/completions
{
    "messages": [{
      "role":"user",
      "content":"Hello! What can you do for me?"
    }]
}

线程

Guardrails 服务器对存储对话线程提供基本支持。当您只能发送对话的最新用户消息,而不是整个历史记录(例如,来自第三方集成钩子)时,这非常有用。

配置

要使用服务器端线程,您必须注册一个数据存储。为此,您必须在配置文件夹的根目录中创建一个 config.py 文件(即,包含服务器必须加载的所有 guardrails 配置的文件夹)。在 config.py 中,使用 register_datastore 函数注册您要使用的数据存储。

开箱即用,NeMo Guardrails 支持 MemoryStore(用于快速测试)和 RedisStore。如果您想使用不同的后端,您可以实现 DataStore 接口,并在 config.py 中注册不同的实例。

注意:要使用 RedisStore,您必须安装 aioredis >= 2.0.1

接下来,当调用 /v1/chat/completions 端点时,您还必须包含 thread_id 字段

POST /v1/chat/completions
{
    "config_id": "config_1",
    "thread_id": "1234567890123456",
    "messages": [{
      "role":"user",
      "content":"Hello! What can you do for me?"
    }]
}

注意:出于安全原因,thread_id 的最小长度必须为 16 个字符。

例如,查看此配置

局限性

目前,使用流式传输模式时不支持线程(将在未来的版本中添加)。

线程无限期存储;没有清理机制。

聊天 UI

您可以使用 Chat UI 快速测试 guardrails 配置。

重要提示:您应该仅将 Chat UI 用于内部测试。对于 NeMo Guardrails 服务器的生产部署,应使用 --disable-chat-ui 标志禁用 Chat UI。

Actions 服务器

Actions 服务器使您能够更安全地运行从 guardrails 调用的 actions(有关更多详细信息,请参阅 安全指南)。action 服务器应部署在单独的环境中。

注意:即使强烈建议用于生产部署,使用 actions 服务器 也是可选的,并且是按 guardrails 配置配置的。如果在 guardrails 配置中未指定 actions 服务器,则 actions 将在与 guardrails 服务器相同的进程中运行。启动服务器

> nemoguardrails actions-server [--port PORT]

启动时,actions 服务器将自动注册所有预定义的 actions 和当前文件夹(包括子文件夹)中的所有 actions。

端点

actions 服务器的 OpenAPI 规范可在 http://127.0.0.1:8001/redochttp://127.0.0.1:8001/docs 中找到。

/v1/actions/list

要列出服务器的 可用 actions,请使用 /v1/actions/list 端点。

GET /v1/actions/list

示例响应

["apify","bing_search","google_search","google_serper","openweather_query","searx_search","serp_api_query","wikipedia_query","wolframalpha_query","zapier_nla_query"]

/v1/actions/run

要使用一组参数执行 action,请使用 /v1/actions/run 端点

POST /v1/actions/run
{
    "action_name": "wolfram_alpha_request",
    "action_parameters": {
      "query": "What is the largest prime factor for 1024?"
    }
}

示例响应

{
  "status": "success",
  "result": "2"
}