§
    šŠtj¤2  ã                  óÈ  — 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       úa/var/www/html/CA-Chatbot/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 )	ÚIndexableBaseModelzDAllows 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.   € € € € € ØNÐNð#ð #ð #ð #ð #ð #r/   r'   c                  ó   — e Zd ZU dZded<   dS )ÚChoicezChoice.ÚdictÚmessageN©r0   r1   r2   r3   Ú__annotations__r!   r/   r$   r5   r5   1   s   € € € € € € Ø€Mà€M€M�M€M€Mr/   r5   c                  ó   — e Zd ZU dZded<   dS )ÚChatCompletionszChat completions.zList[Choice]ÚchoicesNr8   r!   r/   r$   r;   r;   7   s$   € € € € € € ØÐàÐÐÑÐÐr/   r;   c                  ó   — e Zd ZU dZded<   dS )ÚChoiceChunkzChoice chunk.r6   ÚdeltaNr8   r!   r/   r$   r>   r>   =   s   € € € € € € ØÐà€K€K�K€K€Kr/   r>   c                  ó   — e Zd ZU dZded<   dS )ÚChatCompletionChunkzChat completion chunk.zList[ChoiceChunk]r<   Nr8   r!   r/   r$   rA   rA   C   s$   € € € € € € Ø Ð àÐÐÑÐÐr/   rA   Ú_dictúMapping[str, Any]r   c                ó^  — |                       d¦  «        }|dk    r$t          |                       dd¦  «        ¬¦  «        S |dk    rŒ|                       dd¦  «        pd}i }|                       d¦  «        x}rt          |¦  «        |d<   |                       d¦  «        x}r||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Úcontext)rG   Úadditional_kwargsÚsystemÚfunctionÚname)rG   rP   ÚtoolÚtool_call_id)rG   rR   rM   )rG   rE   )Úgetr   r6   r   r   r   r   r   )rB   rE   rG   rM   rJ   rK   rL   s          r$   Úconvert_dict_to_messagerT   I   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Ñ+Ø—i’i 	Ñ*Ô*Ð*ˆ7ð 	3Ø+2Ð˜iÑ(Ý Ð<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<   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   rL   rN   rO   )rE   rG   rP   rQ   )rE   rG   rR   zGot unknown type rP   )Ú
isinstancer   rE   rG   r   r   rM   r   r   rP   r   rR   Ú	TypeError)r7   Úmessage_dicts     r$   Úconvert_message_to_dictrY   r   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Ñ'Ø˜Ô1Ð1Ð1Ø&-Ô&?À	Ô&Jˆ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!   )rT   ©Ú.0Úms     r$   ú
<listcomp>z+convert_openai_messages.<locals>.<listcomp>¯   s!   € Ð9Ð9Ð9¨1Õ# AÑ&Ô&Ð9Ð9Ð9r/   r!   )rZ   s    r$   Úconvert_openai_messagesrc   ¦   s   € ð :Ð9°Ð9Ñ9Ô9Ð9r/   Úchunkr   r"   c                óD  — i }t          | t          ¦  «        r_|dk    rd|d<   d| j        v r| j        d         |d<   |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   rK   z%Got unexpected streaming chunk type: rH   )rV   r   rM   rG   Ú
ValueErrorÚtype©rd   r"   rB   s      r$   Ú_convert_message_chunkri   ²   sÜ   € Ø€EÝ�%�Ñ(Ô(ð PØ�Š6ˆ6à'ˆE�&‰MØ˜eÔ5Ð5Ð5Ø%*Ô%<¸_Ô%MˆE�/Ñ"ð �AŠvˆvØ#'��iÑ Ø˜5Ô2Ð2Ð2Ø"'Ô"9¸,Ô"Gˆ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?   )ri   rh   s      r$   Ú_convert_message_chunk_to_deltarl   Î   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ÚstreamrZ   r[   rq   r)   rr   úLiteral[False]Úkwargsr   r   r6   c               ó   — d S r+   r!   ©rZ   rq   rr   rt   s       r$   ÚcreatezChatCompletion.createÖ   s	   € ð ˆsr/   ©rq   úLiteral[True]r   c               ó   — d S r+   r!   rv   s       r$   rw   zChatCompletion.createà   ó	   € ð �3r/   Ú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_community.chat_modelsr<   r7   c              3  ó<   K  — | ]\  }}t          ||¦  «        V — Œd S r+   ©rl   ©r`   r"   Úcs      r$   ú	<genexpr>z(ChatCompletion.create.<locals>.<genexpr>ú   sD   è è € ð ð á�A�qõ 0°°1Ñ5Ô5ðð ð ð ð ð r/   r!   )Ú	importlibÚimport_moduler,   rc   ÚinvokerY   Ú	enumeraterr   ©	rZ   rq   rr   rt   ÚmodelsÚ	model_clsÚmodel_configÚconverted_messagesÚresults	            r$   rw   zChatCompletion.createê   s·   € õ Ô(Ð)JÑKÔKˆÝ˜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!   rv   s       r$   ÚacreatezChatCompletion.acreateÿ   s   è è € ð ˆsr/   r   c             ‹  ó
   K  — d S r+   r!   rv   s       r$   r�   zChatCompletion.acreate	  ó   è è € ð ˜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,   rc   ÚainvokerY   r%   Úastreamr‰   s	            r$   r�   zChatCompletion.acreate  sÍ   è è € õ Ô(Ð)JÑKÔKˆÝ˜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)
