原文出处:Building Generative AI-Powered Chat Applications 原作者:Microsoft · 许可证:MIT License 中文译本由诸葛AI学院整理,仅供学习参考,版权归原作者与微软所有。
(译文按资料库规范不保留图片;原文开头是一张课程横幅图,点开为本课视频。)
前面已经学过怎么做文本生成应用,现在来看聊天应用。
聊天应用早就融入了我们的日常,早已超出闲聊工具的范围,成了客服、技术支持乃至专业咨询系统的一部分。不久前你可能就从某个聊天应用那里得到过帮助。随着生成式 AI 这类先进技术接入这些平台,系统的复杂度上去了,挑战也跟着上来。
有几个问题必须先想清楚:
- 怎么构建应用。针对具体使用场景,如何高效构建这类 AI 应用,并把它们无缝集成进去?
- 怎么监控。应用上线之后,如何监控和保证它始终处于高质量状态?这里的质量有两层:功能本身,以及是否遵守负责任的 AI 六项原则。
我们正快步走进一个自动化、人机无缝交互的时代,理解生成式 AI 如何改变聊天应用的广度、深度和适应性,变得越发重要。本课会拆解支撑这类系统的架构,讨论面向特定领域的微调方法,并评估落地负责任的 AI 时该看哪些指标、该注意什么。
引言
本课涵盖:
- 高效构建和集成聊天应用的技术。
- 如何对应用做定制化和微调。
- 有效监控聊天应用的策略与考量。
学习目标
学完本课,你将能够:
- 说清楚把聊天应用集成进已有系统时需要考虑什么。
- 针对具体使用场景定制聊天应用。
- 找出关键指标和考量,监控并维护 AI 聊天应用的质量。
- 让聊天应用负责任地使用 AI。
把生成式 AI 集成进聊天应用
用生成式 AI 升级聊天应用,光让它"更聪明"还远远不够。架构、性能、用户界面都得优化,最终交出高质量的用户体验。这就要研究架构基础、API(应用程序编程接口)集成和界面设计。本节无论你是要接入已有系统,还是做成独立平台,都给你一张覆盖这些领域的路线图。
读完本节,你就能高效地搭建和集成聊天应用。
聊天机器人还是聊天应用?
动手做聊天应用之前,先把"聊天机器人"(chatbot)和"AI 驱动的聊天应用"区分开,两者扮演的角色和承担的功能不一样。
聊天机器人的主要任务是自动化完成特定的对话工作,比如回答常见问题、查询快递进度。它通常由规则逻辑或者复杂的 AI 算法驱动。AI 驱动的聊天应用则是一个大得多的环境,支撑文字、语音、视频等多种数字交流,人在其中也能互相聊天。它的标志是接入了生成式 AI 模型:模型能模拟细腻、接近真人的对话,依据大量多样的输入和上下文线索生成回复。这类应用可以聊开放话题,能跟上不断变化的对话语境,甚至能产出有创造性、有复杂度的对话内容。
下面这张表列出两者的关键差异和共同点,帮你看清它们在数字交流中各自的位置。
| 聊天机器人 | 生成式 AI 驱动的聊天应用 |
|---|---|
| 聚焦特定任务,基于规则 | 能感知上下文 |
| 常作为子系统接入更大的系统 | 可以承载一个或多个聊天机器人 |
| 功能局限于预先编程的部分 | 内嵌生成式 AI 模型 |
| 交互专业、结构化 | 能进行开放领域讨论 |
用 SDK 和 API 借力现成功能
做聊天应用,第一步是看看市面上已经有什么。用 SDK(软件开发工具包)和 API 来搭应用,好处很多。接入文档完善的 SDK 和 API,等于为应用的长期发展做好布局,扩展性和维护上的后顾之忧提前解决。
- 加快开发,减少杂务:不用从零造轮子,你可以把精力放在应用里更要紧的部分,比如业务逻辑。
- 性能更好:自己从头造功能,迟早会琢磨"它能扩展吗?用户突然涌进来扛得住吗?"维护良好的 SDK 和 API 通常自带这些问题的答案。
- 维护更省心:新版本发布时,多数 API 和 SDK 只要升级一下库就行,更新和改进都好管理。
- 用上前沿技术:接入经过大规模数据集训练和微调的模型,你的应用就有了自然语言能力。
调用 SDK 或 API 的功能,一般要先拿到服务使用许可,通常靠一个专属密钥或认证令牌(token)。我们用 OpenAI 的 Python 库来看看这是什么样。你也可以自己跑一跑本课的练习笔记本:OpenAI 版、Azure OpenAI 服务版。
```python 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-5-mini", input="Suggest two titles for an instructional lesson on chat applications for generative AI.", store=False) print(response.output_text) ```
上面的例子用 GPT-5 mini 模型,通过 Responses API 完成提示词任务。注意在此之前要先设置好 API 密钥,不设密钥会直接报错。
用户体验(UX)
聊天应用要遵守 UX(用户体验)的通用原则,但因为系统里有机器学习成分,下面几条额外考量变得格外重要。
- 处理歧义的机制:生成式 AI 模型偶尔会给出含混的答案。给用户一个"要求澄清"的入口,遇到这种情况很有用。
- 上下文保持:先进的生成式 AI 模型能记住对话中的上下文,这对用户体验往往是刚需。让用户能控制和管理上下文会改善体验,但也带来敏感信息被留存的风险。要考虑这些信息存多久,比如引入留存策略,在上下文需要和隐私之间找平衡。
- 个性化:AI 模型能学习、能适应,可以给每个用户不同的体验。用用户档案这类功能定制体验,用户会觉得被理解,也更容易找到想要的答案,交互更高效、更顺心。
个性化的一个现成例子,是 OpenAI ChatGPT 里的"自定义指令"(Custom instructions)设置。你可以在里面填写个人信息,作为提示词的重要上下文。原文此处有一张截图,展示的是 ChatGPT 的"自定义指令"设置界面。
这个"档案"会提示 ChatGPT 生成一份关于链表(linked list)的课程计划。注意,ChatGPT 考虑到了用户的经验背景,给出的计划更深入。原文此处有第二张截图,展示的就是这条提示词和生成结果。
微软的大语言模型系统消息框架
微软发布过一套指南,教人怎么写有效的系统消息(system message),让大语言模型(LLM)生成更理想的回复。指南分四块:
- 明确模型为谁服务,说清它的能力边界和局限。
- 规定模型的输出格式。
- 给出具体示例,示范模型该有的行为。
- 追加行为护栏。
无障碍
用户可能有视觉、听觉、运动或认知方面的障碍,设计良好的聊天应用应该人人可用。下面按障碍类型列出对应的无障碍功能。
- 视障支持:高对比度主题、可调字号、兼容屏幕阅读器。
- 听障支持:文字转语音、语音转文字功能,声音提醒配视觉提示。
- 运动障碍支持:支持键盘导航、语音命令。
- 认知障碍支持:提供简化语言的选项。
面向特定领域的模型定制化与微调
想象一个聊天应用,它懂你们公司的行话,还能预判用户常问的问题。有两条路可走:
- 用领域专用语言模型。DSL 即领域专用语言(domain-specific language)。这类模型在特定领域的数据上训练过,懂这个领域的概念和场景。
- 做微调(fine-tuning)。微调就是拿特定数据对模型继续训练。
定制化路线一:用 DSL 模型
用领域专用语言模型,可以提供更专业、更贴合上下文的交互,用户参与度也会更高。这类模型经过训练或微调,能理解和生成特定领域、行业或学科的文字。用法有多种:从零训练一个,通过 SDK 和 API 调用现成的,或者做微调:拿一个已有的预训练模型,把它适配到具体领域。
定制化路线二:做微调
预训练模型在专门领域或具体任务上不够用时,就该考虑微调了。
拿医疗举例。医疗问题复杂,需要大量上下文。医生诊断病人,要看生活方式、既往病史等各种因素,有时还得对照最新医学文献验证诊断。在这么微妙的场景里,通用 AI 聊天应用靠不住。
场景:一个医疗应用
设想一个聊天应用,给医务人员快速查治疗指南、药物相互作用或最新研究发现。
通用模型答答基础医学问题、给点通用建议也许够用,但下面这些它会吃力:
- 高度专门或复杂的病例。比如神经科医生问:"儿童患者耐药性癫痫,目前管理的最佳实践是什么?"
- 跟不上最新进展。神经学和药理学的新进展,通用模型很难及时纳入答案。
这种情况下,用专门的医疗数据集微调模型,它处理这类复杂医学询问会更准确、更可靠。前提是你得有一个量大、对口的数据集,覆盖要解决的那些领域难题和问题。
高质量 AI 聊天体验的考量
本节给出"高质量"聊天应用的标准:抓到可操作的指标,并按负责任的 AI 框架来用技术。
关键指标
要让应用保持高质量,必须盯住关键指标。这些度量既保证应用功能正常,也评估 AI 模型和用户体验的质量。基础指标、AI 指标、体验指标都在下表里。
| 指标 | 定义 | 聊天开发者的考量 |
|---|---|---|
| 正常运行时间(Uptime) | 应用可运行、用户可访问的时长占比 | 怎么把宕机时间压到最低? |
| 响应时间(Response Time) | 应用回复用户提问所花的时间 | 怎么优化查询处理,缩短响应时间? |
| 精确率(Precision) | 正确为正的预测数,占全部被预测为正样本的比例 | 怎么验证模型的精确率? |
| 召回率(Recall,敏感度) | 正确为正的预测数,占实际为正样本总数的比例 | 怎么度量并改进召回率? |
| F1 分数(F1 Score) | 精确率与召回率的调和平均,平衡两者取舍 | 你的 F1 目标是多少?如何在精确率和召回率之间权衡? |
| 困惑度(Perplexity) | 度量模型预测的概率分布与数据真实分布的吻合程度 | 怎么降低困惑度? |
| 用户满意度指标 | 用户对产品的主观评价,常靠问卷收集 | 多久收集一次用户反馈?拿到后怎么改进? |
| 错误率(Error Rate) | 模型在理解或输出上出错的频率 | 你有什么策略降低错误率? |
| 再训练周期(Retraining Cycles) | 模型更新以吸收新数据和洞察的频率 | 多久再训练一次模型?什么信号触发再训练? |
| 异常检测(Anomaly Detection) | 识别偏离预期的异常模式的工具与技术 | 发现异常后怎么响应? |
在聊天应用中落地负责任的 AI
微软为负责任的 AI 定了六项原则,指导 AI 的开发和使用。下表列出原则、定义、开发者考量和重视它的理由。
| 原则 | 微软的定义 | 聊天开发者的考量 | 为什么重要 |
|---|---|---|---|
| 公平性 | AI 系统应公平对待所有人。 | 确保聊天应用不基于用户数据搞歧视。 | 在用户中建立信任、保持包容,同时规避法律风险。 |
| 可靠性与安全性 | AI 系统应可靠、安全地运行。 | 落实测试和故障保护,把错误与风险降到最低。 | 保住用户满意度,防止潜在伤害。 |
| 隐私与安全性 | AI 系统应安全并尊重隐私。 | 实施强加密和数据保护措施。 | 保护敏感用户数据,遵守隐私法规。 |
| 包容性 | AI 系统应让所有人受益、让所有人参与。 | 设计对多样人群都可访问、易用的界面。 | 让更多人能顺畅使用应用。 |
| 透明性 | AI 系统应可被理解。 | 为 AI 的回复提供清晰的文档和理由。 | 用户理解决策怎么来的,才更愿意信任系统。 |
| 问责制 | 人应对 AI 系统负责。 | 建立清晰的流程,审计并改进 AI 决策。 | 出错时能持续改进、及时纠正。 |
动手作业
去做本课的作业。练习从跑通第一组聊天提示词开始,一直做到文本分类和摘要。作业有多种编程语言版本可选!
继续前行
学完本课,可以看看微软的生成式 AI 学习资源合集,继续补充生成式 AI 知识。
接下来去第 8 课,学构建搜索应用!