
    dh4                         S SK r S SKJr  S SKJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJr   " S S\5      r " S	 S
\5      rg)    N)Enum)AnyDictListOptional)CallbackManagerForRetrieverRun)Document)BaseRetrieverc                        \ rS rSrSrSrSrSrg)SearchDepth
   zSearch depth as enumerator.basicadvanced N)__name__
__module____qualname____firstlineno____doc__BASICADVANCED__static_attributes__r       h/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/retrievers/tavily_search_api.pyr   r   
   s    %EHr   r   c                       \ rS rSr% SrSr\\S'   Sr\	\S'   Sr
\	\S'   Sr\	\S'   \R                  r\\S	'   S
r\\\      \S'   S
r\\\      \S'   0 r\\\\4      \S'   S
r\\   \S'   S\S\S\\   4S jrSrg
)TavilySearchAPIRetriever   af  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")

    r   kFinclude_generated_answerinclude_raw_contentinclude_imagessearch_depthNinclude_domainsexclude_domainskwargsapi_keyqueryrun_managerreturnc                     SSK Jn  U" U R                  =(       d    [
        R                  S   S9nU R                  (       d  U R                  OU R                  S-
  nUR                  " SUUU R                  R                  U R                  U R                  U R                  U R                  U R                  S.U R                   D6nUR#                  S	5       VVV	s/ sH  n[%        U R                  (       d  UR#                  S
S5      OUR#                  S5      =(       d    SUR#                  SS5      UR#                  SS5      S.UR'                  5        VV	s0 sH  u  pUS;  d  M  X_M     sn	nESUR#                  S5      0ES9PM     n
nnn	U R                  (       a   [%        UR#                  SS5      SSS.S9/U
Qn
U
$ ! [         a
    SSK Jn   GNf = f! [         a    [        S5      ef = fs  sn	nf s  sn	nnf )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!   resultscontent raw_contenttitleurl)r5   source)r2   r5   r6   r4   images)page_contentmetadataanswerzSuggested Answerzhttps://tavily.com/r   )tavilyr+   ImportErrorr,   r&   osenvironr   r   searchr"   valuer#   r$   r    r!   r%   getr	   items)selfr'   r(   r+   r<   r/   responseresultr   vdocss              r   _get_relevant_documents0TavilySearchAPIRetriever._get_relevant_documents^   s    
	:/ dll&RbjjAQ6RS$($A$AdfftvvPQz== 

#**0088 00 00 $ 8 8..

 kk

6 #,,y1!
  2 // $ZZ	26jj/52#ZZ4$jj3	
 %+LLN$2DA$NN $2	 hll84		 2! 	 
$ ((!)h!;!3"7	 	D i  :99:  	F 	6
sB   G A=G<G6+G61G<GG GG G36G<r   )r   r   r   r   r   r   int__annotations__r   boolr    r!   r   r   r"   r#   r   r   strr$   r%   r   r   r&   r   r	   rI   r   r   r   r   r   r      s    @D AsK%*d* %% ND  + 1 1L+1+/OXd3i(/+/OXd3i(/')FHT#s(^$)!GXc]!::*H:	h:r   r   )r>   enumr   typingr   r   r   r   langchain_core.callbacksr   langchain_core.documentsr	   langchain_core.retrieversr
   r   r   r   r   r   <module>rT      s4    	  , , C - 3$ G} Gr   