生成式AI初学者教程

 主页   资讯   文章   代码   电子书 

第七章:创建聊天应用

Building Generative AI-Powered Chat Applications

(点击该图片看本章导学视频)

通过之前的学习,我们了解了如何构建文本生成应用程序,接下来让我们看看聊天应用程序是如何实现的

聊天应用程序已融入我们的日常生活,提供的不仅仅是一种随意交谈的方式。 已经成为客户服务、技术支持甚至复杂的咨询系统不可或缺的一部分。 您可能已经从聊天应用程序获得了一些帮助。 随着我们将生成式人工智能等更先进的技术集成到这些平台中,复杂性随之增加,挑战也随之增加。

我们需要回答的一些问题是:

  • 构建应用程序 我们如何针对特定场景高效构建并无缝集成这些人工智能驱动的应用程序?
  • 有效监控 部署后,我们如何监控并确保应用程序在功能方面遵守负责任的人工智能六项原则?

随着我们进一步进入自动化和无缝人机交互的时代,了解生成式人工智能如何改变聊天应用程序的范围、深度和适应性变得至关重要。 本课程将研究支持这些复杂系统的架构的各个方面,深入研究针对特定场景进行微调的方法,并评估和确保负责任的人工智能部署相关的指标和注意事项。

本章概述

在本章中,您将学习到:

  • 有效构建和集成聊天应用程序的技术。
  • 如何对应用程序进行定制和微调。
  • 有效监控聊天应用程序的策略和注意事项。

学习目标

在完成本章的学习,您将能够:

  • 描述构建聊天应用程序并将其集成到现有系统中的注意事项。
  • 针对特定场景定制聊天应用程序。
  • 确定关键指标和注意事项,以有效监控和维护人工智能聊天应用程序的质量。
  • 确保聊天应用程序负责任地使用人工智能。

将生成式人工智能集成到聊天应用程序中

通过生成式人工智能提升聊天应用程序不仅是为了让它们变得更智能,也是为了让它们变得更聪明。 这是关于优化其架构、性能和用户界面以提供优质的用户体验。 这涉及研究架构基础、API 集成和用户界面注意事项。 本章旨在为您提供一个全面的路线图,用于导航这些复杂的环境,无论您是将它们插入现有系统还是将它们构建为独立平台。

读完本节后,您将具备高效构建和合并聊天应用程序所需的专业知识。

聊天机器人还是聊天应用程序?

在我们深入构建聊天应用程序之前,让我们将“传统聊天机器人”与“生成式人工智能驱动的人工智能”进行比较,它们具有不同的角色和功能。 传统聊天机器人的主要目的是自动执行特定的对话任务,例如回答常见问题或跟踪包裹。 它通常由基于规则的逻辑或复杂的人工智能算法控制。 相比之下,人工智能驱动的聊天应用程序是一个更加广泛的环境,旨在促进各种形式的数字通信,例如用户之间的文本、语音和视频聊天。 其定义特征是集成了生成式人工智能模型,该模型可以模拟细致入微的拟人对话,并根据各种输入和上下文提示生成响应。 生成式人工智能驱动的聊天应用程序可以参与开放领域的讨论,适应不断变化的对话环境,甚至产生创造性或复杂的对话。

下表概述了主要差异和相似之处,以帮助我们了解它们在数字通信中的独特作用。

传统聊天机器人 生成式人工智能驱动的人工智能
以任务为中心、基于预定义规则 情境感知
集成到大型的行业系统中 可以托管一个或多个聊天机器人
通过编程实现 结合生成式人工智能模型
专业相对固化的交互 能够进行更开放关于专业领域讨论

结合成熟的 SDK 和 API 构建生成式人工智能驱动的人工智能

在构建聊天应用程序时,重要的第一步是评估已有的内容。 基于多种原因,使用 SDK 和 API 构建聊天应用程序是一种有利的策略。 通过集成成熟的 SDK 和 API,可以战略性地定位您的应用程序,以实现长期成功,并解决可扩展性和维护问题。

  • 加快开发过程并减少开销:依靠预构建的功能而不是自己构建它们的昂贵过程,可以让您专注于您可能发现更重要的应用程序的其他方面,例如业务逻辑。
  • 更好的性能:从头开始构建功能时,您最终会问自己“它如何扩展?这个应用程序是否能够处理突然涌入的用户?” 维护功能好的 SDK 和 API 通常针对这些问题内置了解决方案。
  • 更容易维护:更新和改进更易于管理,因为大多数 API 和 SDK 在发布新版本时只需要更新库。
  • 获得尖端技术:利用经过微调和在广泛数据集上训练的模型为您的应用程序提供自然语言功能。

