跳到主要内容
Label Studio 是一个开源数据标注平台,它为 LangChain 提供了灵活性,可用于标注数据以微调大型语言模型 (LLM)。它还支持准备自定义训练数据以及通过人工反馈收集和评估响应。
在本指南中,您将学习如何将 LangChain 管道连接到 Label Studio
  • 将所有输入提示、对话和响应聚合到一个 Label Studio 项目中。这将所有数据整合到一个地方,以便于标注和分析。
  • 优化提示和响应,为监督微调 (SFT) 和带有人工反馈的强化学习 (RLHF) 场景创建数据集。标注数据可用于进一步训练 LLM 以提高其性能。
  • 通过人工反馈评估模型响应。Label Studio 提供了一个界面,供人类审查并提供模型响应的反馈,从而进行评估和迭代。

安装与设置

首先安装最新版本的 Label Studio 和 Label Studio API 客户端
pip install -qU langchain label-studio label-studio-sdk langchain-openai langchain-community
接下来,在命令行运行 label-studio 以在 https://:8080 启动本地 LabelStudio 实例。有关更多选项,请参阅 Label Studio 安装指南 您需要一个令牌才能进行 API 调用。 在浏览器中打开您的 LabelStudio 实例,转到 Account & Settings > Access Token 并复制密钥。 设置环境变量,包含您的 LabelStudio URL、API 密钥和 OpenAI API 密钥:
import os

os.environ["LABEL_STUDIO_URL"] = "<YOUR-LABEL-STUDIO-URL>"  # e.g. https://:8080
os.environ["LABEL_STUDIO_API_KEY"] = "<YOUR-LABEL-STUDIO-API-KEY>"
os.environ["OPENAI_API_KEY"] = "<YOUR-OPENAI-API-KEY>"

收集 LLM 提示和响应

用于标注的数据存储在 Label Studio 中的项目中。每个项目都由一个 XML 配置标识,该配置详细说明了输入和输出数据的规范。 创建一个项目,该项目以文本格式获取人工输入,并在文本区域中输出可编辑的 LLM 响应:
<View>
<Style>
    .prompt-box {
        background-color: white;
        border-radius: 10px;
        box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
        padding: 20px;
    }
</Style>
<View className="root">
    <View className="prompt-box">
        <Text name="prompt" value="$prompt"/>
    </View>
    <TextArea name="response" toName="prompt"
              maxSubmissions="1" editable="true"
              required="true"/>
</View>
<Header value="Rate the response:"/>
<Rating name="rating" toName="prompt"/>
</View>
  1. 要在 Label Studio 中创建项目,请单击“创建”按钮。
  2. 在“项目名称”字段中输入您的项目名称,例如 My Project
  3. 导航到 标注设置 > 自定义模板 并粘贴上面提供的 XML 配置。
您可以使用 LabelStudioCallbackHandler 连接,在 LabelStudio 项目中收集输入的 LLM 提示和输出的响应
from langchain_community.callbacks.labelstudio_callback import (
    LabelStudioCallbackHandler,
)
from langchain_openai import OpenAI

llm = OpenAI(
    temperature=0, callbacks=[LabelStudioCallbackHandler(project_name="My Project")]
)
print(llm.invoke("Tell me a joke"))
在 Label Studio 中,打开 My Project。您将看到提示、响应和元数据(如模型名称)。

收集聊天模型对话

您还可以在 LabelStudio 中跟踪和显示完整的聊天对话,并能够对最后的响应进行评分和修改
  1. 打开 Label Studio 并单击“创建”按钮。
  2. 在“项目名称”字段中输入您的项目名称,例如 New Project with Chat
  3. 导航到标注设置 > 自定义模板并粘贴以下 XML 配置
<View>
<View className="root">
     <Paragraphs name="dialogue"
               value="$prompt"
               layout="dialogue"
               textKey="content"
               nameKey="role"
               granularity="sentence"/>
  <Header value="Final response:"/>
    <TextArea name="response" toName="dialogue"
              maxSubmissions="1" editable="true"
              required="true"/>
</View>
<Header value="Rate the response:"/>
<Rating name="rating" toName="dialogue"/>
</View>
from langchain.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI

chat_llm = ChatOpenAI(
    callbacks=[
        LabelStudioCallbackHandler(
            mode="chat",
            project_name="New Project with Chat",
        )
    ]
)
llm_results = chat_llm.invoke(
    [
        SystemMessage(content="Always use a lot of emojis"),
        HumanMessage(content="Tell me a joke"),
    ]
)
在 Label Studio 中,打开“New Project with Chat”。单击创建的任务以查看对话历史记录并编辑/标注响应。

自定义标注配置

您可以修改 LabelStudio 中的默认标注配置,以添加更多目标标签,例如响应情感、相关性以及许多其他类型的标注者反馈 可以通过 UI 添加新的标注配置:转到 Settings > Labeling Interface 并设置一个自定义配置,其中包含额外的标签,例如用于情感的 Choices 或用于相关性的 Rating。请记住,TextArea 标签应存在于任何配置中以显示 LLM 响应。 或者,您可以在项目创建之前的初始调用中指定标注配置:
ls = LabelStudioCallbackHandler(
    project_config="""
<View>
<Text name="prompt" value="$prompt"/>
<TextArea name="response" toName="prompt"/>
<TextArea name="user_feedback" toName="prompt"/>
<Rating name="rating" toName="prompt"/>
<Choices name="sentiment" toName="prompt">
    <Choice value="Positive"/>
    <Choice value="Negative"/>
</Choices>
</View>
"""
)
请注意,如果项目不存在,它将使用指定的标注配置创建。

其他参数

LabelStudioCallbackHandler 接受几个可选参数
  • api_key - Label Studio API 密钥。覆盖环境变量 LABEL_STUDIO_API_KEY
  • url - Label Studio URL。覆盖 LABEL_STUDIO_URL,默认 https://:8080
  • project_id - 现有的 Label Studio 项目 ID。覆盖 LABEL_STUDIO_PROJECT_ID。将数据存储在此项目中。
  • project_name - 如果未指定项目 ID,则为项目名称。创建一个新项目。默认为 "LangChain-%Y-%m-%d",并使用当前日期格式化。
  • project_config - 自定义标注配置
  • mode:使用此快捷方式从头开始创建目标配置
    • "prompt" - 单个提示,单个响应。默认。
    • "chat" - 多轮对话模式。

以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.