NEW暗黑模式现已上线 🌓 Label Studio 1.18.0 版本发布

使用Label Studio评估多轮LLM聊天对话

指南

Virtual assistants have become indispensable in handling customer interactions, but their complexity presents a unique challenge. Multi-turn conversations often involve shifting topics, nuanced context, and unexpected user behavior, making it difficult to ensure consistent and effective performance. To improve these systems, we need a clear understanding of where they fall short—and that starts with structured evaluation and human feedback.

评估虚拟助手最有效的方法之一是通过轮次级别的标注。通过将对话分解为单独的轮次,我们可以详细分析每次互动,发现诸如遗漏意图、回答不充分或难以保持上下文等问题。这种细粒度的方法在多轮对话中特别有用,因为话题经常变化,挑战会随着时间的推移而累积。

In this blog, we’ll demonstrate how turn-level labeling with Label Studio can help identify gaps and areas for improvement in a virtual assistant. Using a simple e-commerce chatbot as an example, we’ll explore how a focused and iterative evaluation process can make your virtual assistant smarter, more context-aware, and more user-friendly.

Also, you can watch a recording of a live workshop that walks you through this entire process here:

设置Label Studio进行多轮标注

评估多轮对话需要在Label Studio中建立结构化设置。这包括创建项目、定义灵活的标注模板,以及准备数据以进行详细评估。通过清晰有序的方法,您可以确保标注结果一致、可操作,并专注于发现关键洞见以改进您的虚拟助手。如需逐步操作指南,请查看完整示例

在Label Studio中创建项目

要设置我们的项目,我们将使用Label Studio SDK。该SDK为编程生成模板、转换数据以及提取评估数据等任务提供了更大的灵活性,使其成为高效处理多轮标注的理想选择。在本地或服务器上安装Label Studio后,使用SDK通过您账户中的API密钥连接到您的实例。以下是建立连接的方法:

from label_studio_sdk.client import LabelStudio

LABEL_STUDIO_URL = 'http://localhost:8080'
API_KEY = '<YOUR_API_KEY>'
client = LabelStudio(base_url=LABEL_STUDIO_URL, api_key=API_KEY)

该连接允许您以编程方式设置、管理和评估您的标注项目。

定义标注模板

标注模板是项目的基础。它决定了对话的展示方式以及标注人员的评估流程。在我们的设置中,采用多面板界面设计:左侧面板显示完整对话上下文,右侧面板则聚焦单轮对话并呈现具体评估问题。这种设计确保标注人员既能把握整体语境,又能对每次交互进行细致分析。图1展示了Label Studio中多轮标注界面的示例。

图1:Label Studio中的双面板多轮对话标注界面。

模板的核心包含两个组件:

  • 段落: 显示对话或轮次以提供上下文。
  • 选项: 允许标注者评估用户意图、回答准确性和帮助性等属性。

这些组件功能多样,可适应各种标注需求。以下是一个用于标注用户意图的基础模板示例:

<View>
  <Paragraphs name="conversation" value="$messages" layout="dialogue" />
  <Choices name="intent" toName="conversation" choice="single">
    <Choice value="Order Status" />
    <Choice value="Refund Request" />
    <Choice value="Product Inquiry" />
  </Choices>
</View>

此设置可根据不同的聊天机器人使用场景进行定制。例如,您可以包含有关技术故障排除或升级场景的问题。在我们的示例中,我们重点评估:

  • 用户意图: 识别用户消息的目的。
  • 回答准确性:检查助手的回复是否满足用户的意图。
  • 帮助性:评估助手的回答有多大的帮助。
  • 操作建议: 为智能体推荐下一步行动或改进方案。

此外,由于对话可能包含多个回合,我们不希望为每个回合复制、粘贴并编辑此模板。在笔记本中,我们通过编程方式配置模板,使其为每个回合重复问题,甚至为它们分配独特的颜色。

使用MAX_CHAT_TURNS处理多轮对话

