§
    Ü˜ºh&  ã                   óü  — d Z ddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZmZmZmZ ddlZddlmZ  ej        e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zdefd„Z dee!df         defd„Z"dej#        ddfd„Z$deej%        e!f         de!fd„Z& ej'        d¬¦  «        d e(d!e!ddfd"„¦   «         Z)d!ee!ef         de!fd#„Z*d!ee!ef         dee!ef         fd$„Z+d!ee!ef         de	e!ef         fd%„Z,d&ee!ef         de
e	e!ef                  fd'„Z-d(ee!ef         de	e!ef         fd)„Z.d&ee!ef         de!fd*„Z/d(ee!ef         de!fd+„Z0 ej'        d¬¦  «        de
e!         fd,„¦   «         Z1d!ej2        de3fd-„Z4d.e5defd/„Z6d4dee!         fd1„Z7 G d2„ d3ej8        ¦  «        Z9dS )5zGeneric utility functions.é    N)ÚAnyÚCallableÚDictÚListÚMappingÚOptionalÚTupleÚUnion)Úschemasc                   ó   — e Zd ZdZdS )ÚLangSmithErrorz=An error occurred while communicating with the LangSmith API.N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úW/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langsmith/utils.pyr   r      s   € € € € € ØGÐGÐGÐGr   r   c                   ó   — e Zd ZdZdS )ÚLangSmithAPIErrorz9Internal server error while communicating with LangSmith.Nr   r   r   r   r   r      s   € € € € € ØCÐCÐCÐCr   r   c                   ó   — e Zd ZdZdS )ÚLangSmithUserErrorzAUser error caused an exception when communicating with LangSmith.Nr   r   r   r   r   r      s   € € € € € ØKÐKÐKÐKr   r   c                   ó   — e Zd ZdZdS )ÚLangSmithRateLimitErrorz7You have exceeded the rate limit for the LangSmith API.Nr   r   r   r   r   r      s   € € € € € ØAÐAÐAÐAr   r   c                   ó   — e Zd ZdZdS )ÚLangSmithAuthErrorz-Couldn't authenticate with the LangSmith API.Nr   r   r   r   r   r   !   s   € € € € € Ø7Ð7Ð7Ð7r   r   c                   ó   — e Zd ZdZdS )ÚLangSmithNotFoundErrorz%Couldn't find the requested resource.Nr   r   r   r   r   r   %   s   € € € € € Ø/Ð/Ð/Ð/r   r   c                   ó   — e Zd ZdZdS )ÚLangSmithConflictErrorzThe resource already exists.Nr   r   r   r   r!   r!   )   s   € € € € € Ø&Ð&Ð&Ð&r   r!   c                   ó   — e Zd ZdZdS )ÚLangSmithConnectionErrorz&Couldn't connect to the LangSmith API.Nr   r   r   r   r#   r#   -   s   € € € € € Ø0Ð0Ð0Ð0r   r#   Úreturnc                  óª   — t           j                             dt           j                             dd¦  «        ¦  «                             ¦   «         dk    S )z"Return True if tracing is enabled.ÚLANGCHAIN_TRACING_V2ÚLANGCHAIN_TRACINGÚ Útrue)ÚosÚenvironÚgetÚlowerr   r   r   Útracing_is_enabledr.   1   sC   € õ 	Œ
�ŠØ"¥B¤J§N¢NÐ3FÈÑ$KÔ$Kñ	
ô 	
ç
Š%‰'Œ'Øò	ðr   Ú
arg_groups.c                  ó0   ‡ — dt           dt           fˆ fd„}|S )z7Validate specified keyword args are mutually exclusive.Úfuncr$   c                 óv   •‡ — t          j        ‰ ¦  «        dt          dt          dt          fˆˆ fd„¦   «         }|S )NÚargsÚkwargsr$   c                  óÎ   •‡— ˆfd„‰D ¦   «         }d„ t          |¦  «        D ¦   «         }|r3ˆfd„|D ¦   «         }t          dd                     |¦  «        › �¦  «        ‚ ‰| i ‰¤ŽS )z3Validate exactly one arg in each group is not None.c                 óF   •— g | ]}t          ˆfd „|D ¦   «         ¦  «        ‘ŒS )c              3   óF   •K  — | ]}‰                      |¦  «        ®dV — Œd S )Né   )r,   )Ú.0Úargr4   s     €r   ú	<genexpr>zJxor_args.<locals>.decorator.<locals>.wrapper.<locals>.<listcomp>.<genexpr>C   s2   øè è € ÐJÐJ˜#¨f¯jªj¸©o¬oÐ.I�AÐ.IÐ.IÐ.IÐ.IÐJÐJr   )Úsum)r9   Ú	arg_groupr4   s     €r   ú
<listcomp>z@xor_args.<locals>.decorator.<locals>.wrapper.<locals>.<listcomp>B   sF   ø€ ð ð ð àõ ÐJÐJÐJÐJ ÐJÑJÔJÑJÔJðð ð r   c                 ó$   — g | ]\  }}|d k    ¯|‘ŒS )r8   r   )r9   ÚiÚcounts      r   r>   z@xor_args.<locals>.decorator.<locals>.wrapper.<locals>.<listcomp>F   s!   € ÐPÐPÐP¡H A uÀUÈaÂZÀZ˜aÀZÀZÀZr   c                 óF   •— g | ]}d                       ‰|         ¦  «        ‘ŒS )ú, )Újoin)r9   r@   r/   s     €r   r>   z@xor_args.<locals>.decorator.<locals>.wrapper.<locals>.<listcomp>H   s)   ø€ Ð&XÐ&XÐ&XÀA t§y¢y°¸A´Ñ'?Ô'?Ð&XÐ&XÐ&Xr   zFExactly one argument in each of the following groups must be defined: rC   )Ú	enumerateÚ
ValueErrorrD   )r3   r4   ÚcountsÚinvalid_groupsÚinvalid_group_namesr/   r1   s    `   €€r   Úwrapperz,xor_args.<locals>.decorator.<locals>.wrapper?   s´   øø€ ðð ð ð à!+ðñ ô ˆFð QÐPµ	¸&Ñ0AÔ0AÐPÑPÔPˆNØð Ø&XÐ&XÐ&XÐ&XÈÐ&XÑ&XÔ&XÐ#Ý ð9àŸ	š	Ð"5Ñ6Ô6ð9ð 9ñô ð ð
 �4˜Ð( Ð(Ð(Ð(r   )Ú	functoolsÚwrapsr   )r1   rJ   r/   s   ` €r   Ú	decoratorzxor_args.<locals>.decorator>   sX   øø€ Ý	Œ˜Ñ	Ô	ð	)�3ð 	)­#ð 	)µ#ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ñ 
