SlackToolkit#

class langchain_community.agent_toolkits.slack.toolkit.SlackToolkit[source]#

Bases: BaseToolkit

Toolkit for interacting with Slack.

Parameters:

client – The Slack client.

Setup:

Install slack_sdk and set environment variable SLACK_USER_TOKEN.

pip install -U slack_sdk
export SLACK_USER_TOKEN="your-user-token"
Key init args:
client: slack_sdk.WebClient

The Slack client.

Instantiate:
from langchain_community.agent_toolkits import SlackToolkit

toolkit = SlackToolkit()
Tools:
tools = toolkit.get_tools()
tools
[SlackGetChannel(client=<slack_sdk.web.client.WebClient object at 0x113caa8c0>),
SlackGetMessage(client=<slack_sdk.web.client.WebClient object at 0x113caa4d0>),
SlackScheduleMessage(client=<slack_sdk.web.client.WebClient object at 0x113caa440>),
SlackSendMessage(client=<slack_sdk.web.client.WebClient object at 0x113caa410>)]
Use within an agent:
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

llm = ChatOpenAI(model="gpt-4o-mini")
agent_executor = create_react_agent(llm, tools)

example_query = "When was the #general channel created?"

events = agent_executor.stream(
    {"messages": [("user", example_query)]},
    stream_mode="values",
)
for event in events:
    message = event["messages"][-1]
    if message.type != "tool":  # mask sensitive information
        event["messages"][-1].pretty_print()
 ================================[1m Human Message [0m=================================

When was the #general channel created?
==================================[1m Ai Message [0m==================================
Tool Calls:
get_channelid_name_dict (call_NXDkALjoOx97uF1v0CoZTqtJ)
Call ID: call_NXDkALjoOx97uF1v0CoZTqtJ
Args:
==================================[1m Ai Message [0m==================================

The #general channel was created on timestamp 1671043305.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

param client: WebClient [Optional]#
get_tools() List[BaseTool][source]#

Get the tools in the toolkit.

Return type:

List[BaseTool]

Examples using SlackToolkit