Label Studio使用静态模板配置,当对话长度不一时可能会带来问题。为此,我们必须预先设定可标注对话轮数的上限。在示例笔记本中,我们通过使用常量`MAX_CHAT_TURNS`以编程方式解决这个问题。该变量应设置为数据集中最长的对话轮数。对于较短的对话,系统会用空轮次进行填充,从而确保标注界面的一致性和可管理性。

例如,如果`MAX_CHAT_TURNS`设置为`5`,一个包含三轮对话的任务会添加两个空白槽位以保持一致性,而包含八轮对话的任务将被拆分为两个标注任务。这确保标注人员每次只需处理可控数量的对话轮次。

准备和导入对话数据

为了在Label Studio中评估对话,需要将数据从其原始格式转换为支持完整对话视图和轮次级别分析的结构。对话最初的结构通常如下(常用于OpenAI的聊天格式):

{
  "messages": [
    {"role": "user", "content": "Hi, do you have the new SmartWear fitness tracker in stock?"},
    {"role": "assistant", "content": "Let me check that for you. Which model are you interested in—SmartWear Pro or SmartWear Lite?"},
    {"role": "user", "content": "SmartWear Pro."},
    {"role": "assistant", "content": "Yes, the SmartWear Pro is in stock in both black and silver. Would you like to place an order or reserve one?"},
    {"role": "user", "content": "Can I reserve the black one?"},
    {"role": "assistant", "content": "Absolutely! I've reserved a black SmartWear Pro for you. You can pick it up anytime today."}
  ]
}

为了与Label Studio保持一致,我们使用以下函数将对话转换为结构化格式。每个对话被拆分为单独的轮次,并添加空槽位以匹配MAX_CHAT_TURNS限制,确保一致性。

def transform_data(data, max_turns):
    transformed = []
    for conversation in data:
        messages = conversation["messages"]
        formatted_conversation = {
            "data": {
                "messages": messages,
                **{
                    f"turn{i+1}_dialogue": messages[i * 2:(i + 1) * 2] if i < len(messages) // 2 else [
                        {"role": "", "content": ""},
                        {"role": "", "content": ""}
                    ]
                    for i in range(max_turns)
                }
            }
        }
        transformed.append(formatted_conversation)
    return transformed

转换后,对话的结构如下:

[
  {
    "data": {
      "messages": [
        {"role": "user", "content": "Hi, do you have the new SmartWear fitness tracker in stock?"},
        {"role": "assistant", "content": "Let me check that for you. Which model are you interested in—SmartWear Pro or SmartWear Lite?"},
        {"role": "user", "content": "SmartWear Pro."},
        {"role": "assistant", "content": "Yes, the SmartWear Pro is in stock in both black and silver. Would you like to place an order or reserve one?"},
        {"role": "user", "content": "Can I reserve the black one?"},
        {"role": "assistant", "content": "Absolutely! I've reserved a black SmartWear Pro for you. You can pick it up anytime today."}
      ],
      "turn1_dialogue": [
        {"role": "user", "content": "Hi, do you have the new SmartWear fitness tracker in stock?"},
        {"role": "assistant", "content": "Let me check that for you. Which model are you interested in—SmartWear Pro or SmartWear Lite?"}
      ],
      "turn2_dialogue": [
        {"role": "user", "content": "SmartWear Pro."},
        {"role": "assistant", "content": "Yes, the SmartWear Pro is in stock in both black and silver. Would you like to place an order or reserve one?"}
      ],
      "turn3_dialogue": [
        {"role": "user", "content": "Can I reserve the black one?"},
        {"role": "assistant", "content": "Absolutely! I've reserved a black SmartWear Pro for you. You can pick it up anytime today."}
      ],
      "turn4_dialogue": [
        {"role": "", "content": ""},
        {"role": "", "content": ""}
      ],
      "turn5_dialogue": [
        {"role": "", "content": ""},
        {"role": "", "content": ""}
      ]
    }
  }
]

数据准备就绪后,我们现在可以将其导入Label Studio并开始对话标注。

for task in multi_turn_tasks:
    client.tasks.create(
        project=multi_turn_project.id,
        data=task['data']
    )

为您的使用场景定制

