§
    šŠtj<  ã                   óŽ   — d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ  G d„ de¦  «        Z G d	„ d
e¦  «        ZdS )é    N)ÚEnum)ÚAnyÚDictÚListÚOptional)ÚCallbackManagerForRetrieverRun)ÚDocument)ÚBaseRetrieverc                   ó   — e Zd ZdZdZdZdS )ÚSearchDepthzSearch depth as enumerator.ÚbasicÚadvancedN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚBASICÚADVANCED© ó    ún/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/retrievers/tavily_search_api.pyr   r   
   s   € € € € € Ø%Ð%à€EØ€H€H€Hr   r   c                   ó  — e Zd ZU dZdZeed<   dZeed<   dZ	eed<   dZ
eed<   ej        Zeed<   d	Zeee                  ed
<   d	Zeee                  ed<   i Zeeeef                  ed<   d	Zee         ed<   dededee         fd„Zd	S )ÚTavilySearchAPIRetrieveraf  Tavily Search API retriever.

    Setup:
        Install ``langchain-community`` and set environment variable ``TAVILY_API_KEY``.

        .. code-block:: bash

            pip install -U langchain-community
            export TAVILY_API_KEY="your-api-key"

    Key init args:
        k: int
            Number of results to include.
        include_generated_answer: bool
            Include a generated answer with results
        include_raw_content: bool
            Include raw content with results.
        include_images: bool
            Return images in addition to text.

    Instantiate:
        .. code-block:: python

            from langchain_community.retrievers import TavilySearchAPIRetriever

            retriever = TavilySearchAPIRetriever(k=3)

    Usage:
        .. code-block:: python

            query = "what year was breath of the wild released?"

            retriever.invoke(query)

    Use within a chain:
        .. code-block:: python

            from langchain_core.output_parsers import StrOutputParser
            from langchain_core.prompts import ChatPromptTemplate
            from langchain_core.runnables import RunnablePassthrough
            from langchain_openai import ChatOpenAI

            prompt = ChatPromptTemplate.from_template(
                """Answer the question based only on the context provided.

            Context: {context}

            Question: {question}"""
            )

            llm = ChatOpenAI(model="gpt-3.5-turbo-0125")

            def format_docs(docs):
                return "

".join(doc.page_content for doc in docs)

            chain = (
                {"context": retriever | format_docs, "question": RunnablePassthrough()}
                | prompt
                | llm
                | StrOutputParser()
            )

            chain.invoke("how many units did bretch of the wild sell in 2020")

    é
   ÚkFÚinclude_generated_answerÚinclude_raw_contentÚinclude_imagesÚsearch_depthNÚinclude_domainsÚexclude_domainsÚkwargsÚapi_keyÚqueryÚrun_managerÚreturnc                ó"  ‡ ‡— 	 	 ddl m} n# t          $ r	 ddl m} Y nw xY wn# t          $ r t          d¦  «        ‚w xY w |‰ j        pt
          j        d         ¬¦  «        }‰ j        s‰ j        n	‰ j        dz
  } |j	        d||‰ j
        j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        dœ‰ j        pi ¤ŽŠˆˆ fd	„‰                     d
¦  «        D ¦   «         }‰ j        r+t%          ‰                     dd¦  «        dddœ¬¦  «        g|¢}|S )Nr   )ÚTavilyClient)ÚClientzTTavily python package not found. Please install it with `pip install tavily-python`.ÚTAVILY_API_KEY)r#   é   )r$   Úmax_resultsr   Úinclude_answerr    r!   r   r   c           
      óV  •— g | ]¥}t          ‰j        s|                     d d¦  «        n|                     d¦  «        pd|                     dd¦  «        |                     dd¦  «        dœd„ |                     ¦   «         D ¦   «         ¥d‰                     d¦  «        i¥¬¦  «        ‘Œ¦S )	ÚcontentÚ Úraw_contentÚtitleÚurl©r2   Úsourcec                 ó"   — i | ]\  }}|d v¯	||“ŒS ))r/   r2   r3   r1   r   )Ú.0r   Úvs      r   ú
