Advertisement

[Unlocking the Power of LangSmith Chat Datasets: Fine-Tune Your Model for Enhanced Performance]

阅读量:
复制代码
    # 引言
    在现代人工智能应用中,高质量的聊天模型往往需要大量的训练数据来提升其表现。LangSmith提供了一种简便的方法来使用聊天数据集对模型进行微调,从而更符合具体应用场景的需求。在这篇文章中,我们将介绍如何利用LangSmith的工具加载聊天数据集,并对模型进行微调。
    
    # 主要内容
    
    ## 1. 创建数据集
    微调模型的第一步是准备合适的数据集。在这里,我们将通过LangSmith的API创建并加载一个聊天数据集。
    
    ```python
    import os
    import uuid
    from langsmith.client import Client
    
    # 使用API代理服务提高访问稳定性
    os.environ["LANGCHAIN_API_KEY"] = "YOUR API KEY"
    
    client = Client()
    
    import requests
    
    url = "https://raw.githubusercontent.com/langchain-ai/langchain/master/docs/docs/integrations/chat_loaders/example_data/langsmith_chat_dataset.json"
    response = requests.get(url)
    response.raise_for_status()
    data = response.json()
    
    uid = uuid.uuid4().hex[:6]
    dataset_name = f"Extraction Fine-tuning Dataset {uid}"
    ds = client.create_dataset(dataset_name=dataset_name, data_type="chat")
    
    _ = client.create_examples(
    inputs=[e["inputs"] for e in data],
    outputs=[e["outputs"] for e in data],
    dataset_id=ds.id,
    )
    
    
    markdown
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/HyLBsuMY6zpkcx1fwGDrjE5ZFNT8.png)

2. 准备数据

接下来我们将通过调用LangSmithDatasetChatLoader来加载聊天记录并对其进行格式化处理以适应微调的需求

复制代码
    from langchain_community.chat_loaders.langsmith import LangSmithDatasetChatLoader
    from langchain_community.adapters.openai import convert_messages_for_finetuning
    
    loader = LangSmithDatasetChatLoader(dataset_name=dataset_name)
    
    chat_sessions = loader.lazy_load()
    
    training_data = convert_messages_for_finetuning(chat_sessions)
    
    
    python

3. 微调模型

通过采用OpenAI库对模型进行微调训练,在这一步骤中,请确保环境中的配置能够支持完善地配置OpenAI的API接口。

复制代码
    import json
    import time
    from io import BytesIO
    import openai
    
    my_file = BytesIO()
    for dialog in training_data:
    my_file.write((json.dumps({"messages": dialog}) + "\n").encode("utf-8"))
    
    my_file.seek(0)
    training_file = openai.files.create(file=my_file, purpose="fine-tune")
    
    job = openai.fine_tuning.jobs.create(
    training_file=training_file.id,
    model="gpt-3.5-turbo",
    )
    
    # 等待微调完成
    status = openai.fine_tuning.jobs.retrieve(job.id).status
    start_time = time.time()
    while status != "succeeded":
    print(f"Status=[{status}]... {time.time() - start_time:.2f}s", end="\r", flush=True)
    time.sleep(5)
    status = openai.fine_tuning.jobs.retrieve(job.id).status
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/nJQwtmkTDCisXe3NgYZH9h6Koaj1.png)

4. 在LangChain中使用

微调完成后,我们可以在LangChain应用中使用得到的模型ID。

复制代码
    from langchain_openai import ChatOpenAI
    
    # 获取微调模型ID
    job = openai.fine_tuning.jobs.retrieve(job.id)
    model_id = job.fine_tuned_model
    
    model = ChatOpenAI(
    model=model_id,
    temperature=1,
    )
    
    # 使用微调后的模型
    model.invoke("There were three ravens sat on a tree.")
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/z45Z9kmnUQlTLuav3R8XGpHfiO6t.png)

常见问题和解决方案

  • 网络访问受限问题 : 在部分区域中存在网络连接受阻的情况,请考虑部署API代理服务器来缓解这一问题,并通过其提升系统的稳定性和可靠性。
    • 耗时较长的问题 : 微调训练过程可能会花费较长时间,请考虑选择非高峰期时段进行微调训练,并根据实际情况调节数据集容量以缩短所需的时间。

总结和进一步学习资源

按照本文所述的方法, 您已有效地应用了 LangSmith 聊天数据集对模型进行了微调, 从而能够在 LangChain 应用中更好地满足您的特定需求. 以进一步深入了解有关 LangSmith 及其在 LangChain 中的应用, 可以参考以下资源:

参考资料

  1. LangSmith 官方文档
  2. OpenAI API 文档
  3. LangChain GitHub 仓库

如若这篇文章对你有所帮助,请您期待您的点赞与关注。您的支持是我坚持创作的核心动力。

复制代码
    ---END---

全部评论 (0)

还没有任何评论哟~