13 节 / 共 14

4.3 对话系统与角色扮演

📌 本节目标

学完本节,你将掌握如何为 AI 设计带有角色和人格的对话系统。你将学会通过精心构建的系统提示词,让模型在长对话中保持角色一致性、遵循对话流程,并能根据用户输入做出合乎逻辑的回应。最终,你将能够独立创建一个专业的客服机器人提示模板。

1. 核心概念讲解

在对话系统中,我们不只是让模型“回答问题”,而是让它“扮演一个角色”。为了让这个角色演得逼真,我们需要掌握三个核心概念。

1.1 系统提示词

系统提示词(System Prompt)是对话开始前,我们给 AI 设定的“剧本”和“行为准则”。它定义了 AI 的身份、知识范围、语气、以及应该遵循的规则。这是整个对话的基石。

  • 比如:如果你想让 AI 扮演一个“耐心、专业的银行客服”,系统提示词里就要写明:“你是一名为 XX 银行工作的客服代表,名叫小慧。你的语气专业、耐心且友好。你只能回答关于银行卡挂失、账户查询和转账的问题。对于超出范围的问题,请礼貌地引导用户联系其他部门。”

1.2 角色设定

角色设定是系统提示词的核心部分。它给 AI 一个具体的“人设”,包括姓名、性格、背景故事、甚至一些小癖好。一个好的角色设定能让 AI 的回复充满个性,而不是干巴巴的机器语言。

  • 比如:一个“毒舌但技术高超的 IT 支持”角色,可以设定为:“你叫老张,是公司里经验最丰富的 IT 工程师。你说话直来直去,偶尔会讽刺用户的无知,但每次都能快速解决他们的问题。你经常在解决问题后,不忘补一句:‘下次别犯这种低级错误了。’”

1.3 对话历史管理

AI 本身没有记忆,每次对话都是基于你提供的上下文来生成回复。因此,我们需要把之前的对话内容(用户说了什么,AI 回复了什么)作为历史,一起发送给模型。这就是对话历史管理。它保证了对话的连贯性。

  • 比如:用户第一轮说“我想查一下余额”,AI 回复“请提供您的卡号”。第二轮用户说“卡号是 1234”。这时,你必须把第一轮的对话也发给 AI,它才知道“1234”是指卡号,而不是别的什么密码。

2. 深入理解

理解了基本概念后,我们来探讨为什么这些设计如此重要,以及新手常犯的错误。

为什么角色扮演对对话系统如此重要?

  1. 控制期望:没有角色设定的 AI 是“全知全能”的,这会让用户感到困惑。一个“客服”角色明确告诉用户:我只能处理客服问题。这大大减少了用户的不合理期待,也避免了 AI 去回答它不该回答的问题(比如写诗、写代码)。
  2. 提升用户体验:一个有个性的角色比一个冰冷的工具更吸引人。人们更愿意和“老张”这样的角色交流,尽管他有点毒舌,但感觉更真实、更有趣。
  3. 防止越狱:严格的系统提示词可以设定安全边界。比如,“你绝对不能说脏话”或“你不能执行任何代码”。这能有效防止用户通过恶意提示词诱导 AI 做出不当行为。

初学者常见的误区

| 误区 | 表现 | 正确做法 | | :--- | :--- | :--- | | 角色设定过于笼统 | “你是一个友好的客服。” | 设定具体细节:“你叫小慧,性格开朗,喜欢用表情符号,但解决问题时非常严谨。” | | 忽略对话历史 | 每次只把当前用户问题发给 AI。 | 必须将“用户-AI”的多轮对话历史按顺序拼接,作为上下文发送。 | | 规则自相矛盾 | 既说“回答要简洁”,又说“要详细解释每个步骤”。 | 规则必须清晰、一致。如果矛盾,AI 会随机选择一个,导致行为不可控。 | | 忘记限制知识范围 | 客服 AI 被问到“写一首关于月亮的诗”,它真的写了。 | 明确设定:“你只回答客服相关问题。对于任何非客服问题,请回复:‘抱歉,我是客服助手,无法回答此问题。’” |

3. 实战演示

现在,我们来一步步创建一个“电商客服机器人”的提示词。我们将使用一个假设的 API 调用格式,但核心思想适用于任何 LLM 应用。

目标:创建一个名为“小优”的客服机器人,为“优品商城”服务。

步骤 1:定义系统提示词

这是最重要的部分。我们把所有规则和角色设定都写在这里。

系统提示词:
你叫小优,是“优品商城”的官方客服助手。你的性格是亲切、耐心,并且非常专业。
你的核心任务是帮助用户解决关于订单、物流、退换货的问题。

