Skip to main content
本指南提供了在 langchain_discord 中开始使用 Discord 工具的快速概览。有关每个工具和配置的更多详细信息,请参阅代码库中的文档字符串或相关文档页面。

概述

集成详情

可序列化JS 支持版本
DiscordReadMessages, DiscordSendMessagelangchain-discord-shikensoN/ATBDPyPI - Version

工具功能

  • DiscordReadMessages:从指定频道读取消息。
  • DiscordSendMessage:向指定频道发送消息。

设置

该集成由 langchain-discord-shikenso 包提供。安装方式如下:
pip install --quiet -U langchain-discord-shikenso

凭证

此集成要求将 DISCORD_BOT_TOKEN 设置为环境变量,以便与 Discord API 进行身份验证。
export DISCORD_BOT_TOKEN="your-bot-token"
import getpass
import os

# Example prompt to set your token if not already set:
# if not os.environ.get("DISCORD_BOT_TOKEN"):
#     os.environ["DISCORD_BOT_TOKEN"] = getpass.getpass("DISCORD Bot Token:\n")
您可以选择性地设置 LangSmith 以进行追踪或可观测性:
os.environ["LANGSMITH_TRACING"] = "true"
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass()

实例化

以下示例展示了如何在 langchain_discord 中实例化 Discord 工具。请根据您的具体用途进行调整。
from langchain_discord.tools.discord_read_messages import DiscordReadMessages
from langchain_discord.tools.discord_send_messages import DiscordSendMessage

read_tool = DiscordReadMessages()
send_tool = DiscordSendMessage()

# Example usage:
# response = read_tool({"channel_id": "1234567890", "limit": 5})
# print(response)
#
# send_result = send_tool({"message": "Hello from notebook!", "channel_id": "1234567890"})
# print(send_result)

调用

直接传参调用

以下是使用字典中的关键字参数调用工具的简单示例。
invocation_args = {"channel_id": "1234567890", "limit": 3}
response = read_tool(invocation_args)
response

使用 ToolCall 调用

如果您有模型生成的 ToolCall,请按下方格式将其传递给 tool.invoke()
tool_call = {
    "args": {"channel_id": "1234567890", "limit": 2},
    "id": "1",
    "name": read_tool.name,
    "type": "tool_call",
}

tool.invoke(tool_call)

链式调用

以下是一个更完整的示例,展示了如何将 DiscordReadMessagesDiscordSendMessage 工具集成到带有 LLM 的链或 Agent 中。此示例假设您有一个函数(如 create_agent),用于设置能够在适当时调用工具的 LangChain 风格 Agent。
# Example: Using Discord Tools in an Agent

from langchain.agents import create_agent
from langchain_discord.tools.discord_read_messages import DiscordReadMessages
from langchain_discord.tools.discord_send_messages import DiscordSendMessage


# 1. Instantiate or configure your language model
# (Replace with your actual LLM, e.g., ChatOpenAI(temperature=0))
model = ...

# 2. Create instances of the Discord tools
read_tool = DiscordReadMessages()
send_tool = DiscordSendMessage()

# 3. Build an agent that has access to these tools
agent_executor = create_agent(model, [read_tool, send_tool])

# 4. Formulate a user query that may invoke one or both tools
example_query = "Please read the last 5 messages in channel 1234567890"

# 5. Execute the agent in streaming mode (or however your code is structured)
events = agent_executor.stream(
    {"messages": [("user", example_query)]},
    stream_mode="values",
)

# 6. Print out the model's responses (and any tool outputs) as they arrive
for event in events:
    event["messages"][-1].pretty_print()

API 参考

请查看以下文件中的文档字符串: 以获取使用详情、参数说明和高级配置信息。