§
    æ˜ºho/  ã                  óÈ  — d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ 	 d8d9d„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:d„Z#d;d„Z$d<d#„Z%d=d'„Z&d>d)„Z' G d*„ d+¦  «        Z(d?d/„Z)d@d3„Z* G d4„ d5¦  «        Z+ G d6„ d7¦  «        Z, e,¦   «         Z-dS )Aé    )ÚannotationsN)	ÚAnyÚAsyncIteratorÚDictÚIterableÚListÚMappingÚSequenceÚUnionÚoverload)ÚChatSession)	Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚFunctionMessageÚHumanMessageÚSystemMessageÚToolMessage)Ú	BaseModel)ÚLiteralÚiterableúAsyncIterator[Any]ÚstartÚintÚreturnúAsyncIterator[tuple[int, Any]]c               ó<   K  — |}| 2 3 d{V —†}||fW V — |dz  }Œ6 dS )z$Async version of enumerate function.Né   © )r   r   ÚiÚxs       úk/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/adapters/openai.pyÚ
aenumerater%       sX   è è € ð 	€AØð ð ð ð ð ð ð ˆaØ�ˆdˆ
ˆ
ˆ
ˆ
Ø	ˆQ‰ˆˆð �8�8s   ‡c                  ó   — e Zd ZdZdd„ZdS )	ÚIndexableBaseModelzCAllows a BaseModel to return its fields by string variable indexingÚitemÚstrr   r   c                ó"   — t          | |¦  «        S ©N)Úgetattr)Úselfr(   s     r$   Ú__getitem__zIndexableBaseModel.__getitem__-   s   € Ý�t˜TÑ"Ô"Ð"ó    N)r(   r)   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.   r!   r/   r$   r'   r'   *   s.   € € € € € ØMÐMð#ð #ð #ð #ð #ð #r/   r'   c                  ó   — e Zd ZU ded<   dS )ÚChoiceÚdictÚmessageN©r0   r1   r2   Ú__annotations__r!   r/   r$   r5   r5   1   s   € € € € € € Ø€M€M�M€M€Mr/   r5   c                  ó   — e Zd ZU ded<   dS )ÚChatCompletionszList[Choice]ÚchoicesNr8   r!   r/   r$   r;   r;   5   s   € € € € € € ØÐÐÑÐÐr/   r;   c                  ó   — e Zd ZU ded<   dS )ÚChoiceChunkr6   ÚdeltaNr8   r!   r/   r$   r>   r>   9   s   € € € € € € Ø€K€K�K€K€Kr/   r>   c                  ó   — e Zd ZU ded<   dS )ÚChatCompletionChunkzList[ChoiceChunk]r<   Nr8   r!   r/   r$   rA   rA   =   s   € € € € € € ØÐÐÑÐÐr/   rA   Ú_dictúMapping[str, Any]r   c                ó&  — |                       d¦  «        }|dk    r$t          |                       dd¦  «        ¬¦  «        S |dk    rp|                       dd¦  «        pd}i }|                       d¦  «        x}rt          |¦  «        |d<   |                       d¦  «        x}r||d<   t          ||¬	¦  «        S |d
k    r$t	          |                       dd¦  «        ¬¦  «        S |dk    r8t          |                       dd¦  «        |                       d¦  «        ¬¦  «        S |dk    rJi }d| v r| d         |d<   t          |                       dd¦  «        |                       d¦  «        |¬¦  «        S t          |                       dd¦  «        |¬¦  «        S )zˆConvert a dictionary to a LangChain message.

    Args:
        _dict: The dictionary.

    Returns:
        The LangChain message.
    ÚroleÚuserÚcontentÚ )rG   Ú	assistantÚfunction_callÚ
