前言:
(本文翻译自blog.langchain.dev,原始博客链接:https://blog.langchain.dev/chat-loaders-finetune-a-chatmodel-in-your-voice/)
摘要
我们正在新增一个集成类型:ChatLoaders,让您更容易地根据自己独特的写作风格进行微调。这些工具可以帮助将流行的消息平台的数据转换为与微调格式(如OpenAI所支持的格式)兼容的聊天消息。
感谢 Greg Kamradt 和 Misbah Syed 在此方面的思考领导力!
重要链接
- Chat Loaders Langchain开发文档:https://python.langchain.com/docs/integrations/chat_loaders/?ref=blog.langchain.dev
- Twitter 微调示例(Elon Musk推特生成器):https://elon-twitter-clone.streamlit.app/?ref=blog.langchain.dev
- Twitter 微调示例代码(LangChain官方Github示例):https://github.com/langchain-ai/twitter-finetune?ref=blog.langchain.dev
- 下周关于此主题的网络研讨会:https://www.crowdcast.io/c/lzafugqtyata?ref=blog.langchain.dev
背景
周二,OpenAI 宣布增强了微调支持(OpenAI博客链接:https://openai.com/blog/gpt-3-5-turbo-fine-tuning-and-api-updates?ref=blog.langchain.dev),将服务扩展到更大的聊天模型,如 GPT-3.5-turbo。这使得任何人都可以为自己的使用场景定制这些更大、更有能力的模型。他们还暗示今年晚些时候会支持对 GPT-4 的微调。
尽管通常不建议微调来为LLM提供大量新的知识或事实回忆(参考文章:https://www.glean.com/blog/lessons-and-learnings-from-building-an-enterprise-ready-ai-assistant?ref=blog.langchain.dev),但它适用于风格转换。
我们有很多社区成员询问如何使 ChatGPT “用你自己的声音” 回应——而微调是实现这一目标的绝佳方法!
像 Greg Kamdrat 这样在 Twitter 上的优秀人士也对这种用例持乐观态度:
微调你的通信可能对各种应用程序都很有用,例如以你品牌的声音回应客户,生成更了解你团队独特行话的内容,或者可靠地用目标语言聊天,或者只是为了好玩!
为什么这比直接指令更好?描述风格和语气可能很难!我们大多数人的写作风格并不像 ChatGPT,要让 LLM 一直以特定的声音回应(特别是在长时间的对话中)有时会令人沮丧。
为什么这比少量的示例更好?仅通过几个简洁的片段捕捉你的声音可能是个挑战!微调允许您提供更多的示例,模型可以从中学习,而不必每次查询模型时都看到它们。
ChatLoaders
在 LangChain,我们希望使您尽可能容易地利用这种增强的微调支持。为了简化将模型适应您的声音,我们正在添加一个新的集成类型:ChatLoaders。
这些工具接受从流行的消息平台导出的数据,并将它们转换为 LangChain 消息对象,然后您可以很容易地转换为与平台无关的消息格式,如 OpenAI, Llama 2 等。这些训练数据可以直接用于微调模型。
目前我们已为以下流行的消息平台添加了加载器:
- Facebook Messenger
- Slack
- Telegram
- 我们还添加了一个关于如何为 Discord 和 Twitter (使用 Apify) 进行此操作的使用指南,并计划在不久的将来集成更多的聊天加载器。如果你有一个你想支持的喜欢的消息平台,我们很乐意帮助你提交一个 PR!
- 为了帮助您入门,我们在 LangChain 文档中添加了一个端到端的示例笔记本(Colab链接:https://colab.research.google.com/github/langchain-ai/langchain/blob/master/docs/extras/integrations/chat_loaders/facebook.ipynb?ref=blog.langchain.dev),展示了如何在 Facebook 消息的示例集上微调 gpt-3.5-turbo (ChatGPT 背后的模型)。
- ❗ 在进行操作之前,请确保您的对话参与者都支持使用聊天数据训练模型的决定。
- 一旦你有了微调后的模型,你可以在 LangChain 的 ChatOpenAI 类(参考链接:https://api.python.langchain.com/en/latest/chat_models/langchain.chat_models.openai.ChatOpenAI.html?ref=blog.langchain.dev#langchain.chat_models.openai.ChatOpenAI)中直接使用模型名称:
- 然后你可以将这个模型插入到任何其他的 LangChain 组件中!
端到端示例
我们还创建了一个基于 Elon Musk 推文的模型微调的端到端示例。这使用 Apify 加载数据。请注意,这不到100个示例,所以结果可能不是最好的。
我们在这里的 GitHub 仓库开源了这个示例(链接:https://github.com/langchain-ai/twitter-finetune?ref=blog.langchain.dev)。我们还在 Streamlit 应用上托管了它,所以你可以轻松地在这里使用它(链接:https://elon-twitter-clone.streamlit.app/?ref=blog.langchain.dev)。
网络研讨会
关于这个主题还有很多要讨论的。哪种消息最适合微调?还有哪些数据来源可以用于此?你需要多少点?
下周我们将与 Greg Kamradt 一起在网络研讨会上讨论这些问题和更多内容。欢迎加入!
结论
我们很高兴看到微调解锁的所有创意应用。我们已经实现了一些 ChatLoaders,但我们需要您的帮助,使创建您自己的个性化模型变得更容易。帮助我们创建更多的 ChatLoaders!