
    7|h                         d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
mZ 	 ddededefd	Zd
ee   dee   fdZd
ededefdZd
ee   dedee   fdZy)zUtilities for chat loaders.    )deepcopy)IterableIteratorList)ChatSession)	AIMessageBaseMessagechat_session	delimiterreturnc                 F   g }| d   D ]  }t        |j                  t              st        d|j                         |s|j	                  t        |             St        |t        |d               r|d   j                  j                  d      |d   j                  d   |j                  j                  d      k(  rt        |d   j                  t              st        d|d   j                         |d   j                  |z   |j                  z   j                         |d   _        |d   j                  j                  dg       j                  |j                  j                  d      xs g        r|j	                  t        |              t        |      S )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.
    messageszAChat Loaders only support messages with content type string, got sendereventsr   )
isinstancecontentstr
ValueErrorappendr   typeadditional_kwargsgetstripextendr   )r
   r   r   messages       e/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/chat_loaders/utils.pymerge_chat_runs_in_sessionr   
   s    #%H
+ /'//3/')  OOHW-.wXb\ 23..228<H..x8((,,X67 hrl22C8 #B<//02 
 $$y07??Beg RL  RL**..x<CC))--h7=2 OOHW-.5/6 ))    chat_sessionsc              #   4   K   | D ]  }t        |        yw)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#   6   s"      & 7(667s   r   c           
         g }d}| d   D ]q  }|j                   j                  d      |k(  r@t        |j                  |j                   j	                         t        |dd            }|dz  }|j                  |       s t        |      S )	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_sessionr+   E   s    
 HM , !$$((2f<")";";"@"@"BD9G
 QM ! ))r    c              #   6   K   | D ]  }t        ||        yw)r%   N)r+   )r!   r   r
   s      r   map_ai_messagesr-   X   s$      & ?(v>>?s   N)z

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