Ë
    ò©ÑhÎ	  ã                   óv   — d 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  G d	„ d
e«      Zy)ú.Question-answering with sources over an index.é    )ÚAny)ÚAsyncCallbackManagerForChainRunÚCallbackManagerForChainRun)ÚDocument)ÚBaseRetriever)ÚField)ÚStuffDocumentsChain)ÚBaseQAWithSourcesChainc                   óÊ   — e Zd ZU dZ ed¬«      Zeed<   	 dZe	ed<   	 dZ
eed<   	 d	ee   d
ee   fd„Zdeeef   ded
ee   fd„Zdeeef   ded
ee   fd„Zed
efd„«       Zy)ÚRetrievalQAWithSourcesChainr   T)ÚexcludeÚ	retrieverFÚreduce_k_below_max_tokensi/  Úmax_tokens_limitÚdocsÚreturnc                 ód  — t        |«      }| j                  rt        | j                  t        «      rv|D cg c]1  }| j                  j
                  j                  |j                  «      ‘Œ3 }}t        |d | «      }|| j                  kD  r|dz  }|||   z  }|| j                  kD  rŒ|d | S c c}w )Né   )
Úlenr   Ú
isinstanceÚcombine_documents_chainr
   Ú	llm_chainÚ_get_num_tokensÚpage_contentÚsumr   )Úselfr   Únum_docsÚdocÚtokensÚtoken_counts         úh/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain/chains/qa_with_sources/retrieval.pyÚ_reduce_tokens_below_limitz6RetrievalQAWithSourcesChain._reduce_tokens_below_limit   s¿   € Üt“9ˆà×)Ò)¬jØ×(Ñ(Üô/
ð  öàð ×,Ñ,×6Ñ6×FÑFÀs×GWÑGWÕXðˆFð ô ˜f Y hÐ/Ó0ˆKØ × 5Ñ 5Ò5Ø˜A‘Ø˜v hÑ/Ñ/ð  × 5Ñ 5Ó5ð IXˆÐùòs   ¶6B-ÚinputsÚrun_managerc                óœ   — || j                      }| j                  j                  |d|j                  «       i¬«      }| j	                  |«      S ©NÚ	callbacks)Úconfig)Úquestion_keyr   ÚinvokeÚ	get_childr#   ©r   r$   r%   Úquestionr   s        r"   Ú	_get_docsz%RetrievalQAWithSourcesChain._get_docs.   sT   € ð ˜$×+Ñ+Ñ,ˆØ~‰~×$Ñ$ØØ ×!6Ñ!6Ó!8Ð9ð %ó 
ˆð ×.Ñ.¨tÓ4Ð4ó    c             ƒ   ó¸   K  — || j                      }| j                  j                  |d|j                  «       i¬«      ƒ d {  –—† }| j	                  |«      S 7 Œ­wr'   )r*   r   Úainvoker,   r#   r-   s        r"   Ú
_aget_docsz&RetrievalQAWithSourcesChain._aget_docs;   sb   è ø€ ð ˜$×+Ñ+Ñ,ˆØ—^‘^×+Ñ+ØØ ×!6Ñ!6Ó!8Ð9ð ,ó 
÷ 
ˆð ×.Ñ.¨tÓ4Ð4ð	
ús   ‚A AÁAÁAc                  ó   — y)zReturn the chain type.Úretrieval_qa_with_sources_chain© )r   s    r"   Ú_chain_typez'RetrievalQAWithSourcesChain._chain_typeH   s   € ð 1r0   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r   Ú__annotations__r   Úboolr   ÚintÚlistr   r#   ÚdictÚstrr   r   r/   r   r3   Úpropertyr7   r6   r0   r"   r   r      sÆ   … Ù8á$¨TÔ2€Iˆ}Ó2ØØ&+Ð˜tÓ+ØQØ ÐcÓ ðXð¨t°H©~ð À$ÀxÁ.ó ð$5àS˜#X‘ð5ð 0ð	5ð
 
ˆh‰ó5ð5àS˜#X‘ð5ð 5ð	5ð
 
ˆh‰ó5ð ð1˜Sò 1ó ñ1r0   r   N)r;   Útypingr   Úlangchain_core.callbacksr   r   Úlangchain_core.documentsr   Úlangchain_core.retrieversr   Úpydanticr	   Ú(langchain.chains.combine_documents.stuffr
   Ú%langchain.chains.qa_with_sources.baser   r   r6   r0   r"   ú<module>rJ      s.   ðÙ 4å ÷õ .Ý 3Ý å HÝ Hô:1Ð"8õ :1r0   