rZ   r[   rq   r)   rr   rs   rt   r   r   r6   ©
rZ   r[   rq   r)   rr   ry   rt   r   r   r   )
rZ   r[   rq   r)   rr   r|   rt   r   r   r}   ©
rZ   r[   rq   r)   rr   ry   rt   r   r   r   )
rZ   r[   rq   r)   rr   r|   rt   r   r   r“   ©r0   r1   r2   r3   r   Ústaticmethodrw   r�   r!   r/   r$   rn   rn   Ó   sf  € € € € € ØÐàØð %Ø!&ð	ð ð ð ð ñ „\ñ „Xðð Øð %ðð ð ð ð ñ „\ñ „Xðð ð %Øð	ð ð ð ð ñ „\ðð( Øð %Ø!&ð	ð ð ð ð ñ „\ñ „Xðð Øð %ðð ð ð ð ñ „\ñ „Xðð ð %Øð	ð ð ð ð ñ „\ðð ð r/   rn   Úsessionr   r|   c                ó@   — t          d„ | d         D ¦   «         ¦  «        S )z/Check if chat session has an assistant message.c                ó8   — g | ]}t          |t          ¦  «        ‘ŒS r!   )rV   r   r_   s     r$   rb   z*_has_assistant_message.<locals>.<listcomp>+  s"   € ÐFÐFÐF¨Q•
˜1�iÑ(Ô(ÐFÐFÐFr/   rZ   )Ú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!   )rY   )r`   Úss     r$   rb   z>convert_messages_for_finetuning.<locals>.<listcomp>.<listcomp>:  s!   € ÐAÐAÐA¨Õ	  Ñ	#Ô	#ÐAÐAÐAr/   rZ   )r    )r`   rœ   s     r$   rb   z3convert_messages_for_finetuning.<locals>.<listcomp>9  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Completions.ro   Frp   rZ   r[   rq   r)   rr   rs   rt   r   r   r;   c               ó   — d S r+   r!   rv   s       r$   rw   zCompletions.createC  s	   € ð ˜#r/   rx   ry   r   c               ó   — d S r+   r!   rv   s       r$   rw   zCompletions.createM  r{   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>   ri   r‚   s      r$   r„   z%Completions.create.<locals>.<genexpr>i  sg   è è € ð ð ñ �A�qõ $Ý(Õ/EÀaÈÑ/KÔ/KÐLÑLÔLÐMðñ ô ðð ð ð ð ð r/   r!   )
r…   r†   r,   rc   r‡   r;   r5   rY   rˆ   rr   r‰   s	            r$   rw   zCompletions.createW  sÎ   € õ Ô(Ð)JÑKÔKˆÝ˜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!   rv   s       r$   r�   zCompletions.acreatep  s   è è € ð ˜#r/   r   c             ‹  ó
   K  — d S r+   r!   rv   s       r$   r�   zCompletions.acreatez  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,   rc   r–   r;   r5   rY   r%   r—   r‰   s	            r$   r�   zCompletions.acreate„  sä   è è € õ Ô(Ð)JÑKÔKˆÝ˜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)
rZ   r[   rq   r)   rr   rs   rt   r   r   r;   r˜   )
rZ   r[   rq   r)   rr   r|   rt   r   r   r­   r™   )
rZ   r[   rq   r)   rr   r|   rt   r   r   r¶   rš   r!   r/   r$   rª   rª   @  sf  € € € € € ØÐàØð %Ø!&ð	ð ð ð ð ñ „\ñ „Xðð Øð %ðð ð ð ð ñ „\ñ „Xðð ð %Øð	ð ð ð ð ñ „\ðð0 Øð %Ø!&ð	ð ð ð ð ñ „\ñ „Xðð Øð %ðð ð ð ð ñ „\ñ „Xðð ð %Øð	ð ð ð ð ñ „\ðð ð r/   rª   c                  ó   — e Zd ZdZdd„ZdS )ÚChatzChat.r   ÚNonec                ó,   — t          ¦   «         | _        d S r+   )rª   Úcompletions)r-   s    r$   Ú__init__zChat.__init__¡  s   € Ý&™=œ=ˆÔÐÐr/   N)r   r»   )r0   r1   r2   r3   r¾   r!   r/   r$   rº   rº   ž  s-   € € € € € Ø€Kð)ð )ð )ð )ð )ð )r/   rº   )r   )r   r   r   r   r   r   )rB   rC   r   r   )r7   r   r   r6   )rZ   r[   r   r\   )rd   r   r"   r   r   r6   )rd   r   r"   r   r   rj   )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   Úpydanticr   Útyping_extensionsr   r%   r'   r5   r;   r>   rA   rT   rY   rc   ri   rl   rn   r    r¨   rª   rº   Úchatr!   r/   r$   ú<module>rÆ      s^  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 5Ð 4Ð 4Ð 4Ð 4Ð 4ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %ð 01ðð ð ð ð ð#ð #ð #ð #ð #˜ñ #ô #ð #ðð ð ð ð Ðñ ô ð ðð ð ð ð Ð(ñ ô ð ðð ð ð ð Ð$ñ ô ð ðð ð ð ð Ð,ñ ô ð ð&Hð &Hð &Hð &HðR1ð 1ð 1ð 1ðh	:ð 	:ð 	:ð 	:ðð ð ð ð8+ð +ð +ð +ð
Sð Sð Sð Sð Sñ Sô Sð SðlHð Hð Hð Hð
ð ð ð ð$[ð [ð [ð [ð [ñ [ô [ð [ð|)ð )ð )ð )ð )ñ )ô )ð )ð €t�v„v€€€r/   