
    Ji&                         d dl mZmZmZ d dl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 d dlmZmZ d d	lmZmZmZ d d
lmZ ddlmZmZmZmZmZ d dlZ ej>                  e       Z! G d de
      Z"y)    )AnyListOptionalN)TextNodeWithScore)OMIT)BaseRetriever)	BaseModel)DEFAULT_PROJECT_NAME)get_aclient
get_client)NodeWithScoreQueryBundleTextNode)MetadataFilters   )resolve_project_and_pipeline(page_screenshot_nodes_to_node_with_score$page_figure_nodes_to_node_with_score)apage_screenshot_nodes_to_node_with_score%apage_figure_nodes_to_node_with_scorec            7           e Zd Zddddeddddddddddddddddddddfdee   dee   dee   dee   dee   dee   d	ee   d
ee   dee   dee   dedeej                     deej                     dee   dee   dee
   dee   dee   dee   dee   dee   dee
   dee
   dee
   dee   deddf6 fdZ	 d%dee   d ee   dee   fd!Zd"edee   fd#Zd"edee   fd$Z xZS )&LlamaCloudRetrieverN<   nameindex_ididpipeline_idproject_name
project_idorganization_idapi_keybase_urlapp_urltimeouthttpx_clientasync_httpx_clientdense_similarity_top_ksparse_similarity_top_kenable_rerankingrerank_top_nalphafiltersretrieval_modefiles_top_kretrieve_image_nodesretrieve_page_screenshot_nodesretrieve_page_figure_nodessearch_filters_inference_schemakwargsreturnc                    t        t        |      t        |      t        |      t        |      g      dk7  rt        d      || _        || _        t        ||	|
||      | _        t        ||	|
||      | _        |xs |xs |}t        | j                  |||||      \  | _
        | _        | j                  j                  | _        | j                  j                  | _        ||nt        | _        ||nt        | _        ||nt        | _        ||nt        | _        ||nt        | _        ||nt        | _        ||nt        | _        ||nt        | _        |t.        j1                  d       |r|du s|du rt        d      d}d}||nt        | _        ||nt        | _        || _        t8        | u  |j=                  d      |j=                  d	d      
       y)z"Initialize the Platform Retriever.r   z`Exactly one of `name`, `id`, `pipeline_id` or `index_id` must be provided to identify the index.NzThe `retrieve_image_nodes` parameter is deprecated. Use `retrieve_page_screenshot_nodes` and `retrieve_page_figure_nodes` instead.FzIf `retrieve_image_nodes` is set to True, both `retrieve_page_screenshot_nodes` and `retrieve_page_figure_nodes` must also be set to True or omitted.Tcallback_managerverbose)r6   r7   )sumbool
ValueError_httpx_client_async_httpx_clientr   _clientr   _aclientr   projectpipeliner   r   r   _dense_similarity_top_k_sparse_similarity_top_k_enable_reranking_rerank_top_n_alpha_filters_retrieval_mode_files_top_kloggerwarning_retrieve_page_screenshot_nodes_retrieve_page_figure_nodes _search_filters_inference_schemasuper__init__get)selfr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   	__class__s                              v/var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/llama_cloud_services/index/retriever.pyrO   zLlamaCloudRetriever.__init__   s   D R$x.${*;T$ZHIQNr 
 *#5 !'8Wg|T#Xw1C
 3H3&BLL$\:'
#dm MM&&	 LL-- '=&H"d 	$ (?'J#PT 	% !1 <$ 	 .:-E\4$0ed#*#6D1?1K~QU+6+BK+NNa  .%7-6 B  .2*)-& .9 + 	, *5 ' 	(
 1P-#ZZ(:;JJy%0 	 	
    result_nodesmetadatac                     g }|D ]t  }t        j                  |j                  j                               }|j                  j                  |xs i        |j                  t        ||j                               v |S )N)nodescore)	r   model_validaterX   dictrV   updateappendr   rY   )rQ   rU   rV   nodesres	text_nodes         rS    _result_nodes_to_node_with_scorez4LlamaCloudRetriever._result_nodes_to_node_with_score   sj      	IC //@I%%hn"5LLISYYGH	I
 rT   query_bundlec                    t         }| j                  | j                  j                         }| j                  j                  j                  |j                  | j                  j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                   | j"                  | j$                  |      }| j'                  |j(                  |j*                        }| j"                  rP|j-                  t/        | j                  |j0                  | j2                  j                  |j*                               | j$                  rP|j-                  t5        | j                  |j6                  | j2                  j                  |j*                               |S )zRetrieve from the platform.queryr   r'   r(   r)   r*   r+   search_filtersr.   r-   r0   r1   r2   rV   )r   rM   model_json_schemar=   	pipelines