tool_calls)rG   Úadditional_kwargsÚsystemÚfunctionÚname)rG   rO   ÚtoolÚtool_call_id)rG   rQ   rL   )rG   rE   )Úgetr   r6   r   r   r   r   r   )rB   rE   rG   rL   rJ   rK   s         r$   Úconvert_dict_to_messagerS   A   s´  € ð �9Š9�VÑÔ€DØˆv‚~€~Ý E§I¢I¨i¸Ñ$<Ô$<Ð=Ñ=Ô=Ð=Ø	�Ò	Ð	ð —)’)˜I rÑ*Ô*Ð0¨bˆØ"$ÐØ!ŸIšI oÑ6Ô6Ð6ˆ=ð 	EÝ15°mÑ1DÔ1DÐ˜oÑ.ØŸš <Ñ0Ô0Ð0ˆ:ð 	9Ø.8Ð˜lÑ+Ý Ð<MÐNÑNÔNÐNØ	�Ò	Ð	Ý U§Y¢Y¨y¸"Ñ%=Ô%=Ð>Ñ>Ô>Ð>Ø	�Ò	Ð	Ý u§y¢y°¸BÑ'?Ô'?ÀeÇiÂiÐPVÑFWÔFWÐXÑXÔXÐXØ	�ŠˆØÐØ�Uˆ?ˆ?Ø(-¨f¬Ð˜fÑ%ÝØ—I’I˜i¨Ñ,Ô,ØŸš >Ñ2Ô2Ø/ð
ñ 
ô 
ð 	
õ  5§9¢9¨Y¸Ñ#;Ô#;À$ÐGÑGÔGÐGr/   r7   r6   c                ó¨  — t          | t          ¦  «        r| j        | j        dœ}�nt          | t          ¦  «        rd| j        dœ}nòt          | t
          ¦  «        r_d| j        dœ}d| j        v r!| j        d         |d<   |d         dk    rd|d<   d| j        v r!| j        d         |d<   |d         dk    rd|d<   n~t          | t          ¦  «        rd	| j        dœ}n^t          | t          ¦  «        rd
| j        | j	        dœ}n8t          | t          ¦  «        rd| j        | j        dœ}nt          d| › �¦  «        ‚d| j        v r| j        d         |d<   |S )zŠConvert a LangChain message to a dictionary.

    Args:
        message: The LangChain message.

    Returns:
        The dictionary.
    )rE   rG   rF   rI   rJ   rG   rH   NrK   rM   rN   )rE   rG   rO   rP   )rE   rG   rQ   zGot unknown type rO   )Ú
isinstancer   rE   rG   r   r   rL   r   r   rO   r   rQ   Ú	TypeError)r7   Úmessage_dicts     r$   Úconvert_message_to_dictrX   h   s¡  € õ �'�;Ñ'Ô'ð 7Ø '¤¸¼ÐIÐIˆ‰Ý	�G�\Ñ	*Ô	*ð 7Ø &°7´?ÐCÐCˆˆÝ	�G�YÑ	'Ô	'ð 7Ø +¸¼ÐHÐHˆØ˜gÔ7Ð7Ð7Ø,3Ô,EÀoÔ,VˆL˜Ñ)à˜IÔ&¨"Ò,Ð,Ø*.�˜YÑ'Ø˜7Ô4Ð4Ð4Ø)0Ô)BÀ<Ô)PˆL˜Ñ&à˜IÔ&¨"Ò,Ð,Ø*.�˜YÑ'øÝ	�G�]Ñ	+Ô	+ð 7Ø (°W´_ÐEÐEˆˆÝ	�G�_Ñ	-Ô	-ð 7àØ”Ø”Lð
ð 
ˆˆõ
 
�G�[Ñ	)Ô	)ð 7àØ”Ø#Ô0ð
ð 
ˆˆõ Ð5¨GÐ5Ð5Ñ6Ô6Ð6Ø�Ô*Ð*Ð*Ø&Ô8¸Ô@ˆ�VÑØÐr/   ÚmessagesúSequence[Dict[str, Any]]úList[BaseMessage]c                ó   — d„ | D ¦   «         S )z×Convert dictionaries representing OpenAI messages to LangChain format.

    Args:
        messages: List of dictionaries representing OpenAI messages

    Returns:
        List of LangChain BaseMessage objects.
    c                ó,   — g | ]}t          |¦  «        ‘ŒS r!   )rS   ©Ú.0Úms     r$   ú