访问 SDK 或 API 的功能通常涉及获取使用所提供服务的许可,这通常是通过使用唯一 kwy 或身份验证 token 来实现的。 我们将使用 OpenAI Python library 来探索它是什么样子。 您也可以在本章的notebook 中自行尝试。

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

chat_completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Suggest two titles for an instructional lesson on chat applications for generative AI."}])

上面的示例使用 GPT-3.5 Turbo 模型来完成提示,但请注意,API 密钥是在执行此操作之前设置的。 如果未设置 key,您将收到以下错误。

AuthenticationError: No API key provided. You can set your API key in code using 'openai.api_key = <API-KEY>', or you can set the environment variable OPENAI_API_KEY=<API-KEY>). If your API key is stored in a file, you can point the openai module at it with 'openai.api_key_path = <PATH>'. You can generate API keys in the OpenAI web interface. See https://platform.openai.com/account/api-keys for details.

用户体验(UX)

一般用户体验原则适用于聊天应用程序,但由于涉及机器学习组件,这里有一些额外考虑因素,这就变得特别重要。

  • 解决模糊性的机制:生成式人工智能模型偶尔会生成模糊的答案。 如果用户遇到此问题,允许用户要求进行澄清可能会有所帮助。
  • 上下文保留:先进的生成式人工智能模型能够记住对话中的上下文,这可能是用户体验的必要资产。 赋予用户控制和管理上下文的能力可以改善用户体验,但会带来保留敏感用户信息的风险。 考虑这些信息的存储时间(例如引入保留策略)可以平衡上下文需求和隐私。
  • 个性化:人工智能模型具有学习和适应能力,为用户提供个性化体验。 通过用户个人资料等功能定制用户体验,不仅让用户感到亲切,而且还有助于他们得到特定答案,创造更高效、令人满意的交互。

个性化的一个例子是 OpenAI 的 ChatGPT 中的“自定义指令”设置。 它允许您提供有关您自己的信息,这些信息可能是您的提示的重要背景。 以下是自定义指令的示例。

Custom Instructions Settings in ChatGPT

“配置文件”提示 ChatGPT 在链接列表上创建课程计划。 请注意,ChatGPT 可以按照用户的特点获得更深入的课程计划。

A prompt in ChatGPT for a lesson plan about linked lists

微软的 LLMs 系统消息框架

微软指引 用于在 LLM 生成响应时编写有效的系统消息,分为 4 个区域:

  1. 定义模型的适用对象及其功能和限制。
  2. 定义模型的输出格式。
  3. 提供展示模型预期行为的具体示例。
  4. 提供额外的行为护栏。

辅助功能

无论用户是否有视觉、听觉、运动或认知障碍,设计良好的聊天应用程序都应该可供所有人使用。 以下列表详细列出了旨在增强各种用户障碍的可访问性的特定功能。

  • 针对视觉障碍的功能:高对比度主题和可调整大小的文本、屏幕阅读器兼容性。
  • 针对听觉障碍的功能:文本转语音和语音转文本功能、音频通知的视觉提示。
  • 针对运动障碍的功能:键盘导航支持、语音命令。
  • 认知障碍功能:简化的语言选项。

特定领域语言模型的定制和微调

想象一下,一个聊天应用程序可以理解您公司的行话并预测其用户群通常有的特定查询。 有几种方法值得一提:

  • 利用 DSL 模型。 DSL 代表领域特定语言。 您可以利用在特定领域训练的所谓 DSL 模型来了解其概念和场景。
  • 应用微调。 微调是使用特定数据进一步训练模型的过程。

定制:使用 DSL

利用特定于领域的语言模型(DSL 模型)可以通过提供专门的、上下文相关的交互来增强用户参与度。 它是一个经过训练或微调的模型,可以理解和生成与特定领域、行业或主题相关的文本。 使用 DSL 模型的选项多种多样,从头开始训练到通过 SDK 和 API 使用预先存在的模型。 另一种选择是微调,其中涉及采用现有的预训练模型并将其适应特定领域。

定制:应用微调

当预训练模型在专门领域或特定任务中达不到要求时,通常会考虑微调。

例如,医疗查询很复杂并且需要大量上下文。 当医疗专业人员诊断患者时,它会基于多种因素,例如生活方式或既往病史,甚至可能依赖最近的医学期刊来验证他们的诊断。 在这种微妙的场景中,通用的人工智能聊天应用程序不可能成为可靠的来源。

