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

chat_session	delimiterreturnc                 C   sL  g }| d D ]}t |jtr-d}|jD ]}t |tr%||ddp"d7 }q||7 }q||_t |jts;td|j |sE|t| qt |t	|d r|d j
ddur|d j
d |j
dkrt |d jtswt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.
    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    r!   m/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/langchain_community/chat_loaders/utils.pymerge_chat_runs_in_session
   sJ   




r#   chat_sessionsc                 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_runs>   s   r%   r   c                 C   s`   g }d}| d D ]"}|j d|kr%t|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_sessionM   s   

r+   c                 c   s    | D ]}t ||V  qdS )r&   N)r+   )r$   r   r
   r!   r!   r"   map_ai_messages`   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,    
4