<listcomp>z+convert_openai_messages.<locals>.<listcomp>    s!   € Ð9Ð9Ð9¨1Õ# AÑ&Ô&Ð9Ð9Ð9r/   r!   )rY   s    r$   Úconvert_openai_messagesrb   —   s   € ð :Ð9°Ð9Ñ9Ô9Ð9r/   Úchunkr   r"   c                óü   — i }t          | t          ¦  «        r;|dk    rd|d<   d| j        v r| j        d         |d<   |dk    rd |d<   n*| j        |d<   nt	          dt          | ¦  «        › �¦  «        ‚|ddik    ri }|S )Nr   rI   rE   rJ   rG   z%Got unexpected streaming chunk type: rH   )rU   r   rL   rG   Ú
ValueErrorÚtype©rc   r"   rB   s      r$   Ú_convert_message_chunkrh   £   s§   € Ø€EÝ�%�Ñ(Ô(ð PØ�Š6ˆ6à'ˆE�&‰MØ˜eÔ5Ð5Ð5Ø%*Ô%<¸_Ô%MˆE�/Ñ"ð �AŠvˆvØ#'��iÑ øà$œ}ˆE�)ÑÐåÐNÅÀeÁÄÐNÐNÑOÔOÐOà�˜B�ÒÐØˆØ€Lr/   úDict[str, Any]c                ó0   — t          | |¦  «        }dd|igiS )Nr<   r?   )rh   rg   s      r$   Ú_convert_message_chunk_to_deltark   ¹   s$   € Ý" 5¨!Ñ,Ô,€EØ˜ %Ð(Ð)Ð*Ð*r/   c                  ó  — e Zd ZdZeedddœdd„¦   «         ¦   «         Zeeddœdd„¦   «         ¦   «         Zedddœdd„¦   «         Zeedddœdd„¦   «         ¦   «         Zeeddœd d„¦   «         ¦   «         Zedddœd!d„¦   «         ZdS )"ÚChatCompletionzChat completion.Ú
ChatOpenAIF©ÚproviderÚstreamrY   rZ   rp   r)   rq   úLiteral[False]Úkwargsr   r   r6   c               ó   — d S r+   r!   ©rY   rp   rq   rs   s       r$   ÚcreatezChatCompletion.createÁ   ó	   € ð 	ˆr/   ©rp   úLiteral[True]r   c               ó   — d S r+   r!   ru   s       r$   rv   zChatCompletion.createÌ   rw   r/   ÚboolúUnion[dict, Iterable]c               ó&  — t          j        d¦  «        }t          ||¦  «        } |di |¤Ž}t          | ¦  «        }|s)|                     |¦  «        }ddt          |¦  «        igiS d„ t          |                     |¦  «        ¦  «        D ¦   «         S )Núlangchain.chat_modelsr<   r7   c              3  ó<   K  — | ]\  }}t          ||¦  «        V — Œd S r+   ©rk   ©r_   r"   Úcs      r$   ú	<genexpr>z(ChatCompletion.create.<locals>.<genexpr>ç   sD   è è € ð ð á�A�qõ 0°°1Ñ5Ô5ðð ð ð ð ð r/   r!   )Ú	importlibÚimport_moduler,   rb   ÚinvokerX   Ú	enumeraterq   ©	rY   rp   rq   rs   ÚmodelsÚ	model_clsÚmodel_configÚconverted_messagesÚresults	            r$   rv   zChatCompletion.create×   s·   € õ Ô(Ð)@ÑAÔAˆÝ˜F HÑ-Ô-ˆ	Ø �yÐ*Ð* 6Ð*Ð*ˆÝ4°XÑ>Ô>ÐØð 	Ø!×(Ò(Ð);Ñ<Ô<ˆFØ Õ,CÀFÑ,KÔ,KÐ LÐMÐNÐNðð å% l×&9Ò&9Ð:LÑ&MÔ&MÑNÔNðñ ô ð r/   c             ‹  ó
   K  — d S r+   r!   ru   s       r$   ÚacreatezChatCompletion.acreateì   ó   è è € ð 	ˆr/   r   c             ‹  ó
   K  — d S r+   r!   ru   s       r$   r�   zChatCompletion.acreate÷   r�   r/   úUnion[dict, AsyncIterator]c             ‹  ó6  K  — t          j        d¦  «        }t          ||¦  «        } |di |¤Ž}t          | ¦  «        }|s/|                     |¦  «        ƒ d {V —†}ddt          |¦  «        igiS d„ t          |                     |¦  «        ¦  «        2 ¦   «         S )Nr~   r<   r7   c               óL   K  — | 3 d {V —†	 \  }}t          ||¦  «        W V — Œ6 d S r+   r€   r�   s      r$   rƒ   z)ChatCompletion.acreate.<locals>.<genexpr>  sl   è è € ð ð ð ð ð ð ð ð á˜!˜Qõ 0°°1Ñ5Ô5ðð ð ð ð ð ð ð s   „#r!   )r„   r…   r,   rb   ÚainvokerX   r%   Úastreamrˆ   s	            r$   r�   zChatCompletion.acreate  sÍ   è è € õ Ô(Ð)@ÑAÔAˆÝ˜F HÑ-Ô-ˆ	Ø �yÐ*Ð* 6Ð*Ð*ˆÝ4°XÑ>Ô>ÐØð 	Ø'×/Ò/Ð0BÑCÔCÐCÐCÐCÐCÐCÐCˆFØ Õ,CÀFÑ,KÔ,KÐ LÐMÐNÐNðð å",¨\×-AÒ-AÐBTÑ-UÔ-UÑ"VÔ"Vðñ ô ð r/   N)