run_search	query_strr@   r   rA   rB   rC   rD   rE   rF   rH   rG   rK   rL   ra   retrieval_nodesrV   extendr   image_nodesr?   r   page_figure_nodesrQ   rb   r2   resultsrU   s        rS   	_retrievezLlamaCloudRetriever._retrieve   su   *.'00<55GGI , ,,((33((((#'#?#?$($A$A!33++++==))//+/+O+O'+'G'G,K 4 
  <<##g.>.> = 
 //8LL''LLOO$--	 ++4LL--LLOO$--	 rT   c                   K   t         }| j                  | j                  j                         }| j                  j                  j                  |j                  | j                  j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                   | j"                  | j$                  |       d{   }| j'                  |j(                  |j*                        }| j"                  rX|j-                  t/        | j                  |j0                  | j2                  j                  |j*                         d{          | j$                  rX|j-                  t5        | j                  |j6                  | j2                  j                  |j*                         d{          |S 7 7 p7 w)z*Asynchronously retrieve from the platform.Nrd   rg   )r   rM   rh   r>   ri   rj   rk   r@   r   rA   rB   rC   rD   rE   rF   rH   rG   rK   rL   ra   rl   rV   rm   r   rn   r?   r   ro   rp   s        rS   
_aretrievezLlamaCloudRetriever._aretrieve   s    *.'00<55GGI , //::((((#'#?#?$($A$A!33++++==))//+/+O+O'+'G'G,K ; 
 
  <<##g.>.> = 
 //?MM''LLOO$--	  ++;MM--LLOO$--	  M
*s8   C$G"&G'BG"-G.A#G"G G"G" G")N)__name__
__module____qualname__r
   r   strinthttpxClientAsyncClientr9   floatr   r	   r   rO   r   r   r[   r   ra   r   rr   rt   __classcell__)rR   s   @rS   r   r      sT    #"& %)&:$()-!%"&!%/3:>0415+/&*!%-1(,%)/39=59?C=d
 smd
 3-	d

 SMd
 c]d
 smd
 SMd
 "#d
 #d
 3-d
 #d
 d
  u||,!d
" %U%6%67#d
& !)'d
( "*#)d
* #4.+d
, sm-d
. /d
0 /*1d
2 !3d
4 c]5d
6 'tn7d
8 )19d
: %-TN;d
< *2))<=d
> ?d
@ 
Ad
N QU	 !23	?G~		m		-k -d=6I -^-[ -T-=P -rT   r   )#typingr   r   r   rz   llama_cloudr   &llama_cloud.resources.pipelines.clientr   $llama_index.core.base.base_retrieverr    llama_index.core.bridge.pydanticr	   llama_index.core.constantsr
   $llama_index.core.ingestion.api_utilsr   r   llama_index.core.schemar   r   r   $llama_index.core.vector_stores.typesr   	api_utilsr   r   r   r   r   logging	getLoggerru   rI   r    rT   rS   <module>r      s^    & &  8 > 6 ; H H H @   
		8	$N- NrT   