
    Ng                         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dS )zUtilities for chat loaders.    )deepcopy)IterableIteratorList)ChatSession)	AIMessageBaseMessage

chat_session	delimiterreturnc                    g }| d         D ]}t          |j        t                    st          d|j                   |s#|                    t          |                     Yt          |t          |d                             r|d         j                            d          |d         j        d         |j                            d          k    rt          |d         j        t                    st          d|d         j                   |d         j        |z   |j        z   	                                |d         _        |d         j                            dg           
                    |j                            d          pg            |                    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 senderNeventsr   )
isinstancecontentstr
ValueErrorappendr   typeadditional_kwargsgetstripextendr   )r   r   r   messages       b/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/chat_loaders/utils.pymerge_chat_runs_in_sessionr    
   s    #%H
+ / /'/3// 	)) )    	/OOHW--....wXb\ 2 233	/.228<<H.x8(,,X667 7 hrl2C88  2#B</2 2  
 $y07?Begg RL  RL*..x<<CC)--h77=2    OOHW--....))))    chat_sessionsc              #   6   K   | D ]}t          |          V  dS )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   s8       & 7 7(6666667 7r!   r   c           
      *   g }d}| d         D ]w}|j                             d          |k    rBt          |j        |j                                         t          |dd                    }|dz  }|                    |           xt          |          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 , ! !$((22f<<")";"@"@"B"BD99  G
 QM    ))))r!   c              #   8   K   | D ]}t          ||          V  dS )r&   N)r,   )r"   r   r   s      r   map_ai_messagesr.   X   s:       & ? ?(v>>>>>>? ?r!   N)r
   )__doc__r)   r   typingr   r   r   langchain_core.chat_sessionsr   langchain_core.messagesr   r	   r   r    r$   r,   r.    r!   r   <module>r4      s1   ! !       + + + + + + + + + + 4 4 4 4 4 4 : : : : : : : : 17)* )*)**-)*)* )* )* )*X78K#8 7Xk=R 7 7 7 7*k *3 *; * * * *&?K(?25?k? ? ? ? ? ?r!   