
    Ng6                        d dl mZ d dlmZmZmZ d dlZd dlmZ d dl	m
Z
  G d de
          Z G d d	e
          Z G d
 de
          Z G d de
          ZdS )    )annotations)AnyDictOptionalN)CallbackManagerForToolRun)BaseToolc                  p    e Zd ZU dZdZded<   dZded<   ded<   ded<   ded	<   d
Zded<   	 dddZddZ	dS )CogniswitchKnowledgeRequesta!  Tool that uses the Cogniswitch service to answer questions.

    name: str = "cogniswitch_knowledge_request"
    description: str = (
        "A wrapper around cogniswitch service to answer the question
        from the knowledge base."
        "Input should be a search query."
    )
    cogniswitch_knowledge_requeststrnamezYA wrapper around cogniswitch service to 
    answer the question from the knowledge base.descriptioncs_token	OAI_tokenapiKeyz@https://api.cogniswitch.ai:8243/cs-api/0.0.1/cs/knowledgeRequestapi_urlNqueryrun_manager#Optional[CallbackManagerForToolRun]returnDict[str, Any]c                T    |                      | j        | j        || j                  }|S )a  
        Use the tool to answer a query.

        Args:
            query (str): Natural language query,
              that you would like to ask to your knowledge graph.
            run_manager (Optional[CallbackManagerForChainRun]):
            Manager for chain run callbacks.

        Returns:
            Dict[str, Any]: Output dictionary containing
            the 'response' from the service.
        )	answer_csr   r   r   )selfr   r   responses       f/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/tools/cogniswitch/tool.py_runz CogniswitchKnowledgeRequest._run   s&    $ >>$-TT    dictc                    |st          d          |st          d          |st          d          |st          d          |||d}d|i}t          j        | j        |d|          }|                                S )	ac  
        Send a query to the Cogniswitch service and retrieve the response.

        Args:
            cs_token (str): Cogniswitch token.
            OAI_token (str): OpenAI token.
            apiKey (str): OAuth token.
            query (str): Query to be answered.

        Returns:
            dict: Response JSON from the Cogniswitch service.
        zMissing cs_tokenzMissing OpenAI tokenzMissing cogniswitch OAuth tokenzMissing input query)r   platformTokenopenAITokenr   Fheadersverifydata)
ValueErrorrequestspostr   json)r   r   r   r   r   r$   r&   r   s           r   r   z%CogniswitchKnowledgeRequest.answer_cs2   s      	1/000 	53444 	@>??? 	42333 %$
 
 =wuSWXXX}}r   N)r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
__name__
__module____qualname____doc__r   __annotations__r   r   r   r    r   r   r
   r
   
   s           0D////4K 4 4 4 4MMMNNNKKKUGUUUU
 <@    *     r   r
   c                  p    e Zd ZU dZdZded<   dZded<   ded<   ded<   ded	<   d
