
    Ng                     j    d dl Z d dlZd dlmZ d dlmZ d dlmZ dede	de	fdZ
 G d	 d
e          ZdS )    N)List)Document)
BaseLoadermessagetitlereturnc                     | sdS | d         r| d         d         nd}| d         d         d         }t           j                             | d                                       d	          }| d
| d| d| dS )z
    Combine message information in a readable format ready to be used.
    Args:
        message: Message to be concatenated
        title: Title of the conversation

    Returns:
        Concatenated message
     authorroleunknowncontentpartsr   create_timez%Y-%m-%d %H:%M:%Sz - z on z: z

)datetimefromtimestampstrftime)r   r   sendertextdates        h/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/chatgpt.pyconcatenate_rowsr   
   s      r*1(*;JWXv&&F9g&q)D**7=+ABBKK D 6666D66D6666    c                   <    e Zd ZdZd	dedefdZdee         fdZ	dS )
ChatGPTLoaderz0Load conversations from exported `ChatGPT` data.log_filenum_logsc                 "    || _         || _        dS )zInitialize a class object.

        Args:
            log_file: Path to the log file
            num_logs: Number of logs to load. If 0, load all logs.
        N)r   r   )selfr   r   s      r   __init__zChatGPTLoader.__init__"   s     ! r   r   c                    t          | j        d          5 }| j        r!t          j        |          d | j                 nt          j        |          }d d d            n# 1 swxY w Y   g }|D ]{}|d         |d         d                    fdt                    D                       }dt          | j                  i}|                    t          ||                     ||S )	Nutf8)encodingr   mappingr
   c                     g | ]E\  }}|d k    r|         d         d         d         dk    )t          |         d                   FS )r   r   r   r   system)r   ).0idxkeymessagesr   s      r   
<listcomp>z&ChatGPTLoader.load.<locals>.<listcomp>5   sd        Sq$SM)4X>vF(RR	 %Xc]9%=uEE SRRr   source)page_contentmetadata)
openr   r   jsonloadjoin	enumeratestrappendr   )	r    fdata	documentsdr   r/   r+   r   s	          @@r   r2   zChatGPTLoader.load,   sX   $-&111 	TQ48MS49Q<<$-00tyQR||D	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	 	M 	MAgJE|H77    $-h$7$7  	 	D !#dm"4"45HX4(KKKLLLLs   =A""A&)A&N)r   )
__name__
__module____qualname____doc__r5   intr!   r   r   r2    r   r   r   r      s`        ::! ! ! ! ! ! !d8n      r   r   )r   r1   typingr   langchain_core.documentsr   )langchain_community.document_loaders.baser   dictr5   r   r   r@   r   r   <module>rE      s            - - - - - - @ @ @ @ @ @7d 73 73 7 7 7 7*" " " " "J " " " " "r   