Press "Enter" to skip to content

微软生成式AI入门课程07 —— 构建生成式AI聊天应用

Building Generative AI-Powered Chat Applications

现在我们已经看到了如何构建文本生成应用程序,让我们来看看聊天应用程序。

聊天应用程序已经融入到我们的日常生活中,不仅仅是提供一种随意对话的方式。它们是客户服务、技术支持甚至是复杂的咨询系统的重要组成部分。很可能不久前,你就通过一个聊天应用程序得到了一些帮助。随着我们将更先进的技术如生成式AI集成到这些平台中,复杂性增加了,挑战也增加了。

我们需要回答一些问题,例如:

  • 构建应用程序。我们如何高效地构建和无缝集成这些用于特定用例的AI驱动应用程序?
  • 监控。一旦部署,我们如何监控和确保应用程序在功能和遵守负责任AI的六大原则方面的最高质量水平?

随着我们进一步进入一个由自动化和无缝人机交互所定义的时代,了解生成式AI如何改变聊天应用程序的范围、深度和适应能力变得至关重要。本课程将研究支持这些复杂系统的体系结构方面,深入探讨为特定领域任务进行微调的方法,并评估与确保负责任AI部署相关的指标和考虑因素。

介绍

本课程涵盖以下内容:

  • 高效构建和集成聊天应用的技术。
  • 如何为应用程序应用自定义和微调。
  • 有效监控聊天应用的策略和考虑因素。

学习目标

通过本课程,你将能够:

  • 描述构建和集成聊天应用到现有系统的考虑因素。
  • 为特定用例自定义聊天应用。
  • 识别关键指标和考虑因素,以有效监控和维护基于AI的聊天应用的质量。
  • 确保聊天应用负责任地利用AI。

将生成式AI集成到聊天应用中

通过生成式AI提升聊天应用的不仅仅是让它们更智能,而是优化它们的架构、性能和用户界面,提供高质量的用户体验。这涉及到研究架构基础、API集成和用户界面的考虑因素。本节旨在为你提供一个全面的路线图,帮助你在将它们插入现有系统或构建它们为独立平台时,能够有效地构建和整合聊天应用。

在本节结束时,你将掌握构建和整合聊天应用所需的专业知识。

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

在我们深入研究构建聊天应用之前,让我们对比“聊天机器人”和“AI驱动的聊天应用”,这两者在角色和功能上是有区别的。聊天机器人的主要目的是自动完成特定的对话任务,比如回答常见问题或跟踪包裹。它通常由基于规则的逻辑或复杂的AI算法控制。相反,AI驱动的聊天应用是一个更广泛的环境,旨在促进人与人之间的各种数字通信,比如文本、语音和视频聊天。它的特点是集成了一个生成式AI模型,模拟细腻的、类似人类的对话,并根据各种输入和上下文提示生成响应。生成式AI驱动的聊天应用可以进行开放领域的讨论,适应不断变化的对话上下文,甚至产生创造性或复杂的对话。

下表概述了它们之间的主要区别和相似之处,以帮助我们了解它们在数字通信中的独特角色。

聊天机器人生成式AI驱动的聊天应用
任务导向和基于规则上下文感知
通常集成到较大的系统中可能托管一个或多个聊天机器人
限制于预定义函数集成生成式AI模型
专注于特定和结构化的交互能够进行开放领域的讨论

利用SDK和API利用预构建功能

当构建聊天应用时,一个很好的第一步是评估现有的资源。使用SDK和API构建聊天应用是一个有利的策略,原因如下。通过集成文档完善的SDK和API,你可以将应用程序战略地定位为长期成功,并解决可扩展性和维护问题。

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

访问SDK或API的功能通常涉及获取使用提供服务的权限,通常通过使用唯一密钥或身份验证令牌来实现。我们将使用OpenAI Python库来探索这是什么样子。你也可以尝试在以下链接中查看有关OpenAI的笔记本或Azure OpenAI服务的笔记本的内容。

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": "为生成式AI的聊天应用提建议一个指导性课程的两个标题。"}])

上面的示例使用GPT-3.5 Turbo模型来完成提示,但请注意在这之前要设置API密钥。如果你没有设置密钥,将会收到以下错误。

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)

一般的用户体验原则适用于聊天应用,但由于涉及到机器学习组件,以下是一些特别重要的考虑因素。

  • 解决歧义的机制:生成式AI模型偶尔会产生模棱两可的答案。提供让用户要求澄清的功能,可以帮助解决这个问题。
  • 保留上下文:高级生成式AI模型有记住对话上下文的能力,这对用户体验是必要的。给用户控制和管理上下文的能力,可以改善用户体验,但也会引入保留敏感用户信息的风险。可以考虑制定保留策略等措施来平衡上下文需求与隐私需求。
  • 个性化:借助学习和适应能力,AI模型为用户提供个性化体验。通过用户配置文件等功能个性化用户体验,不仅使用户感到被理解,还有助于他们寻找特定答案,创造更高效和令人满意的交互。

个性化的一个例子是OpenAI的ChatGPT中的“自定义指令”设置。它允许你提供与提问上下文相关的个人信息。以下是一个自定义指令的例子。

这个“个人信息”提示ChatGPT创建一个关于链表的课程计划。注意ChatGPT会考虑用户可能希望基于她的经验获得更详细的课程计划。

Microsoft用于大型语言模型的系统消息框架

