通用配置#

机器人配置文件是您机器人的入口点。本节列出了您可以在 bot_config.yaml 文件中配置的选项。它包含构建不同用例所需的所有关键配置。它是 NeMo Guardrails 支持的配置 的扩展。NVIDIA ACE Agent 也支持 NeMo Guardrails 支持的所有配置。

此外,以下配置是 NVIDIA ACE Agent 独家支持的。

机器人名称和版本#

注意

必须在机器人配置文件中指定机器人名称

机器人名称和版本组合必须是唯一的,并且在同时部署多个机器人时,将唯一用于标识您的机器人。带有版本的机器人名称应如下所示:{bot_name}_v{bot_version}。例如

bot: llm_bot_v1

可以有选择地在机器人配置文件中指定机器人版本。如果没有版本,机器人名称应如下所示:{bot_name}。例如

bot: llm_bot

配置 NLP 和插件服务器端点#

这些配置可以在 bot_config.yaml 文件中的 configs 字段下指定。可用配置如下所示。所有配置都有默认值,除非另有说明,否则默认情况下会被使用。

configs:
# The endpoint URL of the NLP server service
  nlp_server_url: http://127.0.0.1:9000

# The endpoint URL of the plugin service
  plugin_server_url: http://127.0.0.1:9002

# The interval in seconds used to poll nlp server and fm server for checking availability by Chat Engine. This polling is used to ensure a smooth fallback if either of these services goes down in the middle of conversation.

  health_check_interval: 5

多语言配置#

NVIDIA ACE Agent 支持多语言输入和多语言输出。

如果您使用 Riva 的神经机器翻译 模型在查询级别或响应级别进行翻译,则需要提供 request_languageresponse_language 代码,如下所示。所有三个的默认值均为 en-US

language: Optional[str] = en-US
    request_language: Optional[str] = en-US
    response_language: Optional[str] = en-US

如果 request_language 不等于 language,则将调用 NMT 模型(如果已部署)来翻译查询,源语言设置为 request_language,目标语言设置为 language。例如,您需要设置以下配置以将所有来自西班牙语的传入查询转换为英语

language: Optional[str] = en-US
request_language: Optional[str] = es-US

如果 response_language 不等于 language,则将调用 NMT 模型(如果已部署)来翻译响应文本,源语言设置为 language,目标语言设置为 response_language。例如,您需要设置以下配置以将所有从英语发出的响应转换为西班牙语

language: Optional[str] = en-US
response_language: Optional[str] = es-US

提示

  • 请参阅 西班牙语天气 Bot 以查看上述配置的实际应用。

  • 请求和响应语言也可以在运行时随每个查询一起提供。请参阅 /chat 端点模式。

LLM 模型配置#

要配置将由护栏配置使用的主干 LLM 模型,请设置 models

models:
- type: main
    engine: openai
    model: gpt-4-turbo

属性的含义如下:

  • type 设置为 main,表示主 LLM 模型

  • engine 是 LLM 提供商。

  • model 是模型的名称。推荐选项是 gpt-4-turbo

  • parameters 是任何其他参数,例如 temperaturetop_k 等。

models 键中应仅指定一个 LLM 模型。

NVIDIA ACE Agent 也支持所有 NeMo Guardrails 支持的 LLM 模型及其配置。

LangChain 模型#

您可以使用 LangChain 支持的云端任何 LLM 提供商,只需在 engine 字段中提及其名称即可。例如

  • ai21

  • aleph_alpha

  • anthropic

  • anyscale

  • azure

  • cohere

  • huggingface_endpoint

  • huggingface_hub

  • openai

  • self_hosted

  • self_hosted_hugging_face

请参阅 LangChain 文档 以获取完整列表。

NVIDIA AI 端点#

您可以使用任何可用的 NVIDIA API Catalog LLM 作为 NVIDIA AI 端点模型类型的一部分。将 engine 类型字段设置为 nim 以将其插入到您的机器人中,并提供模型名称以及任何所需的参数。

models:
  - type: main
    engine: nim
    model: <MODEL_NAME>

访问 NVIDIA API Catalog 网站以浏览 LLM 并试用它们。

对于使用本地 NIM 部署

models:
  - type: main
    engine: nim
    model: <MODEL_NAME>
    parameters:
      base_url: <NIM_ENDPOINT_URL>

要使用任何提供商,您需要安装额外的软件包。当您首次尝试使用新提供商的配置时,通常会收到来自 LangChain 的错误,指示您应安装哪个软件包。

重要提示

您可以实例化上述任何 LLM 提供商,但根据模型的功能,某些提供商与 NVIDIA ACE Agent 工具包的配合会更好。该工具包包括已针对某些类型的模型(例如 openai)优化的提示。对于其他模型,您可以自行优化提示。

以下模型已使用 Colang 2.0-beta 版本进行测试。

OpenAI 模型

  • gpt-3.5-turbo-instruct

  • gGpt-3.5-turbo

  • gpt-4-turbo

  • gpt-4o

  • gpt-4o-mini

NIM 模型

  • meta/llama3-8b-instruct

  • meta/llama3-70b-instruct

  • meta/llama-3.1-8b-instruct

  • meta/llama-3.1-70b-instruct

使用 LangChain 包装器的自定义 LLM 模型#

要使用 LangChain 包装器注册自定义 LLM 提供商,您需要创建一个类,该类继承自 LangChain 提供的 BaseLanguageModel 类,并使用 NeMo Guardrails 提供的 register_llm_provider 实用程序方法注册它。此代码可以在名为 config.py 的初始化文件中提供。NVIDIA ACE Agent 将在启动机器人之前自动执行它。

from langchain.base_language import BaseLanguageModel
from nemoguardrails.llm.providers import register_llm_provider


class CustomLLM(BaseLanguageModel):
    """A custom LLM."""


register_llm_provider("custom_llm", CustomLLM)

然后,您可以在机器人配置文件中使用自定义 LLM 提供商

models:
- type: main
    engine: custom_llm

LLM 提示#

您可以使用 prompts 键自定义用于各种 LLM 任务的提示(例如,生成用户意图、生成下一步、生成机器人消息)。例如,要覆盖用于 OpenAI gpt-4-turbo 模型的 generate_user_intent 任务的提示

prompts:
- task: generate_user_intent
    models:
    - gpt-4-turbo
    content: |-
    <<This is a placeholder for a custom prompt for generating the user intent>>

NVIDIA ACE Agent 工具包使用的预定义任务的完整列表包括以下内容

  • general 生成下一个机器人消息,当不使用规范形式时。

  • generate_user_intent 生成规范的用户消息。

  • generate_next_steps 生成机器人下一步应该做或说的内容。

  • generate_bot_message 生成下一个机器人消息。

  • generate_value 生成上下文变量的值(换句话说,提取用户提供的值)。

  • fact_checking 根据提供的证据检查机器人响应中的事实。

  • jailbreak_check 检查是否有人试图违反审核策略。

  • output_moderation 检查机器人响应是否有害、不道德或非法。

  • check_hallucination 检查机器人响应是否为幻觉。

您可以在 NeMo Guardrails 存储库的 prompts 文件夹中查看默认提示。