大模型时代,安全问题不容小觑。但如果把大模型比作孙悟空,那 NVIDIA NeMo Guardrails 就是“安全护栏”,可以轻松的为基于 LLM 的对话系统添加可编程护栏,来避免大语言模型输出违法违规内容,并通过自定义方式响应用户特定请求,按照预定义的对话路径进行操作,以及使用特定的语言风格进行回答。
那如何在 Azure 中搭建 NeMo Guardrails 环境,将 NeMo Guardrails 与 Azure OpenAI 结合使用,构建更加安全可靠的 LLM 对话引擎?本期【比特熊充电栈】NVIDIA 企业级开发者社区经理李奕澎,将为大家解读 NeMo Guardrails 中的 Colang 语言,以及进行将 NeMo Guardrails 与 Azure OpenAI 结合使用的代码实战,见证安全 LLM 对话引擎的构建。
李奕澎
NVIDIA 企业级开发者社区经理
NLP,Conversational-AI,LLM
Colang 语言
定义 LLM 对话引擎
NeMo Guardrails 中的 Colang 语言,是一种用于对话式人工智能的建模语言,能够定义护栏。它的目标是为用户提供一个可读可扩展的,使用自然语言定义或控制对话机器人的行为的语言。
Colang 语言已经作为 NeMo Guardrails 的内核来使用。Colang 语言像电影的编剧,用户和机器人是演员,通过 Colang 语言,可以定义用户的信息、机器人信息和 Flow,把机器话语和用户话语进行对话逻辑上的连接。
Colang 语言中常用的关键词包括 bot, break, continue, create, define 等,能够帮助开发快速上手使用,降低对话式 AI 领域的学习门槛。
NeMo Guardrails 与 Azure OpenAl 的结合使用
搭建 LLM 对话引擎
在上一期【比特熊充电栈】中,已经详细解读了在 Azure 中搭建 NeMo Guardrails 环境的步骤,包括申请 Azure 账号,开通 Azure Machine Learning 服务,安装 OpenAI、NeMo Guardrails,开通 Azure OpenAI 服务等。搭建完成后,才能将 NeMo Guardrails 与 Azure OpenAl 结合使用。
NeMo Guardrails 与 AzureOpenAl 结合使用,构建更加安全可靠的LLM对话引擎,还需要通过以下步骤进行操作:
✦ 导入 NeMo Guardrails 大模型护栏及 RailsConfig 护栏配置文件工具类;
✦ 从 langchain 中导入 Azure Chat OpenAI 工具类;
✦ 传入 Azure OpenAI 的 API-KEY、endpoint、deployment_name、对应的版本信息等关键参数,就可以实例化一个大模型;
✦ 调用 NeMo Guardrails 大模型中的 from_content 变量,读取 Colang_Config2 文件和 Yaml_Config 配置文件,就可以实例一个安全的聊天机器人 App;
✦ 调用 App 中的 generate_async 函数,输入用户的问题语句,机器人就会给出对应的回答。
NeMo Guardrails
自定义 LLM 对话引擎应用
NeMo Guardrails 除了支持 Azure OpenAI 外,还支持很多对话引擎大模型,包括 AI21labs、Cohere、Hugging Face、GPT4All 等。调用对话引擎大模型,首先要自定义一个大语言模型的 class:从 langchain 中导入 BaseLanguageModel,从 NeMo Guardrails 中导入 register_llm_provider,自定义大语言模型的 class 并注册。
以 Hugging Face 为例,调用对话引擎大模型的步骤如下:
✦ 创建并初始化一个构造函数,调用父类的构造函数来初始化这个类的实例;
✦ 然后指定大模型的 ID,调用 HuggingFacePipeline class 中的 from_model_id 函数,输入对应大模型 id,定义 device、task 和模型参数;
✦ 然后定义返回、自定义函数,以字符串的形式返回大语言模型的类型,在 langchain 中分别同步调用和异步调用自定义 LLM。
全部0条评论
快来发表一下你的评论吧 !