~/Library/Messages/chat.db sqlite 数据库中,IMessageChatLoader 会从该数据库读取。
- 使用指向目标
chat.db的路径创建IMessageChatLoader。 - 调用
loader.load()(或loader.lazy_load())执行转换。可选地使用merge_chat_runs合并同一发送者的连续消息,或使用map_ai_messages将指定发送者的消息转换为 “AIMessage”。
1. 获取聊天数据库
通常终端没有~/Library/Messages 的访问权限。可将数据库复制到可访问目录(如 Documents)后再读取;或者(不推荐)在系统设置 > 安全性与隐私 > 完全磁盘访问中为终端授予权限。
我们提供了一个示例数据库,可在此链接下载。
2. 创建 Chat Loader
为加载器提供 zip 目录的文件路径。可选地指定需要映射为 AI 消息的用户 ID,并配置是否合并消息段。3. 加载消息
load()(或 lazy_load)会返回 “ChatSession” 列表,目前每个会话仅包含相应的消息列表。初始情况下所有消息都映射为 HumanMessage。
可选择合并消息“runs”(同一发送者的连续消息),并指定一个发送者代表 “AI”。微调后的 LLM 将学习生成这些 AI 信息。
3. 准备微调
现在将聊天消息转换为 OpenAI 所需的字典格式,可使用convert_messages_for_finetuning 工具。
4. 微调模型
开始微调模型。请确保已安装openai 并正确设置 OPENAI_API_KEY。
5. 在 LangChain 中使用
可以将得到的模型 ID 直接传入ChatOpenAI 模型类。