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

在Label Studio中使用GPT-4进行数据标注:机器学习后端集成

教程

简介

数据质量是任何机器学习项目的基石。这一传统上由劳动密集型数据标注主导的过程,常常会演变成耗时且昂贵的任务。但如果我们能利用大语言模型(LLMs)的最新进展,从数据标注转向标签审核呢?

GPT-4登场。基于GPT-4构建的ChatGPT拥有超过1亿用户,是目前最受欢迎的尖端语言模型之一。其理解和生成类人文本的能力在自然语言处理(NLP)领域引起了巨大反响。

之前的文章中,我们展示了GPT-4如何通过预标注数据来加速标注流程。这种方法让我们能够加载已预标注、准备就绪的数据集进行审核,而无需从零开始进行繁琐的标注工作。本文将在先前工作的基础上,向您展示如何将GPT-4与Label Studio的机器学习后端集成。

通过Label Studio ML后端,您可以直接在Label Studio中标注数据,使您的注意力从耗时的数据标注任务转移到更高效、更有效的初步标签审核与优化流程,从而显著加快您的工作流程。

Label Studio ML 后端

Label Studio ML Backend 充当机器学习模型与Label Studio界面之间的桥梁。它允许您将任何模型集成到Label Studio中,只要该模型能够以特定格式返回预测并根据接收到的标注更新其状态。这种灵活性使其成为将OpenAI API调用整合到数据标注工作流程中的理想工具。

将机器学习后端连接到GPT-4相对简单。我们可以将API调用封装在`LabelStudioMLBase`类中,该类将为我们处理所有的Web服务代码。您可以在下方看到封装该类的概要。

微调模型也是一种通过让模型接触更多领域内数据来提升模型质量的强大方法。尽管出于稍后会讨论的原因,我们不会在本博客中涉及微调环节,但如果您使用自己的模型,这一功能可能会非常有用。

from label_studio_ml.model import LabelStudioMLBase

class OpenAIPredictor(LabelStudioMLBase):

    def predict(self, tasks, **kwargs):
        # Predict on tasks passed to the predict function
        for task in tasks:
            predictions.append(model.predict(task))
        return predictions

OpenAI的API

与GPT-4交互需要使用OpenAI API。该API支持向GPT-4发送提示词并接收生成的文本响应。通过精心设计这些提示词来引导模型产生特定输出,这种技巧被称为提示工程。我们通常可以调整提示词,使其返回JSON或其他能被Label Studio接收和结构化的数据格式。

让我们来看看如何提取情感分析预测结果。在这个示例中,我们使用OpenAI的API,并通过一些提示工程,利用GPT-4模型生成响应。

import openai
import re

openai.api_key = "<your_api_key>"

input_text = "I had a wonderful time at the party last night!"
prompt = f"Respond in the json format: {{'response': sentiment_classification}}\nText: {input_text}\nSentiment (positive, neutral, negative):"
response = openai.ChatCompletion.create(
  model="gpt-4",
  messages=[
  {"role": "user", "content": prompt}
  ],
  max_tokens=40,
  n=1,
  stop=None,
  temperature=0.5,
)
response_text = response.choices[0].message['content'].strip()
print("Result\n",f"{response_text}")

将其集成到Label Studio ML后端相对简单,只需将OpenAI API调用封装在predict函数中即可。

运行示例

本节将引导您完成运行示例的步骤。我们已尽量简化流程,并提供了完整实现链接

安装

首先,我们将使用Docker Compose来部署和连接本项目所需的服务器。如果您尚未安装Docker Compose,可以在Docker官网上找到它。请根据适合您操作系统的安装指南进行操作。

OpenAI API密钥

我们的应用程序使用OpenAI的GPT-4模型来生成预测。要使用此API,您需要一个OpenAI账户。以下是创建账户的步骤:

  1. 访问 OpenAI 网站
  2. 点击"注册"并填写您的详细信息以创建账户。
  3. 创建完成后,您可以生成API密钥

API密钥是保护您对GPT-4的API调用的关键部分。请将其存放在安全位置,切勿在任何公共代码库或网站上泄露。

配置Docker Compose

获取OpenAI API密钥后,请将其添加到Docker Compose配置文件中。在docker-compose.yml文件中找到OPENAI_API_KEY环境变量,并将替换为您的实际API密钥。

启动服务

配置完成后,我们将首先按照Label Studio文档中的快速入门指南启动Label Studio。

现在,我们将启动ML后端服务。在您的终端中,导航到包含docker-compose.yml文件的目录,并运行以下命令:

docker-compose up

Docker Compose将启动docker-compose.yml文件中定义的所有必要服务。

它会在http://localhost:9090启动机器学习后端服务。当服务正常运行后,我们可以连接到Label Studio的http://localhost:8080地址。如果所有设置都正确完成,您应该能看到Label Studio的用户界面。

Label Studio的全新安装

将机器学习后端连接到Label Studio

接下来我们需要将ML后端服务连接到Label Studio,但首先我们会在Label Studio中创建一个新的情感分析项目并添加一些数据。这些数据尚未标注,但我们将立即使用GPT-4来添加一些标签。