rY   rZ   rp   r)   rq   rr   rs   r   r   r6   ©
rY   rZ   rp   r)   rq   ry   rs   r   r   r   )
rY   rZ   rp   r)   rq   r{   rs   r   r   r|   ©
rY   rZ   rp   r)   rq   ry   rs   r   r   r   )
rY   rZ   rp   r)   rq   r{   rs   r   r   r’   ©r0   r1   r2   r3   r   Ústaticmethodrv   r�   r!   r/   r$   rm   rm   ¾   sf  € € € € € ØÐàØð %Ø!&ð	ð ð ð ð ñ „\ñ „Xðð Øð %ðð ð ð ð ñ „\ñ „Xðð ð %Øð	ð ð ð ð ñ „\ðð( Øð %Ø!&ð	ð ð ð ð ñ „\ñ „Xðð Øð %ðð ð ð ð ñ „\ñ „Xðð ð %Øð	ð ð ð ð ñ „\ðð ð r/   rm   Úsessionr   r{   c                ó@   — t          d„ | d         D ¦   «         ¦  «        S )z/Check if chat session has an assistant message.c                ó8   — g | ]}t          |t          ¦  «        ‘ŒS r!   )rU   r   r^   s     r$   ra   z*_has_assistant_message.<locals>.<listcomp>  s"   € ÐFÐFÐF¨Q•
˜1�iÑ(Ô(ÐFÐFÐFr/   rY   )Úany)r›   s    r$   Ú_has_assistant_messagerŸ     s$   € åÐFÐF°'¸*Ô2EÐFÑFÔFÑGÔGÐGr/   ÚsessionsúIterable[ChatSession]úList[List[dict]]c                ó   — d„ | D ¦   «         S )z²Convert messages to a list of lists of dictionaries for fine-tuning.

    Args:
        sessions: The chat sessions.

    Returns:
        The list of lists of dictionaries.
    c                óP   — g | ]#}t          |¦  «        ¯d „ |d         D ¦   «         ‘Œ$S )c                ó,   — g | ]}t          |¦  «        ‘ŒS r!   )rX   )r_   Úss     r$   ra   z>convert_messages_for_finetuning.<locals>.<listcomp>.<listcomp>)  s!   € ÐAÐAÐA¨Õ	  Ñ	#Ô	#ÐAÐAÐAr/   rY   )rŸ   )r_   r›   s     r$   ra   z3convert_messages_for_finetuning.<locals>.<listcomp>(  sI   € ð ð ð àÝ! 'Ñ*Ô*ðØAÐA¨W°ZÔ-@ÐAÑAÔAðð ð r/   r!   )r    s    r$   Úconvert_messages_for_finetuningr§     s#   € ðð àðñ ô ð r/   c                  ó  — e Zd ZdZeedddœdd„¦   «         ¦   «         Zeeddœdd„¦   «         ¦   «         Zedddœdd„¦   «         Zeedddœdd„¦   «         ¦   «         Zeeddœd d„¦   «         ¦   «         Zedddœd!d„¦   «         ZdS )"ÚCompletionszCompletion.rn   Fro   rY   rZ   rp   r)   rq   rr   rs   r   r   r;   c               ó   — d S r+   r!   ru   s       r$   rv   zCompletions.create2  rw   r/   rx   ry   r   c               ó   — d S r+   r!   ru   s       r$   rv   zCompletions.create=  rw   r/   r{   ú Union[ChatCompletions, Iterable]c               óV  — t          j        d¦  «        }t          ||¦  «        } |di |¤Ž}t          | ¦  «        }|sA|                     |¦  «        }t          t          t          |¦  «        ¬¦  «        g¬¦  «        S d„ t          | 	                    |¦  «        ¦  «        D ¦   «         S )Nr~   ©r7   ©r<   c           	   3  óv   K  — | ]4\  }}t          t          t          ||¦  «        ¬ ¦  «        g¬¦  «        V — Œ5dS )©r?   r¯   N©rA   r>   rh   r�   s      r$   rƒ   z%Completions.create.<locals>.<genexpr>Z  sg   è è € ð ð ñ �A�qõ $Ý(Õ/EÀaÈÑ/KÔ/KÐLÑLÔLÐMðñ ô ðð ð ð ð ð r/   r!   )