使用Label Studio的最大优势之一在于其灵活性。标注模板可以根据您的虚拟助手特定需求进行定制。这种定制化确保您的标注不仅保持一致,而且具有可操作性。高质量的标注使您能够优化训练数据、改进对话流程并解决重复出现的问题。通过完善的设置,您的评估流程将变得可扩展且富有影响力,为您提供持续提升虚拟助手性能的工具。

接下来,我们将标注数据并探索如何分析已标注数据,将这些洞见转化为有意义的改进。

评估反馈

数据标注完成后,下一步是挖掘可操作的洞察,以指导虚拟助手的改进。通过分析标注数据,我们可以识别模式、评估性能并突出需要优化的领域。在本示例中,我们将使用notebook分析数据,但对于更高级的评估,像Human Signal的SaaS平台这样的工具可提供规模化额外指标和评估。

以下是Label Studio导出的标注数据示例(表1)。每行包含我们对虚拟助手对话提出的各类问题的反馈:

任务ID轮次字段选择
87004turn1turn1_user_intent产品咨询
87004第1轮第1轮响应_...部分解决
87004turn1turn1_response_...是,准确且有用
87004turn1turn1_response_...请求更多信息
87004turn2turn2_user_intent产品咨询
87004第2轮第2轮回复...完全解决

表1:从Label Studio导出的已标注任务。

利用标注任务的结果,我们可以提取多项指标来帮助我们理解结果。

轮次级别指标

在对话轮次层面,指标帮助我们理解助手响应用户请求的有效性。这些指标详细展示了用户的需求以及助手处理这些查询的表现。

用户意图分布

用户意图计数
退换货查询3
产品查询2
订单状态2
其他1
付款/退款查询1

表2: 用户意图分布。

用户意图分布(表2)显示,“退换货咨询”和“产品咨询”在用户交互中占据主导地位。这些高频意图应优先优化,以确保助手满足用户最常见需求。相反,关于支付或“其他”类别的查询数量较少,表明助手功能范围可能存在空白,凸显了可扩展功能的方向。

助手意图处理

处理结果计数
已完全处理7
部分解决2

表3:助手意图处理。

Table 3 evaluates how well the assistant resolves user intents. Fully addressed queries indicate the assistant’s strengths, where user needs were met entirely. However, partially addressed queries reveal areas where responses lacked completeness. For example, a user may receive partial product information without critical details like availability or pricing. Addressing these gaps will improve response quality and ensure a more consistent user experience. It should be noted, however, that this metric is on a turn-level scope. The user may have had multiple partially addressed intents throughout a conversation.

响应质量

准确性与帮助性百分比
是,准确且有用100.000000

表4:助手响应质量。

本样本中所有评估的响应均被标记为准确且有用(表4)。这表明当查询被理解时,该智能体在提供正确信息方面表现良好。然而,随着数据集增长和场景变得更加复杂,该指标可能会揭示出需要进一步训练或更新智能体知识库的领域。

智能体隐含操作

助手的回应还会根据其隐含的操作进行标注。在某些情况下,这很简单,例如"提供更多信息"和"请求更多信息"频繁出现,表明对话通常需要额外的澄清或上下文。然而,在其他情况下,操作可能更加微妙。例如,如果虚拟助手声明已执行退款操作,我们可能需要进行额外分析以确认该步骤是否确实已执行。

建议操作计数
为用户提供更多信息4
向用户请求更多信息3
确认已采取行动2

表5:助手响应质量。

对话级指标

除了单轮对话外,对话级别的指标还能揭示交互如何演变的深层洞察。这些指标有助于识别转换节点、瓶颈环节,以及优化智能体对话流程和上下文保持能力的改进机会。

意图转换

其他产品咨询付款/退款查询退换货咨询订单状态
其他00000
产品咨询11000
付款/退款查询00000
退换货查询00200
订单状态00101

表6:意图转移矩阵(显示一个意图如何转变为另一个意图)。

