松弛
此笔记本介绍如何使用 Slack 聊天加载程序。此类有助于将导出的 Slack 对话映射到 LangChain 聊天消息。
该过程包括三个步骤:
- 按照此处的说明导出所需的对话线程。
- 创建
SlackChatLoader文件路径指向 JSON 文件或 JSON 文件目录 - 叫
loader.load()(或loader.lazy_load()) 执行转换。可选使用merge_chat_runs按顺序合并来自同一发件人的消息,和/或map_ai_messages将指定发件人的邮件转换为 AIMessage 类。
1. 创建消息转储
目前(2023 年 8 月 23 日)这个加载器最支持从 Slack 导出 You're a direct message conversation 生成的格式的文件的 zip 目录。按照 Slack 的最新说明进行作。
我们在 LangChain 仓库中有一个示例。
import requests
permalink = "https://raw.githubusercontent.com/langchain-ai/langchain/342087bdfa3ac31d622385d0f2d09cf5e06c8db3/libs/langchain/tests/integration_tests/examples/slack_export.zip"
response = requests.get(permalink)
with open("slack_dump.zip", "wb") as f:
f.write(response.content)
2. 创建 Chat Loader
为加载程序提供 zip 目录的文件路径。您可以选择指定映射到 ai 消息的用户 ID,以及配置是否合并消息运行。
from langchain_community.chat_loaders.slack import SlackChatLoader
API 参考:SlackChatLoader
loader = SlackChatLoader(
path="slack_dump.zip",
)
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 "U0500003428" to AI messages
messages: List[ChatSession] = list(
map_ai_messages(merged_messages, sender="U0500003428")
)
后续步骤
然后,您可以按照自己认为合适的方式使用这些消息,例如微调模型、选择少量样本,或直接对下一条消息进行预测。
from langchain_openai import ChatOpenAI
llm = ChatOpenAI()
for chunk in llm.stream(messages[1]["messages"]):
print(chunk.content, end="", flush=True)
API 参考:ChatOpenAI
Hi,
I hope you're doing well. I wanted to reach out and ask if you'd be available to meet up for coffee sometime next week. I'd love to catch up and hear about what's been going on in your life. Let me know if you're interested and we can find a time that works for both of us.
Looking forward to hearing from you!
Best, [Your Name]