
    h4                         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y)    N)Enum)AnyDictListOptional)CallbackManagerForRetrieverRun)Document)BaseRetrieverc                       e Zd ZdZdZdZy)SearchDepthzSearch depth as enumerator.basicadvancedN)__name__
__module____qualname____doc__BASICADVANCED     n/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/retrievers/tavily_search_api.pyr   r   
   s    %E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y	)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}  || j                  xs t
        j                  d         }| j                  s| j                  n| j                  dz
  } |j                  d||| j                  j                  | j                  | j                  | j                  | j                  | j                  d| j                   }|j#                  d	      D 	cg c]  }t%        | j                  s|j#                  d
d      n|j#                  d      xs d|j#                  dd      |j#                  dd      d|j'                         D 	ci c]  \  }}	|dvr||	 c}	}d|j#                  d      i       }
}}}	| j                  r#t%        |j#                  dd      ddd      g|
}
|
S # t        $ r
 ddl m} Y w xY w# t        $ r t        d      w xY wc c}	}w c c}	}}w )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)r2   source)r/   r2   r3   r1   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(   r9   r,   responseresultr   vdocss              r   _get_relevant_documentsz0TavilySearchAPIRetriever._get_relevant_documents^   s   
	:/ dll&RbjjAQ6RS$($A$AdfftvvPQz 6== 

#**0088 00 00 $ 8 8..

 kk

6 #,,y1!
 
   // $ZZ	26jj/52#ZZ4$jj3	
 %+LLN Aq$NN 1	 hll84		
 
$ ((!)h!;!3"7	 	D i  :99:  	F 	6
s<   F0 A3G$GG$0G?G GG GG$)r   r   r   r   r   int__annotations__r   boolr   r   r   r   r   r    r   r   strr!   r"   r   r   r#   r   r	   rF   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>rP      s4    	  , , C - 3$ G} Gr   