场景:医疗应用**

考虑一个聊天应用程序,旨在通过提供治疗指南、药物相互作用或最新研究结果的快速参考来帮助医生。

通用模型可能足以回答基本的医学问题或提供一般建议,但可能会遇到以下问题:

  • 高度具体或复杂的案例。 例如,神经科医生可能会询问应用程序:“目前治疗儿科患者耐药性癫痫的最佳实践是什么?”
  • 缺乏最新进展。 通用模型可能很难提供包含神经学和药理学最新进展的当前答案。

在此类情况下,使用专门的医疗数据集对模型进行微调可以显着提高其更准确、更可靠地处理这些复杂的医疗查询的能力。 这需要访问大型且相关的数据集,这些数据集代表了需要解决的特定领域的挑战和问题。

高质量 AI 驱动的聊天体验的注意事项

本节概述了“高质量”聊天应用程序的标准,其中包括捕获可操作的指标以及遵守负责任地利用人工智能技术的框架。

关键指标

为了保持应用程序的高质量性能,跟踪关键指标和注意事项至关重要。 这些测量不仅可以确保应用程序的功能,还可以评估人工智能模型和用户体验的质量。 下面的列表涵盖了需要考虑的基本、人工智能和用户体验指标。

指标 定义 开发人员需要
正常运行时间 衡量应用程序运行和用户访问的时间。 您将如何最大限度地减少停机时间?
响应时间 应用程序回复用户查询所花费的时间。 如何优化查询处理以缩短响应时间?
精确 真阳性预测占阳性预测总数的比率 您将如何验证模型的精度?
召回率(灵敏度) 真阳性预测与实际阳性数量的比率 您将如何衡量和提高召回率?
F1 得分 精确率和召回率的调和平均值,平衡两者之间的权衡。 您的目标 F1 分数是多少? 您将如何平衡精确度和召回率?
困惑 衡量模型预测的概率分布与数据实际分布的吻合程度。 您将如何最大程度地减少困惑?
用户满意度指标 衡量用户对应用程序的感知。 通常通过调查捕获。 您多久收集一次用户反馈? 在此基础上你将如何适应?
错误率 模型在理解或输出方面出错的比率。 您采取了哪些策略来降低错误率?
再培训周期 更新模型以纳入新数据和见解的频率。 您多久重新训练一次模型? 是什么触发了再培训周期?
异常检测 用于识别不符合预期行为的异常模式的工具和技术。 您将如何应对异常情况?

在聊天应用程序中实施负责任的人工智能实践

Microsoft 的 Responsible AI 方法确定了指导 AI 开发和使用的六项原则。 以下是聊天开发人员应该考虑的原则、定义以及聊天开发人员应该考虑的事项以及为什么他们应该认真对待它们。

原则 微软的定义 聊天开发人员的注意事项 为什么它很重要
公平 人工智能系统应该公平对待所有人。 确保聊天应用程序不会根据用户数据进行歧视。 在用户之间建立信任和包容性; 避免法律后果。
可靠性和安全性 人工智能系统应该可靠、安全地运行。 实施测试和故障保护以最大限度地减少错误和风险。 确保用户满意度并防止潜在危害。
隐私与安全 人工智能系统应该安全并尊重隐私。 实施强有力的加密和数据保护措施。 保护敏感的用户数据并遵守隐私法。
包容性 人工智能系统应该赋予每个人力量并吸引人们。 设计适合不同受众且易于使用的 UI/UX。 确保更广泛的人可以有效地使用该应用程序。
透明度 人工智能系统应该是可以理解的。 为人工智能响应提供清晰的文档和推理。 如果用户能够理解决策的制定方式,他们就更有可能信任系统。
问责制 人们应该对人工智能系统负责。 建立清晰的审核和改进人工智能决策的流程。 允许持续改进并在出现错误时采取纠正措施。

作业

请查看作业,它将引导您完成一系列练习,从运行第一个聊天提示到对文本进行分类和总结等等。

Great Work! Continue the Journey

Want to learn more about creating chat applications with Generative AI? Go to the continued learning page to find other great resources on this topic.

Head over to Lesson 8 to see how you can start building search applications!

继续学习

想要了解有关创建聊天应用的更多信息? 转至进阶学习的页面 查找有关此主章节的其他学习资源。

前往第八章,我们将学习构建搜索应用程序