为什么在人工智能应用中使用Guard Rails很重要?
在开发人工智能应用,尤其是聊天机器人时,控制用户能说什么和不能说什么至关重要。主要目标是确保聊天机器人发送的消息是恰当且相关的。为实现这一点,广泛使用了一种称为“提示工程”(prompt engineering)的技术。该技术通过创建一系列示例或“提示”来定义允许的消息类型以及聊天机器人应如何响应。
什么是提示工程?
提示工程是一种构建聊天机器人的方法,涉及创建用户和机器人之间特定交互的示例。这些示例作为底层语言模型的指导,帮助其理解并正确响应用户的查询。
提示工程的核心思想是精确定义聊天机器人的期望行为,并训练模型根据这些规范进行操作。这意味着创建涵盖不同类型查询和响应的多种示例。这些示例还可以包括上下文限制,例如用户信息或特定问题。
提示示例使用一种名为CoLang(Chatbot Language)的特定编程语言生成。通过CoLang,开发者可以创建代码块来定义聊天机器人的行为,包括哪些消息是允许的、如何响应以及根据上下文应采取哪些操作。
为什么使用Guard Rails?
虽然提示工程被广泛用于控制聊天机器人的行为,但它也有一些局限性。首先,创建示例可能成本高昂且耗时。此外,示例并不能涵盖所有可能的用户查询,有时底层语言模型的行为可能不如预期。
这就是“Guard Rails”(安全护栏)的作用。Guard Rails是用户消息和语言模型之间的一层额外保护。与仅依赖提示工程不同,Guard Rails允许定义特定类别和示例来标记不当或不希望的查询。如果查询与这些示例匹配,可以直接提供标准响应,而不涉及完整的语言模型。
使用Guard Rails有几个好处。首先,它比将所有查询发送到语言模型要快得多,因为只发送那些不符合Guard Rails示例的查询。这节省了计算时间,使系统更加灵活高效。此外,Guard Rails减少了对复杂且昂贵的示例的依赖,因为标准响应可以直接从Guard Rails提供。
配置Nemo Guard Rails
前提条件
在使用Nemo Guard Rails之前,请确保已安装以下依赖项:
- Python 3.7或更高版本
- Nemo Guard Rails包
- OpenAI的API密钥
安装
要安装Nemo Guard Rails,只需在终端中运行以下命令:
pip install nemo-guard-rails
安装完成后,请确保在下一步中准备好OpenAI的API密钥。
配置身份验证
要使用Nemo Guard Rails,需要使用OpenAI的API密钥进行身份验证。按以下步骤操作:
- 在与代码相同的位置创建一个名为
.env
的文件。 - 打开
.env
文件并添加以下行:OPENAI_API_KEY=YOUR_API_KEY
- 将"YOUR_API_KEY"替换为您自己的OpenAI API密钥,并确保删除引号。
- 保存并关闭文件。
完成身份验证后,即可开始在代码中使用Nemo Guard Rails。
CoLang的工作原理
CoLang是一种专门用于聊天机器人的编程语言,允许定义聊天机器人的行为和用户交互。通过CoLang,可以创建代码块来定义根据用户查询和机器人响应采取的操作。
用户、机器人及流程块
在CoLang中,主要使用三个块:用户(user)、机器人和流程(flow)。这些块用于定义用户和机器人之间的特定交互。
- 用户块:用于定义用户可能发送给机器人的示例消息。这些示例用于训练底层语言模型并引导其响应。
- 机器人块:用于定义机器人对用户消息的响应。在这里定义机器人根据用户提供的示例的行为。
- 流程块:用于定义用户和机器人之间的交互顺序。在这里指定哪些用户消息应触发哪些机器人响应。
变量和条件语句的使用
CoLang还支持使用变量和条件语句,使机器人的行为更加动态。可以使用变量存储用户信息,并在个性化响应中使用。
例如,可以使用username
变量根据用户的名字进行问候。如果用户名不可用,则使用通用响应。CoLang还支持条件语句,如if
和else
,以根据上下文或用户状态定义不同的响应。
与语言模型的集成
通过CoLang,可以轻松集成底层语言模型,如OpenAI的模型,以生成更丰富和上下文相关的响应。可以定义特定的交互,使用语言模型并获得更详细和个性化的响应。