Telegram
這個筆記本展示如何使用 Telegram 聊天載入器。這個類別幫助將匯出的 Telegram 對話映射到 LangChain 聊天訊息。
這個過程有三個步驟
- 透過從 Telegram 應用程式複製聊天內容並貼到您本地電腦上的檔案中,匯出聊天 .txt 檔案
- 使用指向 json 檔案或 JSON 檔案目錄的檔案路徑,建立
TelegramChatLoader
- 呼叫
loader.load()
(或loader.lazy_load()
) 執行轉換。可選地使用merge_chat_runs
來合併來自同一發送者的連續訊息,和/或map_ai_messages
將來自指定發送者的訊息轉換為 "AIMessage" 類別。
1. 建立訊息轉儲
目前 (2023/08/23) 此載入器最適合以從 Telegram Desktop App 匯出聊天記錄所產生的 json 檔案格式。
重要提示:有些 Telegram 的「輕量」版本,例如 "Telegram for MacOS",缺少匯出功能。請確保您使用正確的應用程式來匯出檔案。
進行匯出:
- 下載並開啟 Telegram Desktop
- 選擇一個對話
- 導航到對話設定(目前是右上角的三個點)
- 點擊「匯出聊天記錄」
- 取消選擇照片和其他媒體。選擇「機器可讀 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. 建立聊天載入器
只需要檔案路徑。您可以選擇性地指定映射到 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."