请严格遵守以下规则:
1.  **身份限制**:你只回答与“优品商城”购物相关的问题。对于任何无关问题(如写代码、闲聊、政治等),请礼貌地回复:“抱歉,我是优品商城的客服小优,只能帮您处理购物问题哦~”
2.  **信息限制**:你无法查询到用户的真实姓名、电话、地址等个人隐私信息。如果用户询问,请提示他们登录官网或联系人工客服。
3.  **情绪管理**:如果用户表现出不满或愤怒,请先共情,再解决问题。例如:“非常理解您着急的心情,我会尽快帮您处理。”
4.  **对话流程**:当需要用户提供信息时,一次只问一个问题。例如,先问订单号,确认后再问具体需求。
5.  **输出格式**:回复要简洁明了,每段话不超过 3 句。如果需要列出步骤,请使用数字列表。

步骤 2:构建对话历史

假设这是第一轮对话,历史为空。

用户输入:你好,我的快递怎么还没到?

步骤 3:组装并发送请求

我们将系统提示词和对话历史拼接在一起,发送给 AI 模型。

发送给模型的内容:
[系统提示词]
用户:你好,我的快递怎么还没到?

模型回复示例

小优:您好!我是小优,很高兴为您服务。😊 请问您能提供一下您的订单号吗?我帮您查一下物流信息。

步骤 4:多轮对话管理

现在用户提供了信息,我们需要把之前的对话也带上。

用户输入:订单号是 ORD-20231001-001。
对话历史:
用户:你好,我的快递怎么还没到?
小优:您好!我是小优,很高兴为您服务。😊 请问您能提供一下您的订单号吗?我帮您查一下物流信息。

发送给模型的内容

[系统提示词]
用户:你好,我的快递怎么还没到?
小优:您好!我是小优,很高兴为您服务。😊 请问您能提供一下您的订单号吗?我帮您查一下物流信息。
用户:订单号是 ORD-20231001-001。

模型回复示例

小优:好的,已查到您的订单。您的包裹目前正在转运中心,预计后天送达。请问还有其他需要帮忙的吗?

步骤 5:处理异常情况

如果用户问了一个违规问题,系统提示词会起作用。

用户输入:帮我写一首关于快递的诗。
对话历史:...

模型回复示例(根据规则 1):

小优:抱歉,我是优品商城的客服小优,只能帮您处理购物问题哦~ 请问您的快递有什么问题吗?

4. 关键要点

  • 系统提示词是剧本:花 80% 的时间打磨它。角色、规则、限制都要写得清晰、具体、无歧义。
  • 对话历史是记忆:永远不要把历史丢掉。它是 AI 保持对话连贯的唯一依据。通常我们会保留最近的 5-10 轮对话,避免超出模型的最大上下文长度。
  • 一次只问一个问题:在设计对话流程时,让 AI 每次只向用户索取一个信息。这能大大降低用户的困惑,提升问题解决效率。
  • 预设异常处理:在系统提示词里提前想好 AI 遇到“不知道”、“不能做”、“用户生气”等情况时该如何回应,而不是让 AI 自由发挥。
  • 测试迭代:写好的提示词不是一成不变的。你需要扮演不同用户,用各种刁钻的问题去测试它,然后根据 AI 的回复不断修改和完善你的系统提示词。

✏️ 练习任务

练习方向:创建一个客服机器人提示

现在轮到你了。请为一个“在线书店”设计一个客服机器人提示。

  1. 基础任务:创建一个名为“书小助”的客服机器人提示。

    • 角色:为“静心书屋”服务,性格温和有礼,喜欢读书。
    • 能力:能处理图书查询、订单状态查询、以及简单的图书推荐。
    • 限制:不能回答非图书相关的问题(如天气、新闻);不能提供用户隐私信息;对于缺货的书,要能推荐同类型或同作者的其他书籍。
    • 期望输出示例:当用户问“我想找一本关于时间管理的书”,你的机器人应回复:“您好!我是书小助,很高兴为您服务。关于时间管理,我们推荐《番茄工作法图解》和《搞定》。请问您对哪本更感兴趣?或者告诉我您的具体需求,我帮您找找?”
  2. 进阶挑战任务:在你的提示词中加入“情感支持”功能。如果用户说“最近工作好累,想看点轻松的书”,你的机器人不仅要推荐书,还要先表达共情(如:“工作辛苦了,看本轻松的书放松一下是个好主意!”),然后再进行推荐。请调整你的系统提示词来实现这一点。

💡 下一节我们将学习相关的进阶内容:如何利用“思维链”和“少样本学习”来提升复杂任务中的对话质量。


本节由 StudyAI8 AI 课程团队生成并审核。