电报
此笔记本演示如何使用 Telegram 聊天加载程序。此类有助于将导出的 Telegram 对话映射到 LangChain 聊天消息。
该过程包括三个步骤:
- 通过从 Telegram 应用程序复制聊天并将其粘贴到本地计算机上的文件中来导出聊天.txt文件
- 创建
TelegramChatLoader文件路径指向 JSON 文件或 JSON 文件目录 - 叫
loader.load()(或loader.lazy_load()) 执行转换。可选使用merge_chat_runs按顺序合并来自同一发件人的消息,和/或map_ai_messages将指定发件人的邮件转换为 AIMessage 类。
1. 创建消息转储
目前(2023 年 8 月 23 日)此加载器最支持从 Telegram 桌面应用程序导出聊天记录生成的格式的 json 文件。
重要:有“精简版”电报,例如“Telegram for MacOS”,它们缺乏导出功能。请确保您使用正确的应用程序来导出文件。
要进行导出,请执行以下作:
- 下载并打开 Telegram 桌面
- 选择对话
- 导航到对话设置(目前右上角的三个点)
- 点击“导出聊天记录”
- 取消选择照片和其他媒体。选择 “Machine-readable JSON” 格式进行导出。
示例如下:
%%writefile telegram_conversation.json
{
"name": "Jiminy",
"type": "personal_chat",
"id": 5965280513,
"messages": [
{
"id": 1,
"type": "message",
"date": "2023-08-23T13:11:23",
"date_unixtime": "1692821483",
"from": "Jiminy Cricket",
"from_id": "user123450513",
"text": "You better trust your conscience",
"text_entities": [
{
"type": "plain",
"text": "You better trust your conscience"
}
]
},
{
"id": 2,
"type": "message",
"date": "2023-08-23T13:13:20",
"date_unixtime": "1692821600",
"from": "Batman & Robin",
"from_id": "user6565661032",
"text": "What did you just say?",
"text_entities": [
{
"type": "plain",
"text": "What did you just say?"
}
]
}
]
}
Overwriting telegram_conversation.json
2. 创建 Chat Loader
只需要文件路径。您可以选择指定映射到 ai 消息的用户名,以及配置是否合并消息运行。
from langchain_community.chat_loaders.telegram import TelegramChatLoader
API 参考:TelegramChatLoader
loader = TelegramChatLoader(
path="./telegram_conversation.json",
)
3. 加载消息
这load()(或lazy_load) 方法返回一个 “ChatSessions” 列表,该列表当前仅包含每个加载的对话的消息列表。
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()
# Merge consecutive messages from the same sender into a single message
merged_messages = merge_chat_runs(raw_messages)
# Convert messages from "Jiminy Cricket" to AI messages
messages: List[ChatSession] = list(
map_ai_messages(merged_messages, sender="Jiminy Cricket")
)
后续步骤
然后,您可以按照自己认为合适的方式使用这些消息,例如微调模型、选择少量样本示例,或直接对下一条消息进行预测
from langchain_openai import ChatOpenAI
llm = ChatOpenAI()
for chunk in llm.stream(messages[0]["messages"]):
print(chunk.content, end="", flush=True)
API 参考:ChatOpenAI
I said, "You better trust your conscience."