r„   r…   r,   rb   r†   r;   r5   rX   r‡   rq   rˆ   s	            r$   rv   zCompletions.createH  sÎ   € õ Ô(Ð)@ÑAÔAˆÝ˜F HÑ-Ô-ˆ	Ø �yÐ*Ð* 6Ð*Ð*ˆÝ4°XÑ>Ô>ÐØð 	Ø!×(Ò(Ð);Ñ<Ô<ˆFÝ"ÝÕ(?ÀÑ(GÔ(GÐHÑHÔHÐIðñ ô ð ðð õ & l×&9Ò&9Ð:LÑ&MÔ&MÑNÔNð	ñ ô ð r/   c             ‹  ó
   K  — d S r+   r!   ru   s       r$   r�   zCompletions.acreatea  r�   r/   r   c             ‹  ó
   K  — d S r+   r!   ru   s       r$   r�   zCompletions.acreatel  r�   r/   ú%Union[ChatCompletions, AsyncIterator]c             ‹  óf  K  — t          j        d¦  «        }t          ||¦  «        } |di |¤Ž}t          | ¦  «        }|sG|                     |¦  «        ƒ d {V —†}t          t          t          |¦  «        ¬¦  «        g¬¦  «        S d„ t          | 	                    |¦  «        ¦  «        2 ¦   «         S )Nr~   r®   r¯   c           	    ó†   K  — | 3 d {V —†	 \  }}t          t          t          ||¦  «        ¬¦  «        g¬¦  «        W V — Œ<6 d S )Nr±   r¯   r²   r�   s      r$   rƒ   z&Completions.acreate.<locals>.<genexpr>‰  s�   è è € ð ð ð ð ð ð ð ð ñ ˜!˜Qõ $Ý(Õ/EÀaÈÑ/KÔ/KÐLÑLÔLÐMðñ ô ðð ð ð ð ð ð ð s   „A r!   )