Microsoft提供了指导原则,用于在从LLM生成响应时编写有效的系统消息,可以分为4个方面:

  1. 定义模型适用于谁,以及其能力和限制。
  2. 定义模型的输出格式。
  3. 提供演示模型预期行为的具体示例。
  4. 提供额外的行为规范。

可访问性

良好设计的聊天应用应该适用于所有用户,无论是视觉、听力、运动还是认知障碍。以下列表列出了针对不同用户障碍增强可访问性的特定功能。

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

为特定领域语言模型进行自定义和微调

想象一下一个能够理解你公司行话并预测其用户常见查询的聊天应用。我们可以提到两种值得一提的方法:

  • 利用DSL模型。DSL代表特定领域语言(Domain Specific Language)。你可以利用一个针对特定领域进行训练的DSL模型来理解其概念和场景。
  • 应用微调。微调是在现有预训练模型基础上进一步训练模型以适应特定领域的过程。

自定义:使用DSL

利用特定领域语言模型(DSL模型)可以通过提供专业的、上下文相关的交互,增强用户参与度。它是一个经过训练或微调以理解和生成与特定领域、行业或主题相关的文本的模型。使用DSL模型的选项可以从从头开始训练,到通过SDKs和API使用现有的模型各不相同。另一个选择是微调,它涉及采用现有预训练模型,针对特定领域进行调整。

自定义:应用微调

当预训练模型在专业领域或特定任务上表现不佳时,通常会考虑应用微调。

例如,医学查询是复杂的,需要很多上下文。当医生基于诸多因素(如生活方式或现有疾病)做出诊断时,可能会依赖于最近的医学期刊来验证他们的诊断。在这种复杂的医学情景中,普通的AI聊天应用程序可能不是可靠的信息来源。

场景: 医疗应用

考虑一个旨在通过提供治疗准则、药物相互作用或最新研究结果快速提供参考的聊天应用,用于辅助医疗从业人员。

一般用途模型可能能够回答基本医学问题或提供一般建议,但在下面的情况下可能会遇到困难:

  • 高度具体或复杂的情况。例如,神经病学专家可能会问应用:“目前在儿科患者中管理耐药性癫痫的最佳实践是什么?”
  • 缺乏最新进展。一般用途模型可能难以提供结合了神经学和药理学最新进展的当前答案。

在这样的情况下,将模型通过专业医学数据集进行微调,可以显著提高其在处理这些复杂的医学查询时的准确性和可靠性。这需要访问一个大而相关的数据集,该数据集代表了需要处理的特定领域的挑战和问题。

高质量基于AI的聊天体验的考虑因素

本节概述了“高质量”聊天应用的标准,包括捕捉可操作指标和遵守以负责任地利用AI技术为基础的框架。

关键指标

为了保持应用程序的高质量性能,重要的是跟踪关键指标和考虑因素。这些指标不仅确保应用程序的功能正常,还评估AI模型的质量和用户体验的质量。下面是一个包含应考虑的基本指标、AI指标和用户体验指标的列表。

指标定义聊天应用开发者的考虑因素
正常运行时间应用程序可操作并对用户可访问的时间。你将如何减少停机时间?
响应时间应用程序回复用户查询的时间。你如何优化查询处理以提高响应时间?
准确率真实正例预测与总正例预测的比率你将如何验证模型的准确率?
召回率(敏感性)真实正例预测与实际正例数目的比率你将如何测量和提高召回率?
F1分数精确率和召回率的调和平均,平衡了两者之间的权衡。你的目标F1分数是多少?你如何平衡精确率和召回率?
困惑度衡量模型预测的概率分布与实际数据分布一致程度。你将如何最小化困惑度?
用户满意度指标衡量用户对应用程序的体验感知。通常通过调查收集。你会多频繁收集用户反馈?你如何根据反馈进行调整?
错误率模型在理解或输出方面出错的比率。你有哪些措施来降低错误率?
重新训练周期更新模型以纳入新数据和见解的频率。你多久训练一次模型?什么触发重新训练周期?
异常检测识别不符合预期行为的异常模式的工具和技术。你将如何对异常做出响应?

在聊天应用中实施负责任AI实践

Microsoft对负责任AI的方法确认了六个原则,应指导AI的开发和使用。以下是这些原则,以及聊天开发者应该考虑的事项和为什么要认真对待它们。

原则Microsoft的定义聊天应用开发者的考虑因素为什么重要
公正性AI系统应公正对待所有人。确保聊天应用不会因为用户数据而歧视。建立用户之间的信任和一体化;避免法律风险。
可靠性和安全性AI系统应可靠、安全地运行。实施测试和故障保护措施,以减少错误和风险。确保用户满意度,防止潜在风险和损害。
隐私权与安全性AI系统应安全并尊重隐私。实施强大的加密和数据保护措施。保护敏感用户数据,遵守隐私法律。
普惠性AI系统应赋予每个人力量,并吸引人们。设计适用于多样化受众的易用和可访问的UI/UX。确保更广泛的人群可以有效地使用应用程序。
透明度AI系统应可理解。提供有关AI响应的清晰文档和推理。如果用户能理解决策原则,他们更有可能信任系统。
可追究性人们应对AI系统负责。建立明确的审核和改进AI决策的流程。在犯错的情况下,进行持续改进和纠正措施。

干得好!继续前进

完成本课程后,可以查看我们的生成式AI学习集合,继续提升你的生成式AI知识!

前往第8课,了解如何开始构建搜索应用

本文档由GeekAI文档翻译服务自动翻译完成:

微信扫描立刻体验极客翻译
发表回复