Discord
本笔记本提供了在 langchain_discord 中开始使用 Discord 工具的快速概述。有关每个工具和配置的更多详细信息,请参阅您仓库中的 docstrings 或相关文档页面。
概述
集成详情
| Class | Package | Serializable | JS 支持 | Package 最低版本 |
|---|---|---|---|---|
DiscordReadMessages, DiscordSendMessage | langchain-discord-shikenso | N/A | TBD |
工具特性
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)
链式调用
下面是一个更完整的示例,展示了如何在链或代理与 LLM 中集成 DiscordReadMessages 和 DiscordSendMessage 工具。此示例假设您有一个函数(如 create_react_agent),该函数设置了一个 LangChain 风格的代理,能够适时调用工具。
# 示例:在代理中使用 Discord 工具
from langgraph.prebuilt import create_react_agent
from langchain_discord.tools.discord_read_messages import DiscordReadMessages
from langchain_discord.tools.discord_send_messages import DiscordSendMessage
# 1. 实例化或配置您的语言模型
# (用您实际的 LLM 替换,例如 ChatOpenAI(temperature=0))
llm = ...
# 2. 创建 Discord 工具的实例
read_tool = DiscordReadMessages()
send_tool = DiscordSendMessage()
# 3. 构建一个可以使用这些工具的代理
agent_executor = create_react_agent(llm, [read_tool, send_tool])
# 4. 制定一个可能调用一个或两个工具的用户查询
example_query = "请读取频道 1234567890 中最后 5 条消息"
# 5. 以流式模式执行代理(或您的代码结构中的任何方式)
events = agent_executor.stream(
{"messages": [("user", example_query)]},
stream_mode="values",
)
# 6. 打印模型响应(以及任何工具输出) arrival 时
for event in events:
event["messages"][-1].pretty_print()
API Reference:create_react_agent
API 参考
请参阅以下文件的文档字符串以了解使用详情、参数和高级配置:
Related
- Tool conceptual guide
- Tool how-to guides