a
    bg                     @   s   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eeeddd	Zee ee d
ddZeeedddZee eee dddZdS )zUtilities for chat loaders.    )deepcopy)IterableIteratorList)ChatSession)	AIMessageBaseMessage

)chat_session	delimiterreturnc                 C   s  g }| d D ]}t |jts,td|j |s@|t| qt |t|d r|d jddur|d jd |jdkrt |d jtstd|d j |d j| |j 	 |d _|d jdg 
|jdpg  q|t| qt|d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   message r   t/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/chat_loaders/utils.pymerge_chat_runs_in_session
   s>    
r   )chat_sessionsr   c                 c   s   | D ]}t |V  q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
   r   r   r   merge_chat_runs6   s    r!   )r    r   r   c                 C   s`   g }d}| d D ]D}|j d|krJt|j|j  t|ddd}|d7 }|| qt|d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   Znum_convertedr   r   r   r   map_ai_messages_in_sessionE   s    
r'   c                 c   s   | D ]}t ||V  qdS )r"   N)r'   )r    r   r
   r   r   r   map_ai_messagesX   s    r(   N)r	   )__doc__r%   r   typingr   r   r   Zlangchain_core.chat_sessionsr   Zlangchain_core.messagesr   r   r   r   r!   r'   r(   r   r   r   r   <module>   s    ,