a
    bŠÝgG  ã                   @  sÊ   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ er’d dlmZ n$zd dlmZ W n ey´   Y n0 G dd„ deƒZdS )é    )Úannotations)ÚTYPE_CHECKINGÚList)ÚBaseTool)ÚBaseToolkit)Ú
ConfigDictÚField)ÚSlackGetChannel)ÚSlackGetMessage)ÚSlackScheduleMessage)ÚSlackSendMessage)Úlogin)Ú	WebClientc                   @  s<   e Zd ZU dZeedZded< eddZ	ddœd	d
„Z
dS )ÚSlackToolkitaW	  Toolkit for interacting with Slack.

    Parameters:
        client: The Slack client.

    Setup:
        Install ``slack_sdk`` and set environment variable ``SLACK_USER_TOKEN``.

        .. code-block:: bash

            pip install -U slack_sdk
            export SLACK_USER_TOKEN="your-user-token"

    Key init args:
        client: slack_sdk.WebClient
            The Slack client.

    Instantiate:
        .. code-block:: python

            from langchain_community.agent_toolkits import SlackToolkit

            toolkit = SlackToolkit()

    Tools:
        .. code-block:: python

            tools = toolkit.get_tools()
            tools

        .. code-block:: none

            [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:
        .. code-block:: python

            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()

        .. code-block:: none

             ================================[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.
    )Údefault_factoryr   ÚclientT)Zarbitrary_types_allowedzList[BaseTool])Úreturnc                 C  s   t ƒ tƒ tƒ tƒ gS )zGet the tools in the toolkit.)r	   r
   r   r   )Úself© r   ú~/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/agent_toolkits/slack/toolkit.pyÚ	get_toolsi   s
    üzSlackToolkit.get_toolsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ú__annotations__r   Zmodel_configr   r   r   r   r   r      s   
Hÿr   N)Ú
__future__r   Útypingr   r   Zlangchain_core.toolsr   Zlangchain_core.tools.baser   Zpydanticr   r   Z+langchain_community.tools.slack.get_channelr	   Z+langchain_community.tools.slack.get_messager
   Z0langchain_community.tools.slack.schedule_messager   Z,langchain_community.tools.slack.send_messager   Z%langchain_community.tools.slack.utilsr   Z	slack_sdkr   ÚImportErrorr   r   r   r   r   Ú<module>   s    