§
    éƒtj  ã                  ó    — d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
  ej        d¦  «        Zd!d
„Zd"d„Zd"d„Zd"d„Zddddœd#d„Zd$d „ZdS )%u:   RAG pipeline debug logging â€” enable with RAG_DEBUG=true.é    )ÚannotationsN)ÚAnyÚIterable)ÚDocument)Úget_settingsz
app.rag.kbÚreturnÚboolc                 óB   — t          t          ¦   «         j        ¦  «        S ©N)r	   r   Ú	rag_debug© ó    ú./var/www/html/CA-Chatbot/app/saas/rag_debug.pyÚrag_debug_enabledr      s   € Ý•‘”Ô(Ñ)Ô)Ð)r   ÚmsgÚstrÚargsr   ÚNonec                ó*   — t          j        | g|¢R Ž  d S r   )ÚloggerÚinfo©r   r   s     r   Úlog_infor      s    € Ý
„K�Ð�dÐÐÐÐÐÐr   c                ó*   — t          j        | g|¢R Ž  d S r   )r   Úwarningr   s     r   Úlog_warnr      s    € Ý
„N�3Ð˜ÐÐÐÐÐÐr   c                ó*   — t          j        | g|¢R Ž  d S r   )r   Úerrorr   s     r   Ú	log_errorr      s    € Ý
„L�Ð�tÐÐÐÐÐÐr   )ÚscoresÚpromptÚreason_if_emptyÚqueryÚdocsúlist[Document]r    úlist[float | None] | Noner!   ú
str | Noner"   c                óº  — t          ¦   «         sd S |pg }dddd| ddg}|s-|                     d|pd› �                     ¦   «         ¦  «         nÝt          |d¬¦  «        D ]Ë\  }}|j        pi }|dz
  t          |¦  «        k     r||dz
           nd }	|j        pd                     dd	¦  «        d d
…         }
|                     d|› d|	› d|                     d¦  «        › d|                     d¦  «        › d|                     d¦  «        › �
¦  «         |                     d|
› �¦  «         ŒÌ| 	                    ddg¦  «         |r3|                     d 
                    d„ |D ¦   «         ¦  «        ¦  «         n|                     d¦  «         | 	                    ddg¦  «         |                     d 
                    d„ |D ¦   «         ¦  «        pd¦  «         | 	                    ddg¦  «         t          d„ |D ¦   «         ¦  «        }|                     d 
                    |¦  «        pd¦  «         |�6| 	                    dd|d d…         t          |¦  «        dk    rdndg¦  «         |r|s| 	                    dd |g¦  «         | 	                    g d!¢¦  «         d 
                    |¦  «        }t          |d"¬#¦  «         t                               |¦  «         d S )$NÚ z======== RAG DEBUG ========zUser Query:zRetrieved Documents:z(none) é   )ÚstartÚ
