III · 构建 AI 应用

构建生成式 AI 驱动的聊天应用程序

微软《Generative AI for Beginners》 · 第 07 课 · 中文翻译 · 本地镜像

构建生成式 AI 驱动的聊天应用程序

(点击上方图片观看本课视频)

既然我们已经了解了如何构建文本生成应用,我们现在来看看聊天应用。

聊天应用已经融入我们的日常生活,它们不仅仅是随意交谈的工具。它们是客户服务、技术支持甚至复杂咨询系统的重要组成部分。很可能你不久前就从某个聊天应用中获得过帮助。随着我们将生成式 AI 等更先进技术整合进这些平台,复杂性和挑战也随之增加。

我们需要解答的一些问题包括:

随着自动化和无缝人机交互时代的深入,理解生成式 AI 如何改变聊天应用的范围、深度和适应性变得尤为重要。本课将探讨支持这些复杂系统的架构方面,深入研究针对特定领域任务的微调方法,并评估确保负责任 AI 部署所需的指标和考量。

介绍

本课涵盖:

学习目标

完成本课后,你将能够:

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

通过生成式 AI 提升聊天应用不仅仅是让它们更智能;更是优化其架构、性能和用户界面,从而提供优质的用户体验。这涉及调查架构基础、API 集成和用户界面考虑因素。本节旨在为你提供一条全面的路线图,帮助你驾驭这些复杂领域,无论是将它们插入现有系统,还是构建独立平台。

本节结束时,你将具备高效构建和整合聊天应用的专业知识。

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

在深入构建聊天应用之前,我们先比较“聊天机器人”和“AI 驱动的聊天应用”,它们的角色和功能不同。聊天机器人的主要目的是自动化特定对话任务,如回答常见问题或追踪包裹,通常由基于规则的逻辑或复杂的 AI 算法驱动。相比之下,AI 驱动的聊天应用是一个更广阔的环境,旨在促进各种数字交流形式,比如人类用户间的文本、语音和视频聊天。其核心特征是集成了生成式 AI 模型,能够模拟细致入微、类人对话,根据多种输入和上下文线索生成回复。生成式 AI 驱动的聊天应用能够进行开放域讨论,适应不断变化的对话环境,甚至产生创造性或复杂的对话。

下表概述了关键差异与相似点,帮助我们理解它们在数字交流中的独特角色。

聊天机器人 生成式 AI 驱动聊天应用
任务导向且基于规则 具备上下文感知
常集成于更大系统 可承载一个或多个聊天机器人
限于预设功能 集成生成式 AI 模型
专业且结构化的交互 能够进行开放域讨论

利用预构建功能的 SDK 和 API

构建聊天应用时,一个很好的第一步是评估已有的资源。利用 SDK 和 API 构建聊天应用是一种很有优势的策略,原因有多方面。通过集成文档完善的 SDK 和 API,你的应用在长期成功、可扩展性和维护方面都得到了战略保障。

使用 SDK 或 API 功能通常涉及获得使用服务的权限,通常通过唯一密钥或认证令牌实现。我们将使用 OpenAI Python 库来演示此过程。你也可以在下面本课的OpenAI 笔记本Azure OpenAI 服务笔记本中自行尝试。

import os
from openai import OpenAI

API_KEY = os.getenv("OPENAI_API_KEY","")

client = OpenAI(
    api_key=API_KEY
    )

response = client.responses.create(model="gpt-4o-mini", input="Suggest two titles for an instructional lesson on chat applications for generative AI.", store=False)
print(response.output_text)

上例使用 GPT-4o mini 模型和 Responses API 来完成提示,但注意 API 密钥需先设置,否则会报错。

用户体验 (UX)

聊天应用适用一般 UX 原则,但以下是由于涉及机器学习组件而变得尤为重要的额外考虑。

OpenAI ChatGPT 的“自定义指令”设置就是个性化的例子。它允许你提供关于自己的信息,为提示提供重要上下文。下面是自定义指令的示例。

ChatGPT 自定义指令设置

这个“档案”促使 ChatGPT 制定一个关于链表的课程计划。请注意,ChatGPT 考虑到用户可能基于经验需要更深入的课程计划。

ChatGPT 关于链表课程计划的提示

微软的大型语言模型系统消息框架

微软提供了编写有效系统消息的指导,用于生成 LLM 响应,分为四个方面:

  1. 定义模型的受众,以及其能力和限制。
  2. 定义模型的输出格式。
  3. 提供展示模型预期行为的具体示例。
  4. 提供额外的行为边界。