Zded<   	 dddZddZ	dS )CogniswitchKnowledgeStatusae  Tool that uses the Cogniswitch services to get the
     status of the document or url uploaded.

    name: str = "cogniswitch_knowledge_status"
    description: str = (
        "A wrapper around cogniswitch services to know the status of
         the document uploaded from a url or a file. "
        "Input should be a file name or the url link"
    )
    cogniswitch_knowledge_statusr   r   zlA wrapper around cogniswitch services to know 
    the status of the document uploaded from a url or a file.r   r   r   r   zFhttps://api.cogniswitch.ai:8243/cs-api/0.0.1/cs/knowledgeSource/statusknowledge_status_urlNdocument_namer   r   r   r   c                0    |                      |          }|S )a  
        Use the tool to know the status of the document uploaded.

        Args:
            document_name (str): name of the document or
            the url uploaded
            run_manager (Optional[CallbackManagerForChainRun]):
            Manager for chain run callbacks.

        Returns:
            Dict[str, Any]: Output dictionary containing
            the 'response' from the service.
        )knowledge_status)r   r6   r   r   s       r   r   zCogniswitchKnowledgeStatus._runi   s    $ ((77r   r   c                `   || j         d}| j        | j        | j         d}t          j        | j        ||d          }|j        dk    r^|                                }t          |d                   }|                    d          }|dk    rd	|d<   n;|d
k    rd|d<   n/|dk    rd|d<   n#|dk    rd|d<   n|dk    rd|d<   n|dk    rd|d<   d|	                                v r|
                    d           d|	                                v r|
                    d           d|	                                v r|
                    d           d|	                                v r|
                    d           d|	                                v r|
                    d           |S d|j        iS )a  
        Use this function to know the status of the document or the URL uploaded
        Args:
            document_name (str): The document name or the url that is uploaded.

        Returns:
            dict: Response JSON from the Cogniswitch service.
        )docNamer!   r   r"   r!   F)r$   paramsr%      statusr   SUCCESS   
PROCESSING   UPLOADED   FAILURE   UPLOAD_FAILURE   REJECTEDfilePathsavedFileNameintegrationConfigIdmetaData
docEntryIdmessage)r   r   r   r(   getr5   status_coder*   r   keyspop)r   r6   r<   r$   r   source_infosource_datar?   s           r   r8   z+CogniswitchKnowledgeStatus.knowledge_status~   s    +T]KKk>!]
 

 <%	
 
 
 3&&"--//K{2//K __X..F{{(1H%%1(4H%%1(2H%%1(1H%%1(8H%%1(2H%[--////
++++"2"2"4"444000$(8(8(:(::: 5666[--////
+++{//1111--- 8/ r   r+   )r6   r   r   r   r   r   )r6   r   r   r   )
r,   r-   r.   r/   r   r0   r   r5   r   r8   r1   r   r   r3   r3   S   s         	 	 /D....AK A A A AMMMNNNKKKP      <@    *6 6 6 6 6 6r   r3   c                  v    e Zd ZU dZdZded<   dZded<   ded<   ded<   ded	<   d
Zded<   	 	 	 	 dddZddZ	dS )CogniswitchKnowledgeSourceFilea  Tool that uses the Cogniswitch services to store data from file.

    name: str = "cogniswitch_knowledge_source_file"
    description: str = (
        "This calls the CogniSwitch services to analyze & store data from a file.
        If the input looks like a file path, assign that string value to file key.
        Assign document name & description only if provided in input."
    )
    !cogniswitch_knowledge_source_filer   r   z
        This calls the CogniSwitch services to analyze & store data from a file. 
        If the input looks like a file path, assign that string value to file key. 
        Assign document name & description only if provided in input.
        r   r   r   r   zDhttps://api.cogniswitch.ai:8243/cs-api/0.0.1/cs/knowledgeSource/fileknowledgesource_fileNfileOptional[str]r6   document_descriptionr   r   r   r   c                B    |sddiS |                      |||          }|S )a  
        Execute the tool to store the data given from a file.
        This calls the CogniSwitch services to analyze & store data from a file.
        If the input looks like a file path, assign that string value to file key.
        Assign document name & description only if provided in input.

        Args:
            file Optional[str]: The file path of your knowledge
            document_name Optional[str]: Name of your knowledge document
            document_description Optional[str]: Description of your knowledge document
            run_manager (Optional[CallbackManagerForChainRun]):
            Manager for chain run callbacks.

        Returns:
            Dict[str, Any]: Output dictionary containing
            the 'response' from the service.
        rP   No input provided)r[   r6   r]   
store_data)r   r[   r6   r]   r   r   s         r   r   z#CogniswitchKnowledgeSourceFile._run   sF    0  
	.  +%9 '  H
 Or   r   c                    | j         | j        | j        d}|sd}|sd}|dt          |d          i}||d}t	          j        | j        |d||          }|j        d	k    r|                                S d
diS )a  
        Store data using the Cogniswitch service.
        This calls the CogniSwitch services to analyze & store data from a file.
        If the input looks like a file path, assign that string value to file key.
        Assign document name & description only if provided in input.

        Args:
            file (Optional[str]): file path of your file.
            the current files supported by the files are
            .txt, .pdf, .docx, .doc, .html
            document_name (Optional[str]): Name of the document you are uploading.
            document_description (Optional[str]): Description of the document.

        Returns:
            dict: Response JSON from the Cogniswitch service.
        r;    Nr[   rb)documentNamedocumentDescriptionF)r$   r%   r&   filesr=   rP   Bad Request)	r   r   r   openr(   r)   rZ   rR   r*   )r   r[   r6   r]   r$   rg   r&   r   s           r   ra   z)CogniswitchKnowledgeSourceFile.store_data   s    . k>!]
 
  	M# 	&#% T$--.E *#7
 
 =%
 
 
 3&&==??"}--r   NNNN)
r[   r\   r6   r\   r]   r\   r   r   r   r   )r[   r\   r6   r\   r]   r\   r   r   )
r,   r-   r.   r/   r   r0   r   rZ   r   ra   r1   r   r   rX   rX      s           4D3333K    
 MMMNNNKKKN      #'+.2;?" " " " "H2. 2. 2. 2. 2. 2.r   rX   c                  v    e Zd ZU dZdZded<   dZded<   ded<   ded<   ded	<   d
Zded<   	 	 	 	 dddZddZ	dS )CogniswitchKnowledgeSourceURLax  Tool that uses the Cogniswitch services to store data from a URL.

    name: str = "cogniswitch_knowledge_source_url"
    description: str = (
        "This calls the CogniSwitch services to analyze & store data from a url.
        the URL is provided in input, assign that value to the url key.
        Assign document name & description only if provided in input"
    )
     cogniswitch_knowledge_source_urlr   r   z
    This calls the CogniSwitch services to analyze & store data from a url. 
        the URL is provided in input, assign that value to the url key. 
        Assign document name & description only if provided in inputr   r   r   r   zChttps://api.cogniswitch.ai:8243/cs-api/0.0.1/cs/knowledgeSource/urlknowledgesource_urlNurlr\   r6   r]   r   r   r   r   c                B    |sddiS |                      |||          }|S )a  
        Execute the tool to store the data given from a url.
        This calls the CogniSwitch services to analyze & store data from a url.
        the URL is provided in input, assign that value to the url key.
        Assign document name & description only if provided in input.

        Args:
            url Optional[str]: The website/url link of your knowledge
            document_name Optional[str]: Name of your knowledge document
            document_description Optional[str]: Description of your knowledge document
            run_manager (Optional[CallbackManagerForChainRun]):
            Manager for chain run callbacks.

        Returns:
            Dict[str, Any]: Output dictionary containing
            the 'response' from the service.
        rP   r_   )ro   r6   r]   r`   )r   ro   r6   r]   r   r   s         r   r   z"CogniswitchKnowledgeSourceURL._run?  sF    0  	.  ??'!5 # 
 

 r   r   c                    | j         | j        | j        d}|sd}|sd}|sddiS d|i}t          j        | j        |d|          }|j        dk    r|                                S dd	iS )