Ô	ð	)ð  ˆr   )r   )r/   rM   s   ` r   Úxor_argsrN   ;   s7   ø€ ð�ð ¥Xð ð ð ð ð ð ð( Ðr   Úresponsec                 ó®   — 	 |                       ¦   «          dS # t          j        $ r-}t          j        t          |¦  «        | j        ¦  «        |‚d}~ww xY w)z&Raise an error with the response text.N)Úraise_for_statusÚrequestsÚ	HTTPErrorÚstrÚtext)rO   Úes     r   Úraise_for_status_with_textrW   U   s^   € ð?Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#øÝÔð ?ð ?ð ?ÝÔ ¥ Q¡¤¨¬Ñ7Ô7¸QÐ>øøøøð?øøøs   ‚ ˜A§(AÁAÚenuc                 óH   — t          | t          j        ¦  «        r| j        S | S )zGet the value of a string enum.)Ú
isinstanceÚenumÚEnumÚvalue)rX   s    r   Úget_enum_valuer^   ]   s#   € å�#•t”yÑ!Ô!ð ØŒyÐØ€Jr   r8   )ÚmaxsizeÚlevelÚmessagec                 ó<   — t                                | |¦  «         d S )N)Ú_LOGGERÚlog)r`   ra   s     r   Úlog_oncere   d   s   € å‡K‚K��wÑÔÐÐÐr   c                 ó   — | st          d¦  «        ‚d| v rKd| vrt          d| › d�¦  «        ‚| d         d                              dd¦  «                             ¦   «         S d	| vrt          d
| › d�¦  «        ‚| d	         S )NúMessage is empty.ÚlcÚidú*Unexpected format for serialized message: z Message does not have an id.éÿÿÿÿÚMessager(   Útypeú&Unexpected format for stored message: z Message does not have a type.)rF   Úreplacer-   ©ra   s    r   Ú_get_message_typerq   i   sÁ   € Øð .ÝÐ,Ñ-Ô-Ð-Øˆw€€Ø�wÐÐÝð0¸Wð 0ð 0ð 0ñô ð ð �tŒ}˜RÔ ×(Ò(¨°BÑ7Ô7×=Ò=Ñ?Ô?Ð?à˜Ð Ð Ýð1¸ð 1ð 1ð 1ñô ð ð �vŒÐr   c                 ó¨   — | st          d¦  «        ‚d| v rd| vrt          d| › d�¦  «        ‚| d         S d| vrt          d| › d�¦  «        ‚| d         S )	Nrg   rh   r4   rj   z Message does not have kwargs.Údatarn   z Message does not have data.)rF   rp   s    r   Ú_get_message_fieldsrt   |   s¡   € Øð .ÝÐ,Ñ-Ô-Ð-Øˆw€€Ø˜7Ð"Ð"Ýð1¸Wð 1ð 1ð 1ñô ð ð �xÔ Ð à˜Ð Ð Ýð/¸ð /ð /ð /ñô ð ð �vŒÐr   c                 óH   — t          | ¦  «        }t          | ¦  «        }||dœS )z&Extract message from a message object.©rm   rs   )rq   rt   )ra   Úmessage_typeÚmessage_datas      r   Ú_convert_messagery   �   s*   € å$ WÑ-Ô-€LÝ& wÑ/Ô/€LØ ¨,Ð7Ð7Ð7r   Úinputsc                 óˆ   — d| v rd„ | d         D ¦   «         S d| v rt          | d         ¦  «        gS t          d| › d�¦  «        ‚)NÚmessagesc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )ry   )r9   ra   s     r   r>   z,get_messages_from_inputs.<locals>.<listcomp>˜   s!   € ÐLÐLÐL¨gÕ  Ñ)Ô)ÐLÐLÐLr   ra   z-Could not find message(s) in run with inputs ú.)ry   rF   )rz   s    r   Úget_messages_from_inputsr   –   sa   € Ø�VÐÐØLÐL¸À
Ô9KÐLÑLÔLÐLØ�FÐÐÝ  ¨	Ô!2Ñ3Ô3Ð4Ð4Ý
ÐNÀVÐNÐNÐNÑ
OÔ
OÐOr   Úoutputsc                 ó  — d| vrt          d| › d�¦  «        ‚| d         }t          |¦  «        dk    r#t          dt          |¦  «        › d|› d�¦  «        ‚|d         }d|vrt          d	|› d
�¦  «        ‚t          |d         ¦  «        S )NÚgenerationsú,No generations found in in run with output: r~   r8   z3Chat examples expect exactly one generation. Found z generations: r   ra   z"Unexpected format for generation: z%. Generation does not have a message.)rF   Úlenry   ©r€   r‚   Úfirst_generations      r   Ú#get_message_generation_from_outputsr‡   ž   sß   € Ø˜GÐ#Ð#ÝÐRÈÐRÐRÐRÑSÔSÐSØ˜-Ô(€KÝ
ˆ;ÑÔ˜1ÒÐÝðEÝ˜+Ñ&Ô&ðEð EØ6AðEð Eð Eñ
ô 
ð 	
ð # 1”~ÐØÐ(Ð(Ð(Ýð3Ð1Að 3ð 3ð 3ñ
ô 
ð 	
õ Ð,¨YÔ7Ñ8Ô8Ð8r   c                 ó´   — d| v r| d         S d| v r6| d         }t          |¦  «        dk    r|d         S t          d| › d�¦  «        ‚t          d| › d�¦  «        ‚)	NÚpromptÚpromptsr8   r   z$Multiple prompts in run with inputs z!. Please create example manually.z)Could not find prompt in run with inputs r~   )r„   rF   )rz   rŠ   s     r   Úget_prompt_from_inputsr‹   °   sŒ   € Ø�6ÐÐØ�hÔÐØ�FÐÐØ˜Ô#ˆÝˆw‰<Œ<˜1ÒÐØ˜1”:ÐÝð/°6ð /ð /ð /ñ
ô 
ð 	
õ ÐJÀÐJÐJÐJÑ
KÔ
KÐKr   c                 óÖ   — d| vrt          d| › d�¦  «        ‚| d         }t          |¦  «        dk    rt          d|› �¦  «        ‚|d         }d|vrt          d|› �¦  «        ‚|d         S )	Nr‚   rƒ   r~   r8   zMultiple generations in run: r   rU   zNo text in generation: )rF   r„   r…   s      r   Úget_llm_generation_from_outputsr�   ¾   s”   € Ø˜GÐ#Ð#ÝÐRÈÐRÐRÐRÑSÔSÐSØ˜-Ô(€KÝ
ˆ;ÑÔ˜1ÒÐÝÐF¸ÐFÐFÑGÔGÐGØ" 1”~ÐØÐ%Ð%Ð%ÝÐEÐ3CÐEÐEÑFÔFÐFØ˜FÔ#Ð#r   c                  óR  — 	 t          j        g d¢t           j        t           j        ¬¦  «         ddgS # t           j        t          f$ r] 	 t          j        ddgt           j        t           j        ¬¦  «         dgcY S # t           j        t          f$ r t          d¦  «        ‚w xY ww xY w)z7Get the correct docker compose command for this system.)ÚdockerÚcomposeú	--version)ÚstdoutÚstderrr�   r�   zdocker-composer‘   zÆNeither 'docker compose' nor 'docker-compose' commands are available. Please install the Docker server following the instructions for your operating system at https://docs.docker.com/engine/install/)Ú
subprocessÚ
check_callÚDEVNULLÚCalledProcessErrorÚFileNotFoundErrorrF   r   r   r   Úget_docker_compose_commandr™   Ê   sç   € ðÝÔØ.Ð.Ð.ÝÔ%ÝÔ%ð	
ñ 	
ô 	
ð 	
ð
 ˜)Ð$Ð$øÝÔ)Õ+<Ð=ð ð ð ð	ÝÔ!Ø! ;Ð/Ý!Ô)Ý!Ô)ðñ ô ð ð
 %Ð%Ð%Ð%Ð%øÝÔ-Õ/@ÐAð 	ð 	ð 	ÝðEñô ð ð	øøøðøøøs!   ‚03 ³B&Á
