使用插件为聊天机器人创建自定义技能
使用插件创建自定义技能的聊天机器人
对话式人工智能领域迅速发展,ChatGPT、Claude和BARD等大型语言模型展示了令人印象深刻的自然语言处理能力。随着聊天机器人的能力越来越强大,企业渴望将其用于客户支持、文档生成、市场调研等方面。然而,现成的聊天机器人在行业特定知识、与业务系统的集成以及响应个性化方面存在局限性。
可以通过增加特定功能来增强现成的聊天机器人,这些功能可以执行专门的任务,并可以协同工作以解决手头的问题。这些功能可以作为插件实现,可以在大型语言模型的帮助下调用。通过采用插件框架,可以利用基础模型来编排和调用必要的插件。
这些插件不仅可以实现与数据库、内容管理系统和API驱动服务等外部数据源的无缝集成,还可以实现行业特定的问答、用户上下文、情感分析和其他增强功能的添加。通过适当的插件框架和支持的插件构建工具,可以将多个技能组合成一个强大的定制对话应用程序。
正确的架构允许插件通过抽象底层的AI引擎来为聊天机器人投资做好未来准备。通过使用更好的基础模型升级核心,已经开发的技能可以得到保留。这样,企业可以最大限度地回报其在对话式人工智能上的投资。随着AI的进展,可以将基础模型作为平台提供强大的定制体验。让我们来看一下如何构建一个插件构建框架的方法。
- CassIO 受开放AI启发的最佳生成AI库
- 使用Amazon SageMaker异步端点优化Amazon SageMaker JumpStart基础模型的部署成本
- 如何使用AWS Glue和Amazon SageMaker来预测HVAC故障
构建插件构建框架的考虑因素
聊天机器人核心通过BERT、GPT-3等大型语言模型提供基本的自然语言处理和推理能力,而插件提供额外的技能、集成外部数据源、编辑响应等。插件框架作为聊天机器人核心和插件之间的中间层,提供接口供插件注册和交互,以扩展应用程序的能力。
框架的一些主要职责包括:
- 允许插件通过简单的API进行注册,例如
register_plugin(PluginClass)
- 维护活动插件的注册表及其提供的技能
- 将用户输入通过插件流水线进行路由,以收集预处理和后处理
- 针对特定输入调用中断插件,以覆盖默认处理
- 管理组合多个技能,如问答、推荐、搜索等
- 封装插件与聊天机器人核心的关系,升级不会相互影响
插件可以在不同的扩展点上连接到框架。这使得插件能够以模块化和可定制的方式扩展聊天机器人。框架抽象了复杂性。
插件定义
这是一个插件类的样本设计。由于插件调用将由大型语言模型进行编排,因此有必要描述输入格式和插件的属性,以便大型语言模型以正确的输入调用插件。定义了一个基本的插件类作为模板,插件将作为子类。下面的示例以“天气插件”为例。其他信息(例如版本发布状态(实验性、测试版等))可以作为子类的一部分或基类的属性来捕获。
一旦定义了插件,框架就需要维护一个技能的注册表以及提供这些技能的插件。需要定义一个插件注册表,以便注册所有受ChatBot支持的插件。实验性的插件可以放置在单独的文件夹中,或者可以在与插件相关的元数据中进行标识。
下一步是初始化和注册插件。下面的示例代码演示了如何完成这些步骤。
执行流水线
调用正确的插件需要一些思考过程,如果做得正确,将使框架具有可扩展性。一种方法是将执行过程设计为具有不同阶段的流水线。插件框架内的执行流程的不同阶段可以描述如下。
- 预处理:插件可以在将用户输入发送到核心之前修改或丰富用户输入。适用于规范化、拼写纠正等。
- 处理:这个阶段可以通过大型语言模型的帮助来驱动和编排。该阶段涉及提取用户输入的意图,并确定执行适当的插件以检索答案。这将是一个迭代的过程,使用前几次迭代的响应来确定是否可以完整回答用户输入。如果不能,将调用最合适的插件,该插件最有可能填补答案中缺失的部分。
- 后处理:插件可以在返回给用户之前修改聊天机器人的响应。这允许添加变化性。
- 中断:普通的执行流水线可以被中断,让人类或其他插件接管某些类型的输入。如果对话的方向不正确,用户的语气趋向于消极,这可能是有用的。
下面是一个可以用来构建插件框架执行流程的示例代码:
处理可能导致无限循环的情况非常重要。可以添加额外的保护措施,仅允许使用一定数量的插件来回答特定用户查询。这不仅可以保护聊天机器人免受可能没有答案的复杂查询的影响,还可以提高性能。
可以通过采用提示工程技术来实现对大型语言模型类上调用的方法。例如,当实现select_best_plugin
方法时,可以选择传递带有描述、示例、用户输入和正确提示指令的插件列表,以选择最佳回答用户输入的插件。
检查答案是否完整,并迭代地利用不同的插件来完全回答用户查询,这是基于“思维链”提示技术的。
示例插件场景
集成日历 API 解决了聊天机器人的一个主要局限性 – 用户日历的不可见性,无法提供日程安排支持。通过为 Google 和 Office365 等日历平台上的聊天机器人开发插件,企业可以启用提高生产力的功能。员工可以检查可用性,自动安排会议,接收提醒,并管理旅行计划。这为企业情况、销售团队、高级助理、设施经理和其他需要有效管理系统的人员创造了巨大的价值。
当允许聊天机器人与用户的日历进行交互时的对话示例:
用户:“今天的日程安排是什么?”
框架调用日历插件。
插件:从 Google 日历 API 获取用户的日历事件,并返回“你今天有一个团队会议,时间是下午 2 点到 3 点,晚上 7 点还有和朋友的晚餐。”
用户:“在下周三上午 10 点和约翰安排一个会议。”
框架使用新的用户输入调用日历插件。
插件:使用日历 API 验证可用性并确认约会,返回“你和约翰安排在下周三上午十点。”
任务和领域特定的问答插件解决了通用聊天机器人的另一个不足之处 – 缺乏对关键技术和术语的深入了解。保险、医疗、法律和金融等领域拥有复杂的业务模型和法规。开发具有这些领域专业知识的问答插件为高级人员培训提供了一种更便宜的选择。专业主题专家可以全天候为客户提供服务。通过将常见问题与书面路线相结合,聊天机器人成为客户支持的领域顾问。这使得依赖专业知识的公司能够提供更好的个性化服务。
当允许聊天机器人回答领域特定问题时的对话示例:
用户:“如何申请保险赔付的流程是什么?”
框架将输入传递给保险问答插件。
插件:在知识库中查找问题以找到答案,并返回“以下是申请保险赔付的步骤…”
插件允许您利用外部知识库并发挥聊天机器人的全部潜力。即使是更高级的模型也有基于训练数据的知识限制。将聊天机器人与知识模型和数据库相结合,可以创造一个几乎无限的信息存储。公司可以进行市场研究,改善客户支持,并更好地管理知识。通过在公司维基、金融数据源或公共知识图谱等外部知识库上构建插件,聊天机器人可以获得世界范围内丰富的知识。这有助于克服数据障碍,使聊天机器人更加先进。
当将聊天机器人与高级结构化数据连接时的对话示例:
用户:“加拿大的人口是多少?”
框架将问题传递给知识库插件。
插件:在数据库中查找相关事实,并返回“加拿大的人口约为 3800 万。”
下面是一个提供行业/领域特定问答能力的插件的示例代码:
构建插件框架的其他好处
除了使聊天机器人具备领域知识和其他技能的明显好处外,还可以实现以下好处:
- 插件可以通过 API 访问实时数据,如日历、物联网系统、交易记录和实时数据源。
- 插件可以为聊天机器人的响应添加更多的变化性、个性化和上下文意识。
- 像本文描述的插件框架一样,可以快速尝试多种技能,如问答、推荐、搜索等。
- 正确实现的插件通过在本地处理数据并对发送给第三方的任何用户数据进行匿名化,确保用户隐私。
- 插件封装了特定的技能和知识,与聊天机器人的基本模型解耦,使得随着时间推移更容易升级到更新的聊天机器人。
- 与改进的基础大型语言模型相结合,已经构建的插件变得“更智能”,避免了重复工作。
结论
通过增加领域知识、整合外部API和定制响应,将聊天机器人的基础大型语言模型功能扩展,一个强大的聊天机器人插件框架可以提供灵活性和可扩展性的巨大好处。与僵化、庞大的框架相比,插件使聊天机器人能够开发新的技能。选择合适的架构是正确组织这些技能的关键。设计良好的插件构建框架充当中间件层,为插件提供扩展点,使其能够适应聊天机器人基础模型的独立性。这样可以实现稳定的持续改进,同时支持快速迭代。随着新的更高级的聊天机器人模型的出现,现有的插件可以与下一代基础模型无缝集成。升级后的技能所积累的商业价值将得以保留,而不会丧失。因此,设计一个强大的插件框架是生产聊天机器人部署的重要最佳实践之一。通过采用本文中概述的原则,企业可以有效地将聊天机器人适应当前和未来的需求。