
    ~
i                         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                    rId}|j        D ]8}t          |t                    r||                    dd          pdz  }3||z  }9||_        t          |j        t
                    st          d|j                   |s#|                    t          |                     t          |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.
    messages textzAChat Loaders only support messages with content type string, got senderNeventsr   )
isinstancecontentlistdictgetstr
ValueErrorappendr   typeadditional_kwargsstripextendr   )r   r   r   messager   r   s         C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_community/chat_loaders/utils.pymerge_chat_runs_in_sessionr$   
   sC    #%H
+ "/ "/got,, 	#D"? $ $gt,, $GKK339r9DDGODD"GO'/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(   >   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_sessionr0   M   s    
 HM , ! !$((22f<<")";"@"@"B"BD99  G
 QM    ))))r%   c              #   8   K   | D ]}t          ||          V  dS )r*   N)r0   )r&   r   r   s      r#   map_ai_messagesr2   `   s:       & ? ?(v>>>>>>? ?r%   N)r
   )__doc__r-   r   typingr   r   r   langchain_core.chat_sessionsr   langchain_core.messagesr   r	   r   r$   r(   r0   r2    r%   r#   <module>r8      s1   ! !       + + + + + + + + + + 4 4 4 4 4 4 : : : : : : : : 171* 1*1**-1*1* 1* 1* 1*h78K#8 7Xk=R 7 7 7 7*k *3 *; * * * *&?K(?25?k? ? ? ? ? ?r%   