r„   r…   r,   rb   r•   r;   r5   rX   r%   r–   rˆ   s	            r$   r�   zCompletions.acreatew  sä   è è € õ Ô(Ð)@ÑAÔAˆÝ˜F HÑ-Ô-ˆ	Ø �yÐ*Ð* 6Ð*Ð*ˆÝ4°XÑ>Ô>ÐØð 	Ø'×/Ò/Ð0BÑCÔCÐCÐCÐCÐCÐCÐCˆFÝ"ÝÕ(?ÀÑ(GÔ(GÐHÑHÔHÐIðñ ô ð ðð õ #-¨\×-AÒ-AÐBTÑ-UÔ-UÑ"VÔ"Vð	ñ ô ð r/   N)
rY   rZ   rp   r)   rq   rr   rs   r   r   r;   r—   )
rY   rZ   rp   r)   rq   r{   rs   r   r   r¬   r˜   )
rY   rZ   rp   r)   rq   r{   rs   r   r   rµ   r™   r!   r/   r$   r©   r©   /  sf  € € € € € ØÐàØð %Ø!&ð	ð ð ð ð ñ „\ñ „Xðð Øð %ðð ð ð ð ñ „\ñ „Xðð ð %Øð	ð ð ð ð ñ „\ðð0 Øð %Ø!&ð	ð ð ð ð ñ „\ñ „Xðð Øð %ðð ð ð ð ñ „\ñ „Xðð ð %Øð	ð ð ð ð ñ „\ðð ð r/   r©   c                  ó   — e Zd Zdd„ZdS )ÚChatr   ÚNonec                ó,   — t          ¦   «         | _        d S r+   )r©   Úcompletions)r-   s    r$   Ú__init__zChat.__init__’  s   € Ý&™=œ=ˆÔÐÐr/   N)r   rº   )r0   r1   r2   r½   r!   r/   r$   r¹   r¹   ‘  s(   € € € € € ð)ð )ð )ð )ð )ð )r/   r¹   )r   )r   r   r   r   r   r   )rB   rC   r   r   )r7   r   r   r6   )rY   rZ   r   r[   )rc   r   r"   r   r   r6   )rc   r   r"   r   r   ri   )r›   r   r   r{   )r    r¡   r   r¢   ).Ú
__future__r   r„   Útypingr   r   r   r   r   r	   r
   r   r   Úlangchain_core.chat_sessionsr   Úlangchain_core.messagesr   r   r   r   r   r   r   r   r   Úlangchain_core.pydantic_v1r   Útyping_extensionsr   r%   r'   r5   r;   r>   rA   rS   rX   rb   rh   rk   rm   rŸ   r§   r©   r¹   Úchatr!   r/   r$   ú<module>rÅ      s^  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 5Ð 4Ð 4Ð 4Ð 4Ð 4ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 1Ð 0Ð 0Ð 0Ð 0Ð 0Ø %Ð %Ð %Ð %Ð %Ð %ð 01ðð ð ð ð ð#ð #ð #ð #ð #˜ñ #ô #ð #ðð ð ð ð Ðñ ô ð ðð ð ð ð Ð(ñ ô ð ðð ð ð ð Ð$ñ ô ð ðð ð ð ð Ð,ñ ô ð ð$Hð $Hð $Hð $HðN,ð ,ð ,ð ,ð^	:ð 	:ð 	:ð 	:ðð ð ð ð,+ð +ð +ð +ð
Wð Wð Wð Wð Wñ Wô Wð WðtHð Hð Hð Hð
ð ð ð ð$_ð _ð _ð _ð _ñ _ô _ð _ðD)ð )ð )ð )ð )ñ )ô )ð )ð
 €t�v„v€€€r/   