创建新项目

接下来,我们将通过以下步骤将项目指向我们的机器学习(ML)后端:

添加新的机器学习模型

  1. 点击右上角的"设置"。
  2. 向下滚动至'机器学习'部分。
  3. 点击'添加模型'。
  4. 在'URL'字段中,输入ML后端的地址,http://localhost:9090(默认Docker Compose设置)。
  5. 点击"验证并保存"。

在添加模型对话框中配置服务器

模型已验证并连接

我们应该能看到确认信息,表明已成功连接到ML后端并准备就绪可供使用。

返回预测结果

我们现在准备在Label Studio中使用预测功能,从GPT-4获取任务的预测结果。要进行预测,请执行以下步骤:

  1. 点击侧边栏中的"Tasks"。
  2. 选择您需要预测的任务。
  3. 点击任务顶部的"获取预测结果"按钮。

从机器学习模型获取预测结果

随后将显示来自GPT-4的预测结果。您可以直接进入预测审核环节,而无需从头开始手动标注所有内容。

查看来自ML后端的预测结果

查看ML后端示例获取完整详情,或跟随ML后端教程了解更多关于后端工作原理以及如何构建自定义集成的信息。

执行任意文本分类

如果您想超越基于情感分析的简单文本分类示例,借助LLMs的泛化能力,操作非常简单。前往模型目录并修改default_prompt.txt文件中的提示词:

Classify text into different categories. Start each category prediction in a new line.
Text: {text}
Categories: {labels}

请随意修改指令,并将{text}标签更改为符合您数据结构的内容,包括输入文本和可选的元数据。您可以明确定义标签集,或使用{labels}占位符来匹配Label Studio项目中的目标标签。

现在在docker-compose.yml 中定义变量以使用此默认提示:

DEFAULT_PROMPT=default_prompt.txt
USE_INTERNAL_PROMPT_TEMPLATE=0

讨论

随着这篇博客接近尾声,我们需要认识到使用OpenAI带来的便利性和强大功能的同时,也存在一些注意事项。充分理解这些要点对于将AI整合到工作流程中做出明智决策至关重要。

训练与微调

微调是一种常见的机器学习技术,用于根据特定需求定制模型。然而,它并非万能的解决方案。以OpenAI模型为例,目前强大的GPT-3和GPT-4版本不支持微调,这意味着我们无法针对特定应用调整它们,必须使用其预训练配置。

另一方面,Davinci模型支持微调,但它也带来了自身的挑战。如果缺乏专业处理,可能会导致性能结果下降。因此,在本项目中我们选择不进行微调。尽管如此,我们承认其在提升模型性能方面的潜力,并认为这是未来研究和探索的一个有前景的方向。

数据安全注意事项

一个关键点是,此示例系统不应用于处理高度敏感和私密的数据。需要记住的是,您提交的数据会被传输到OpenAI的服务中。这意味着您的数据可能会被用于训练目的。

这不仅关乎隐私,还涉及对数据的掌控权。当您将数据发送给第三方服务时,可能会丧失对该信息的直接控制权。根据数据的性质和敏感程度,这可能带来无法承受的风险。在某些情况下,您可能需要考虑转而使用内部模型。

结论

在本博客中,我们探讨了如何将GPT-4与Label Studio的机器学习后端集成,从而帮助从劳动密集型的数据标注任务转向更高效的审核流程。这可以引入全新水平的效率,利用世界领先的大型语言模型的力量来预标注您的数据。

我们也考虑了这种方法的某些局限性,例如数据隐私和模型质量,并指出它可能并不适用于所有应用场景。但尽管GPT方法并非总是万能的,我们相信将GPT-4等人工智能技术整合到标注流程中,未来仍将持续带来诸多机遇。

查看GitHub上的完整示例

如果您想了解更多关于Label Studio及其机器学习集成的内容,或有自己的集成方案想要分享,欢迎加入Label Studio Slack社区,在这里您可以结识数千名数据标注领域的专业人士。

相关内容

  • 如何在Label Studio中使用提示生成合成数据

    学习如何使用Label Studio的提示功能生成问答对合成数据。本逐步指南将带您完成创建项目、编写提示词以及审阅模型生成数据的全过程——非常适合在标注数据有限时启动RAG系统或训练大语言模型。

    Micaela Kaplan

    2025年4月23日

  • 如何在Label Studio中使用提示词评估和比较大语言模型

    使用大语言模型标注数据很快——但它准确吗?本文展示了在Label Studio中评估模型性能的两种方法,无论是否有真实标签数据。学习如何比较输出结果、跟踪准确率和成本,并为你的工作流程选择合适的模型。

    米凯拉·卡普兰

    2025年4月2日

  • 打造最棒的GPT智能体 😸

    在这篇文章中,我们将介绍Label Studio AI助手和提示词的一个创意用例:生成丰富的图像叙事。跟随我们的步骤,了解如何构建一个将结构化标注与故事讲述相结合的项目。

    Sheree Zhang

    2025年4月1日