aE  
        Store data using the Cogniswitch service.
        This calls the CogniSwitch services to analyze & store data from a url.
        the URL is provided in input, assign that value to the url key.
        Assign document name & description only if provided in input.

        Args:
            url (Optional[str]): URL link.
            document_name (Optional[str]): Name of the document you are uploading.
            document_description (Optional[str]): Description of the document.

        Returns:
            dict: Response JSON from the Cogniswitch service.
        r;   rc   rP   r_   ro   Fr#   r=   rh   )r   r   r   r(   r)   rn   rR   r*   )r   ro   r6   r]   r$   r&   r   s          r   ra   z(CogniswitchKnowledgeSourceURL.store_datab  s    * k>!]
 
  	M# 	&#%  	.  3<D}(	  H 3&&==??"}--r   rj   )
ro   r\   r6   r\   r]   r\   r   r   r   r   )ro   r\   r6   r\   r]   r\   r   r   )
r,   r-   r.   r/   r   r0   r   rn   r   ra   r1   r   r   rl   rl   (  s           3D2222HK H H H H MMMNNNKKKM      "'+.2;?! ! ! ! !F-. -. -. -. -. -.r   rl   )
__future__r   typingr   r   r   r(   langchain_core.callbacksr   langchain_core.toolsr   r
   r3   rX   rl   r1   r   r   <module>rv      s9   " " " " " " & & & & & & & & & &  > > > > > > ) ) ) ) ) )F F F F F( F F FRa a a a a a a aHn. n. n. n. n.X n. n. n.bg. g. g. g. g.H g. g. g. g. g.r   