服务器指南
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
:True
或False
(默认False
)。NEMO_GUARDRAILS_SERVER_ALLOWED_ORIGINS
:允许的来源列表(默认*
)。您可以使用逗号分隔多个来源。
端点
服务器的 OpenAPI 规范可在 http://127.0.0.1:8000/redoc
或 http://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/redoc
或 http://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"
}