Skip to main content
本 notebook 演示如何使用 Slack 聊天加载器。该类帮助将导出的 Slack 对话映射为 LangChain 聊天消息。 整个过程分三步:
  1. 按照此处的说明导出所需的对话线程。
  2. 创建 SlackChatLoader,将文件路径指向 JSON 文件或 JSON 文件目录。
  3. 调用 loader.load()(或 loader.lazy_load())执行转换。可选地使用 merge_chat_runs 合并同一发送者连续发送的消息,和/或使用 map_ai_messages 将指定发送者的消息转换为”AIMessage”类。

1. 创建消息转储

目前(2023/08/23),此加载器最好支持由 Slack 导出直接消息对话所生成格式的 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. 创建聊天加载器

提供 zip 目录的文件路径。您可以选择指定映射为 AI 消息的用户 ID,并配置是否合并消息连续块。
from langchain_community.chat_loaders.slack import 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")
)

后续步骤

您可以按需使用这些消息,例如微调模型、few-shot 示例选择,或直接预测下一条消息。
from langchain_openai import ChatOpenAI

llm = ChatOpenAI()

for chunk in llm.stream(messages[1]["messages"]):
    print(chunk.content, end="", flush=True)
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]