Discord
此笔记本为快速了解如何在
概览
集成细节
| Class | 包 | 序列化 | JS支持 | Package 最新版本 |
|---|---|---|---|---|
DiscordReadMessages, DiscordSendMessage | langchain-discord-shikenso | N/A | TBD |
Tool features
DiscordReadMessages: 从指定频道读取消息。DiscordSendMessage: 向指定的频道发送消息。
设置
The integration is provided by the langchain-discord-shikenso package. Install it as follows:
%pip install --quiet -U langchain-discord-shikenso
Credentials
此集成要求您将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()
Instantiation
以下是一个示例,展示如何在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
直接调用带参数
以下是使用字典作为关键字参数调用工具的一个简单示例。
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风格的代理,在适当的时候调用工具。
# Example: Using Discord Tools in an Agent
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. Instantiate or configure your language model
# (Replace with your actual LLM, e.g., ChatOpenAI(temperature=0))
llm = ...
# 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_react_agent(llm, [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 参考:create_react_agent
API 参考
请参阅以下位置的文档字符串:
for usage details, parameters, and advanced configurations.