
    dh                         S r SSKJr  SSKJrJrJr  SSKJr  SSK	J
r
Jr   SS\S\S\4S	 jjrS
\\   S\\   4S jrS
\S\S\4S jrS
\\   S\S\\   4S jrg)zUtilities for chat loaders.    )deepcopy)IterableIteratorList)ChatSession)	AIMessageBaseMessagechat_session	delimiterreturnc                 P   / nU S    GH  n[        UR                  [        5      (       aJ  SnUR                   H2  n[        U[        5      (       a  XER	                  SS5      -  nM.  XE-  nM4     XCl        [        UR                  [
        5      (       d  [        SUR                   35      eU(       d  UR                  [        U5      5        M  [        U[        US   5      5      (       Ga  US   R                  R	                  S5      b  US   R                  S   UR                  R	                  S5      :X  a  [        US   R                  [
        5      (       d  [        SUS   R                   35      eUS   R                  U-   UR                  -   R                  5       US   l        US   R                  R	                  S/ 5      R                  UR                  R	                  S5      =(       d    / 5        GM  UR                  [        U5      5        GM     [        US	9$ )
zMerge chat runs together in a chat session.

A chat run is a sequence of messages from the same sender.

Args:
    chat_session: A chat session.

Returns:
    A chat session with merged chat runs.
messages textNzAChat Loaders only support messages with content type string, got sendereventsr   )
isinstancecontentlistdictgetstr
ValueErrorappendr   typeadditional_kwargsstripextendr   )r
   r   r   messager   r   s         ^/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/chat_loaders/utils.pymerge_chat_runs_in_sessionr#   
   s    #%H
+goot,,D"??gt,,KK55DOD	 +
 #O'//3//')  OOHW-.wXb\ 233..228<H..x8((,,X67 hrl22C88 #B<//02 
 $$y07??Beg RL  RL**..x<CC))--h7=2 OOHW-.E ,F ))    chat_sessionsc              #   8   #    U  H  n[        U5      v   M     g7f)zMerge chat runs together.

A chat run is a sequence of messages from the same sender.

Args:
    chat_sessions: A list of chat sessions.

Returns:
    A list of chat sessions with merged chat runs.
N)r#   )r%   r
   s     r"   merge_chat_runsr'   >   s      &(66 &   r   c           
         / nSnU S    Hp  nUR                   R                  S5      U:X  a=  [        UR                  UR                   R	                  5       [        USS5      S9nUS-  nUR                  U5        Mr     [        US9$ )	|Convert messages from the specified 'sender' to AI messages.

This is useful for fine-tuning the AI to adapt to your voice.
r   r   r   exampleN)r   r   r+      r   )r   r   r   r   copygetattrr   r   )r%   r   r   num_convertedr!   s        r"   map_ai_messages_in_sessionr0   M   s    
 HM ,$$((2f<")";";"@"@"BD9G
 QM  - ))r$   c              #   8   #    U  H  n[        X!5      v   M     g7f)r*   N)r0   )r%   r   r
   s      r"   map_ai_messagesr2   `   s      &(>> &r(   N)z

)__doc__r-   r   typingr   r   r   langchain_core.chat_sessionsr   langchain_core.messagesr   r	   r   r#   r'   r0   r2    r$   r"   <module>r8      s    !  + + 4 : 171*1**-1*1*h78K#8 7Xk=R 7*k *3 *; *&?K(?25?k?r$   