<dictcomp>zOTavilySearchAPIRetriever._get_relevant_documents.<locals>.<listcomp>.<dictcomp>‚   s4   € ð ð ð á ˜A˜qØÐ$NÐNÐNð ˜1àNÐNÐNr   Úimages©Úpage_contentÚmetadata)r	   r   ÚgetÚitems)r7   ÚresultÚresponseÚselfs     €€r   ú
<listcomp>zDTavilySearchAPIRetriever._get_relevant_documents.<locals>.<listcomp>z   sÞ   ø€ ð 
ð 
ð 
ð  õ àÔ/ð7˜VŸZšZ¨	°2Ñ6Ô6Ð6à—j’j Ñ/Ô/Ð5°2à#ŸZšZ¨°Ñ4Ô4Ø$Ÿjšj¨°Ñ3Ô3ð	ð 	ðð à$*§L¢L¡N¤Nðñ ô ð	ð ˜hŸlšl¨8Ñ4Ô4ð	ð 	ð	ñ ô ð
ð 
ð 
r   ÚresultsÚanswerr0   zSuggested Answerzhttps://tavily.com/r4   r;   r   )Útavilyr(   ÚImportErrorr)   r#   ÚosÚenvironr   r   Úsearchr   Úvaluer    r!   r   r   r"   r>   r	   )rB   r$   r%   r(   rF   r,   ÚdocsrA   s   `      @r   Ú_get_relevant_documentsz0TavilySearchAPIRetriever._get_relevant_documents^   s·  øø€ ð
	ð:Ø/Ð/Ð/Ð/Ð/Ð/Ð/øÝð :ð :ð :à9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ð:øøøøøõ ð 	ð 	ð 	ÝðFñô ð ð	øøøð � d¤lÐ&Rµb´jÐAQÔ6RÐSÑSÔSˆØ$(Ô$AÐQ�d”f�fÀtÄvÐPQÁzˆØ �6”=ð 

ØØ#ØÔ*Ô0ØÔ8Ø Ô0Ø Ô0Ø $Ô 8ØÔ.ð

ð 

ð Œ{Ð ˜bð

ð 

ˆð
ð 
ð 
ð 
ð 
ð  #Ÿ,š, yÑ1Ô1ð!
ñ 
ô 
ˆð$ Ô(ð 
	åØ!)§¢¨h¸Ñ!;Ô!;à!3Ø"7ðð ðñ ô ð	ð ð	ˆDð ˆs   … ‹# Œœ# žŸ# £=)r   r   r   r   r   ÚintÚ__annotations__r   Úboolr   r   r   r   r   r    r   r   Ústrr!   r"   r   r   r#   r   r	   rM   r   r   r   r   r      s
  € € € € € € ð@ð @ðD €A€s€K€K�KØ%*Ð˜dÐ*Ð*Ñ*Ø %Ð˜Ð%Ð%Ñ%Ø €N�DÐ Ð Ñ Ø +Ô 1€L�+Ð1Ð1Ñ1Ø+/€O�X˜d 3œiÔ(Ð/Ð/Ñ/Ø+/€O�X˜d 3œiÔ(Ð/Ð/Ñ/Ø')€FˆH�T˜#˜s˜(”^Ô$Ð)Ð)Ñ)Ø!€GˆX�cŒ]Ð!Ð!Ñ!ð:Øð:Ø*Hð:à	ˆhŒð:ð :ð :ð :ð :ð :r   r   )rH   Úenumr   Útypingr   r   r   r   Úlangchain_core.callbacksr   Úlangchain_core.documentsr	   Úlangchain_core.retrieversr
   r   r   r   r   r   ú<module>rW      sâ   ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à CÐ CÐ CÐ CÐ CÐ CØ -Ð -Ð -Ð -Ð -Ð -Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð �$ñ ô ð ðGð Gð Gð Gð G˜}ñ Gô Gð Gð Gð Gr   