o
    Dh                     @   s   d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ e Zeje
dgddgdgd	 d
edefddZd
efddZeddefddZeddefddZdS )    N)FastAPIRequest)StreamingResponse)SimpleDeepSeekRAG)CORSMiddleware)datetime*T)allow_originsallow_credentialsallow_methodsallow_headerspromptorigemc              
   C   s^   t dddd}t  }|d| d| d|  d W d    d S 1 s(w   Y  d S )	Nzconsulta.logazutf-8)encoding[z] (z) 
)openr   now	isoformatwrite)r   r   f	timestamp r   /var/www/observatorio/app.pyregistrar_consulta   s    "r   c                   s   t   t  dtf fdd}t|d}t t |j|  	  I d H }|dkr<dt	
ddi d	 V  d S dt	
d
|i d	 V  q#)Ntokenc                    s     j|  d S )N)call_soon_threadsafe
put_nowait)r   loopqueuer   r   
send_token   s   z%generate_response.<locals>.send_token)stream_funcTz[END]zdata: donez

response)asyncioget_event_loopQueuestrr   create_task	to_threadquerygetjsondumps)r   r"   
simple_ragr   r   r   r   generate_response   s   
r1   /api/generaterequestc                    s8   |   I d H }|dd}t|dd tt|ddS )Nr    r2   r   text/event-stream
media_type)r.   r-   r   r   r1   )r3   bodyr   r   r   r   api_generate0   s
   r:   	/api/chatc                    sL   |   I d H }|dg }ddd |D }t|dd tt|ddS )	Nmessagesr   c                 S   s"   g | ]}|d   d|d  qS )rolez: contentr   ).0mr   r   r   
<listcomp><   s   " zapi_chat.<locals>.<listcomp>r;   r5   r6   r7   )r.   r-   joinr   r   r1   )r3   r9   r<   r   r   r   r   api_chat8   s   rC   )r&   r.   fastapir   r   fastapi.responsesr   agentic_rag_4r   fastapi.middleware.corsr   r   appadd_middlewarer)   r   r1   postr:   rC   r   r   r   r   <module>   s*    	