/A<Á9B&Á<&B"Â"B&c                 óŠ   — | j         d| j        idœ}| j        r*t          | j        ¦  «        dk    ri | j        ¥|d         d<   |S )z*Convert a LangChain message to an example.Úcontentrv   r   rs   Úadditional_kwargs)rm   r›   rœ   r„   )ra   Ú	converteds     r   Úconvert_langchain_messagerž   å   s`   € ð ”Ø˜GœOÐ,ð!ð !€Ið
 Ô ð O¥S¨Ô)BÑ%CÔ%CÀaÒ%GÐ%GØ1N°GÔ4MÐ1Nˆ	�&ÔÐ-Ñ.ØÐr   Úobjc           
      ó  — t          t          t          | dd¦  «        t          ¦  «        t          t          | dd¦  «        t          ¦  «        t          | d¦  «        o"t          t          | d¦  «        t          ¦  «        g¦  «        S )zÏ
    Check if the given object is similar to BaseMessage.

    Args:
        obj (object): The object to check.

    Returns:
        bool: True if the object is similar to BaseMessage, False otherwise.
    r›   Nrœ   rm   )ÚallrZ   ÚgetattrrT   ÚdictÚhasattr)rŸ   s    r   Úis_base_message_liker¥   ñ   st   € õ å•w˜s I¨tÑ4Ô4µcÑ:Ô:Ý•w˜sÐ$7¸Ñ>Ô>ÅÑEÔEÝ�C˜Ñ Ô ÐJ¥Zµ¸¸VÑ0DÔ0DÅcÑ%JÔ%Jð	
ñô ð r   Tc           
      óÂ   — t           j                             dt           j                             dt           j                             d| rdnd¦  «        ¦  «        ¦  «        S )z,Get the project name for a LangSmith tracer.ÚHOSTED_LANGSERVE_PROJECT_NAMEÚLANGCHAIN_PROJECTÚLANGCHAIN_SESSIONÚdefaultN)r*   r+   r,   )Úreturn_default_values    r   Úget_tracer_projectr¬     sY   € åŒ:�>Š>ð
 	(Ý
Œ
�ŠØÝŒJ�NŠNð $Ø1Ð;�	�	°tñ	ô ñ	
ô 	
ñô ð r   c                   ó   — e Zd ZdZdefd„ZdS )ÚFilterPoolFullWarningzFFilter urrllib3 warnings logged when the connection pool isn't reused.r$   c                 ó.   — d|                      ¦   «         vS )zJurllib3.connectionpool:Connection pool is full, discarding connection: ...z.Connection pool is full, discarding connection)Ú
getMessage)ÚselfÚrecords     r   ÚfilterzFilterPoolFullWarning.filter  s   € ð =ÀF×DUÒDUÑDWÔDWÐWð	
r   N)r   r   r   r   Úboolr³   r   r   r   r®   r®     s5   € € € € € ØPÐPð
 ð 
ð 
ð 
ð 
ð 
ð 
r   r®   )T):r   r[   rK   Úloggingr*   r”   Útypingr   r   r   r   r   r   r	   r
   rR   Ú	langsmithr   Ú
ls_schemasÚ	getLoggerr   rc   Ú	Exceptionr   r   r   r   r   r   r!   r#   r´   r.   rT   rN   ÚResponserW   r\   r^   Ú	lru_cacheÚintre   rq   rt   ry   r   r‡   r‹   r�   r™   ÚBaseMessageLiker£   rž   Úobjectr¥   r¬   ÚFilterr®   r   r   r   ú<module>rÁ      s1  ðØ  Ð  à €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mà €€€à +Ð +Ð +Ð +Ð +Ð +à
ˆ'Ô
˜HÑ
%Ô
%€ðHð Hð Hð Hð H�Yñ Hô Hð HðDð Dð Dð Dð D˜ñ Dô Dð DðLð Lð Lð Lð L˜ñ Lô Lð LðBð Bð Bð Bð B˜nñ Bô Bð Bð8ð 8ð 8ð 8ð 8˜ñ 8ô 8ð 8ð0ð 0ð 0ð 0ð 0˜^ñ 0ô 0ð 0ð'ð 'ð 'ð 'ð '˜^ñ 'ô 'ð 'ð1ð 1ð 1ð 1ð 1˜~ñ 1ô 1ð 1ð˜Dð ð ð ð ð˜%  S œ/ð ¨hð ð ð ð ð4?¨Ô):ð ?¸tð ?ð ?ð ?ð ?ð˜˜dœi¨˜nÔ-ð °#ð ð ð ð ð €Ô˜QÐÑÔð �Cð   #ð  ¨$ð  ð  ð  ñ  Ôð ð˜w s¨C xÔ0ð °Sð ð ð ð ð& ¨¨c¨Ô!2ð °w¸sÀC¸xÔ7Hð ð ð ð ð&8˜g c¨3 hÔ/ð 8°D¸¸c¸´Nð 8ð 8ð 8ð 8ðP W¨S°#¨XÔ%6ð P¸4ÀÀSÈ#ÀXÄÔ;Oð Pð Pð Pð Pð9°¸¸c¸Ô1Bð 9ÀtÈCÐQTÈHÄ~ð 9ð 9ð 9ð 9ð$L 7¨3°¨8Ô#4ð L¸ð Lð Lð Lð Lð	$¨W°S¸#°XÔ->ð 	$À3ð 	$ð 	$ð 	$ð 	$ð €Ô˜QÐÑÔð D¨¤Ið ð ð ñ  Ôðð4	 zÔ'Að 	Àdð 	ð 	ð 	ð 	ð˜fð ¨ð ð ð ð ð&ð °X¸c´]ð ð ð ð ð(
ð 
ð 
ð 
ð 
˜GœNñ 
ô 
ð 
ð 
ð 
r   