跳到主要內容
Open In ColabOpen on GitHub

Label Studio

Label Studio 是一個開放原始碼的資料標註平台,在為大型語言模型 (LLM) 微調資料標註時,為 LangChain 提供彈性。它還可以準備自訂訓練資料,並透過人工回饋收集和評估回應。

在本指南中,您將學習如何將 LangChain 管線連接到 Label Studio 以:

  • 將所有輸入提示、對話和回應匯總到單一 Label Studio 專案中。這將所有資料整合在一個位置,以便更輕鬆地進行標註和分析。
  • 精簡提示和回應,以建立用於監督式微調 (SFT) 和透過人工回饋強化學習 (RLHF) 情境的資料集。標註資料可用於進一步訓練 LLM,以提升其效能。
  • 透過人工回饋評估模型回應。Label Studio 提供介面讓人們審閱模型回應並提供回饋,從而實現評估和迭代。

安裝與設定

首先安裝最新版本的 Label Studio 和 Label Studio API 用戶端

%pip install --upgrade --quiet langchain label-studio label-studio-sdk langchain-openai langchain-community

接下來,在命令列上執行 label-studio,以在 https://127.0.0.1:8080 啟動本機 Label Studio 執行個體。請參閱 Label Studio 安裝指南 以取得更多選項。

您需要權杖才能進行 API 呼叫。

在瀏覽器中開啟您的 Label Studio 執行個體,前往 帳戶與設定 > 存取權杖 並複製金鑰。

使用您的 Label Studio URL、API 金鑰和 OpenAI API 金鑰設定環境變數

import os

os.environ["LABEL_STUDIO_URL"] = "<YOUR-LABEL-STUDIO-URL>" # e.g. https://127.0.0.1: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. 在「專案名稱」欄位中輸入專案名稱,例如 我的專案
  3. 導覽至 標註設定 > 自訂範本 並貼上上方提供的 XML 組態。

您可以在 Label Studio 專案中收集輸入 LLM 提示和輸出回應,並透過 LabelStudioCallbackHandler 連接它

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"))
API 參考:OpenAI

在 Label Studio 中,開啟 我的專案。您將看到提示、回應和中繼資料,例如模型名稱。

收集聊天模型對話

您也可以在 Label Studio 中追蹤和顯示完整聊天對話,並能夠評分和修改最後的回應

  1. 開啟 Label Studio 並按一下「建立」按鈕。
  2. 在「專案名稱」欄位中輸入專案名稱,例如 具有聊天的新專案
  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_core.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 中,開啟「具有聊天的新專案」。按一下建立的工作以檢視對話歷史記錄並編輯/註解回應。

自訂標註組態

您可以修改 Label Studio 中的預設標註組態,以新增更多目標標籤,例如回應情感、相關性以及許多其他類型的註解器回饋

可以從 UI 新增新的標註組態:前往 設定 > 標註介面 並設定具有其他標籤的自訂組態,例如情感的 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://127.0.0.1:8080
  • project_id - 現有的 Label Studio 專案 ID。覆寫 LABEL_STUDIO_PROJECT_ID。將資料儲存在此專案中。
  • project_name - 如果未指定專案 ID,則為專案名稱。建立新專案。預設值為使用目前日期格式化的 "LangChain-%Y-%m-%d"
  • project_config - 自訂標註組態
  • mode:使用此捷徑從頭開始建立目標組態
    • "prompt" - 單一提示、單一回應。預設值。
    • "chat" - 多回合聊天模式。

此頁面是否對您有幫助?