Ú éð   ú[z] score=z page=Úpagez file=Úsource_datasetz id=Ú	record_idz    zSimilarity Scores:z, c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   )r   )Ú.0Úss     r   ú	<genexpr>z"print_rag_debug.<locals>.<genexpr>C   s(   è è € Ð6Ð6¨!�s 1™vœvÐ6Ð6Ð6Ð6Ð6Ð6r   z(not available)z
Chunk IDs:c              3  ól   K  — | ]/}t          |j        pi                      d ¦  «        pd¦  «        V — Œ0dS )r2   Ú?N©r   ÚmetadataÚget©r4   Úds     r   r6   z"print_rag_debug.<locals>.<genexpr>I   sD   è è € ÐPÐPÀa•#�q”zÐ' R×,Ò,¨[Ñ9Ô9Ð@¸SÑAÔAÐPÐPÐPÐPÐPÐPr   z(none)zSource Files:c                ód   — h | ]-}t          |j        pi                      d ¦  «        pd¦  «        ’Œ.S )r1   r8   r9   r<   s     r   ú	<setcomp>z"print_rag_debug.<locals>.<setcomp>N   sK   € ð 	
ð 	
ð 	
àõ �”Ð!˜r×&Ò&Ð'7Ñ8Ô8Ð?¸CÑ@Ô@ð	
ð 	
ð 	
r   zPrompt Sent to LLM:i   z...(truncated)zEmpty Retrieval Reason:)r)   z===========================r)   T)Úflush)r   ÚappendÚrstripÚ	enumerater:   ÚlenÚpage_contentÚreplacer;   ÚextendÚjoinÚsortedÚprintr   r   )r#   r$   r    r!   r"   ÚlinesÚiÚdocÚmetaÚscoreÚpreviewÚsourcesÚblocks                r   Úprint_rag_debugrS      sx  € õ ÑÔð Øˆàˆ\�r€Fà
Ø%Ø
ØØØ
Øð€Eð ð +Ø�ŠÐ6˜Ð4°"Ð6Ð6×=Ò=Ñ?Ô?Ñ@Ô@Ð@Ð@å ¨AÐ.Ñ.Ô.ð 	+ð 	+‰FˆAˆsØ”<Ð% 2ˆDØ%&¨¡U­S°©[¬[Ò%8Ð%8�F˜1˜q™5”M�M¸dˆEØÔ'Ð-¨2×6Ò6°t¸SÑAÔAÀ$À3À$ÔGˆGØ�LŠLðP�Að Pð P˜uð Pð P¨D¯HªH°VÑ,<Ô,<ð Pð PØŸšÐ!1Ñ2Ô2ðPð PØ8<¿ºÀÑ8MÔ8MðPð Pñô ð ð �LŠLÐ) Ð)Ð)Ñ*Ô*Ð*Ð*à	‡L‚L�"Ð*Ð+Ñ,Ô,Ð,Øð (Ø�Š�T—Y’YÐ6Ð6¨vÐ6Ñ6Ô6Ñ6Ô6Ñ7Ô7Ð7Ð7à�ŠÐ&Ñ'Ô'Ð'à	‡L‚L�"�lÐ#Ñ$Ô$Ð$Ø	‡L‚LØ�	Š	ÐPÐPÈ4ÐPÑPÔPÑPÔPÐ\ÐT\ñô ð ð 
‡L‚L�"�oÐ&Ñ'Ô'Ð'Ýð	
ð 	
àð	
ñ 	
ô 	
ñô €Gð 
‡L‚L�—’˜7Ñ#Ô#Ð/ xÑ0Ô0Ð0àÐØ�Š�bÐ/°¸¸¸´ÕUXÐY_ÑU`ÔU`ÐcgÒUgÐUgÐAQÐAQÐmoÐqÑrÔrÐràð G˜tð GØ�Š�bÐ3°_ÐEÑFÔFÐFà	‡L‚LÐ8Ð8Ð8Ñ9Ô9Ð9Ø�IŠI�eÑÔ€EÝ	ˆ%�tÐÑÔÐÝ
‡K‚K�ÑÔÐÐÐr   ÚchunksúIterable[str]údict[str, Any]c                óÞ   — d„ | D ¦   «         }|sdddddœS t          |¦  «        t          t          |¦  «        t          |¦  «        z  d¦  «        t          |¦  «        t	          |¦  «        dœS )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r   )rD   )r4   Úcs     r   ú
<listcomp>z$summarize_chunks.<locals>.<listcomp>b   s   € Ð$Ð$Ð$˜�S�‰VŒVÐ$Ð$Ð$r   r   )ÚcountÚavgÚminÚmaxr*   )rD   ÚroundÚsumr]   r^   )rT   Úsizess     r   Úsummarize_chunksrb   a   sw   € Ø$Ð$˜VÐ$Ñ$Ô$€EØð :Ø 1¨Q°qÐ9Ð9Ð9å�U‘”Ý•S˜‘Z”Z¥# e¡*¤*Ñ,¨aÑ0Ô0Ý�5‰zŒzÝ�5‰zŒzð	ð ð r   )r   r	   )r   r   r   r   r   r   )r#   r   r$   r%   r    r&   r!   r'   r"   r'   r   r   )rT   rU   r   rV   )Ú__doc__Ú
__future__r   ÚloggingÚtypingr   r   Úlangchain_core.documentsr   Ú
app.configr   Ú	getLoggerr   r   r   r   r   rS   rb   r   r   r   ú<module>rj      s  ðØ @Ð @à "Ð "Ð "Ð "Ð "Ð "à €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à -Ð -Ð -Ð -Ð -Ð -à #Ð #Ð #Ð #Ð #Ð #à	ˆÔ	˜<Ñ	(Ô	(€ð*ð *ð *ð *ðð ð ð ðð ð ð ðð ð ð ð )-ØØ"&ð?ð ?ð ?ð ?ð ?ð ?ðD	ð 	ð 	ð 	ð 	ð 	r   