引言
微信是全球广泛使用的社交平台,但导出个人聊天记录却不是一件轻松的事情。对于需要少量消息用于模型微调或少样本学习的开发者,本文将展示如何构建一个自定义的聊天加载器,将复制的微信消息转换为LangChain格式的消息列表。
主要内容
1. 创建消息转储
首先,我们需要在微信桌面应用中选择要复制的消息。通过鼠标拖动或右键最多可选100条消息,然后使用Cmd/Ctrl+C
复制。随后,将这些消息粘贴到本地计算机的文本文件中。
例如,创建一个wechat_chats.txt
文件:
%%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_results