The Intent Transition Matrix (Table 6) highlights how users move between intents during conversations. For example, frequent transitions within “Return/Exchange Inquiry” suggest users often need to ask follow-up questions, pointing to gaps in resolution. Transitions from “Order Status” to “Payment/Refund Inquiry” may signal user frustration with incomplete updates, emphasizing the need for clearer and more comprehensive messaging.

在我们分析的聊天互动记录中(表5),大部分请求都是要求提供额外信息。这表明有机会优化助手的响应方式,使其在话题信息上更加主动,从而减少后续追问的需求,不过我们稍后还需要深入研究具体细节。

总对话数一致对话数一致百分比
意图一致性3133.33%

表7:意图一致性(用户在对话中保持单一意图的频率)。

表7显示,仅有33%的对话保持了意图一致性,用户经常转换话题。这凸显了提升助手处理多意图场景能力的重要性,需要在话题转换时保持上下文连贯,以提供更流畅的交互体验。

意图序列计数
('产品查询', '产品查询', '其他')1
('退换货查询', '退换货查询', '退换货查询')1
('订单状态', '订单状态', '支付/退款查询')1

表8:前5种最常见的转换模式。

表8识别了对话中常见的转换模式。这些序列通常突显用户摩擦或未解决问题的区域。解决这些模式可以优化对话流程并缩短解决时间。

下一步改进计划

本次评估结果为我们提供了优化虚拟助手性能的清晰路线图。针对高频意图如"退换货查询"和"产品咨询"优化响应,可以通过解决大部分用户交互来获得立竿见影的效果。此外,改进对部分已处理查询的响应,将通过减少信息缺口来提升整体用户体验。

上下文管理是另一个需要改进的关键领域。通过增强助手在多轮对话中保留和利用上下文的能力,用户将减少误解或重复查询的情况。这对于处理主题之间的转换尤其重要,例如从"订单状态"切换到"退款请求"。

最后,本次评估强调了持续反馈循环的重要性。通过定期标注和分析新的对话,可以追踪助手的表现并迭代优化,确保其与不断变化的用户需求保持一致。

通过利用这些洞察,团队可以创建一个不仅准确且有用的虚拟助手,还能自信地处理复杂、动态的交互。

迭代优化虚拟助手

评估多轮对话对于改进虚拟助手至关重要。通过结合结构化标注、详细指标和迭代反馈循环,团队可以精准定位助手的优势领域和需要改进之处。诸如用户意图分布、响应质量和意图转换等指标,能为优化响应、改进对话流程和增强上下文保持能力提供可操作的洞见。

With tools like Label Studio and platforms such as Human Signal, evaluations can scale to meet growing needs. The key to success lies in continuous iteration—analyzing data, addressing gaps, and refining capabilities to create a smarter, more user-friendly assistant that evolves alongside user expectations.

想亲眼看看这个流程的实际操作吗?欢迎参加我在2025年1月29日星期三东部时间12点/太平洋时间9点举办的现场研讨会。您可以点击这里注册!

相关内容

  • 每个人都在(无意中)作弊

    AI基准测试正在悄然失效。研究表明,数据泄露、排行榜操纵和激励错配正在夸大模型性能。本文探讨了改革的四大支柱:治理、透明度、广谱指标和监督,并概述了企业如何通过集中式基准管理平台建立信任。

    尼古拉·柳比莫夫

    2025年5月13日

  • 提升标注质量和速度的3种标注团队操作手册

    每个机器学习团队都不尽相同,您的标注工作流程也应如此。本指南将解析三种常见的标注团队配置方案,以及如何定制您的工具和流程来提升质量、速度和规模。

    Alec Harris

    2025年5月7日

  • 您的RAG系统可能失败的七种情况及解决方法

    RAG系统承诺提供更准确的人工智能响应,但由于检索错误、幻觉和不完整答案等问题,它们往往表现不佳。本文探讨了七种常见的RAG系统故障——从遗漏排名靠前的文档到格式错误——并提供了实用解决方案来提高检索准确性、排序质量和响应质量。了解如何优化您的RAG系统,确保其提供可靠、具备上下文感知能力的人工智能响应

    米凯拉·卡普兰

    2025年3月19日