无障碍设计

无论用户有视觉、听觉、运动或认知障碍,设计良好的聊天应用都应对所有人可用。以下清单细分了针对不同用户障碍的无障碍功能。

定制与微调领域特定语言模型

想象一个能理解你公司术语并预判用户常见查询的聊天应用。有几种值得提及的方法:

定制:使用 DSL

利用领域特定语言模型(DSL 模型)通过提供专业且语境相关的交互,可以增强用户参与度。该模型经过训练或微调,能理解并生成与特定领域、行业或主题相关的文本。使用 DSL 模型的方式多样,从从零训练,到通过 SDK 和 API 使用现有模型。另一种方式是微调,即拿现有预训练模型针对特定领域进行调整。

定制:应用微调

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

例如,医学查询复杂且需大量上下文。医生诊断患者时会考虑生活习惯、既往病史,甚至最新医学期刊以验证诊断。在这样的复杂情境中,通用 AI 聊天应用难以成为可靠来源。

场景案例:医疗应用

设想一个聊天应用,旨在辅助医疗专家快速查询治疗指南、药物相互作用或最新研究成果。

通用模型或许足以回答基础医学问题或给出一般建议,但可能难以应对以下情况:

在这种情况下,使用专业医疗数据集对模型进行微调,可以显著提升其对复杂医学问题的准确性和可靠性。这需要获得大量相关数据集,以代表领域特有的挑战和问题。

高质量 AI 驱动聊天体验的考量

本节概述“高质量”聊天应用的标准,包括捕获可操作指标和遵循负责任利用 AI 技术的框架。

关键指标

为维持应用高性能,关键指标和考量必须持续跟踪。这些指标不仅确保应用功能,还评估 AI 模型和用户体验质量。下面列表涵盖基础、AI 和用户体验指标。

指标 定义 聊天开发者的考量
正常运行时间 (Uptime) 测量应用可用且用户可访问的时间。 如何最大限度减少停机时间?
响应时间 (Response Time) 应用回复用户查询所需时间。 如何优化查询处理以提升响应速度?
准确率 (Precision) 真阳性预测占所有正预测的比例。 如何验证你的模型准确率?
召回率 (Recall/灵敏度) 真阳性预测占实际正例的比例。 如何测量并提升召回率?
F1 分数 准确率和召回率的调和平均,平衡两者权衡。 你的目标 F1 分数是多少?如何平衡准确率和召回率?
困惑度 (Perplexity) 衡量模型预测的概率分布与数据实际分布的匹配程度。 如何降低困惑度?
用户满意度指标 测量用户对应用的感知,通常通过调查获取。 多久收集一次用户反馈?如何根据反馈调整?
错误率 (Error Rate) 模型理解或输出错误的频率。 有哪些策略降低错误率?
再训练周期 (Retraining Cycles) 模型更新频率,以纳入新数据和洞见。 你多久再训练一次模型?什么情况下触发再训练?

| 异常检测 | 用于识别不符合预期行为的异常模式的工具和技术。 | 你将如何应对异常? |

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

微软关于负责任 AI 的方法确定了六条应指导 AI 开发和使用的原则。以下是这些原则、它们的定义,以及聊天开发者应考虑的事项及其重要性。

原则 微软定义 聊天开发者的考虑事项 重要性说明
公平 AI 系统应公平对待所有人。 确保聊天应用不会基于用户数据进行歧视。 建立用户信任和包容性;避免法律风险。
可靠性与安全 AI 系统应可靠且安全地运行。 实施测试和故障安全机制以减少错误和风险。 确保用户满意度并防止潜在伤害。
隐私与安全 AI 系统应安全且尊重隐私。 实施强加密和数据保护措施。 保护敏感用户数据,遵守隐私法律。
包容性 AI 系统应赋能每个人并促进参与。 设计无障碍且易用的用户界面/用户体验,适应多样化用户群体。 确保更广泛的人群能够有效地使用该应用。
透明性 AI 系统应可理解。 提供清晰的文档和 AI 响应的推理说明。 如果用户能理解决策过程,更可能信任系统。
问责制 人们应对 AI 系统负责。 建立明确的审计和改进 AI 决策的流程。 支持持续改进和在出错时采取纠正措施。

任务

参见任务。它将带你完成一系列练习,从运行你的第一个聊天提示,到文本分类和摘要等。注意,任务提供了多种编程语言版本!

干得好!继续前进

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

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


免责声明: 本文件由 AI 翻译服务 Co-op Translator 翻译完成。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。