# 使用LangChain加载和处理WeChat聊天记录
WeChat的聊天记录一直以来都难以直接导出,这给后续的分析或模型的微调带来了挑战。然而,为了帮助您处理有限数量的消息,我们可以使用一个自定义的聊天记录加载工具,将复制粘贴的WeChat消息转换为LangChain消息格式。
## 技术背景介绍
LangChain是一款兼容多种聊天记录格式的开源工具,支持将聊天记录转换为可用于模型微调或样例选择的消息格式。而WeChat的消息导出功能有限,我们可以借鉴LangChain的Discord聊天记录加载方法,自定义一个WeChat消息加载器。
## 核心原理解析
通过将WeChat消息复制至文本文件,并利用正则表达式解析文件中的消息内容,我们可以构建一个自定义的聊天记录加载器。该加载器能够将消息转换为LangChain的`HumanMessage`和`AIMessage`格式,并进行后续处理,如消息合并和AI消息转换。
## 代码实现演示(重点)
以下是完整的代码实现过程:
### 1. 创建消息转储
首先,在WeChat桌面应用中选择需要的消息并复制,然后将其粘贴到本地计算机上的文本文件中,如下所示:
```python
%%writefile wechat_chats.txt
女朋友 2023/09/16 2:51 PM
天气有点凉
男朋友 2023/09/16 2:51 PM
珍簟凉风著,瑶琴寄恨生。嵇君懒书札,底物慰秋情。
女朋友 2023/09/16 3:06 PM
忙什么呢
男朋友 2023/09/16 3:06 PM
今天只干成了一件像样的事
那就是想你
女朋友 2023/09/16 3:06 PM
[动画表情]
2. 定义聊天记录加载器
定义一个自定义的WeChatChatLoader来解析文本文件中的消息:
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))",
)
def _append_message_to_resu


591

被折叠的 条评论
为什么被折叠?



