o
    Nh                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 ede _eddZeeddZdd	 Ze Zed
Zdedee fddZdee deeee f fddZdS )    N)URLErrorOPENAI_API_KEYCHROMA_HOST	localhostCHROMA_PORTi@  c                  C   s   zt jttd} |   | W S  tya   tdt dt d tjdddtdt	tgtj
tj
d	 td
D ]&}zt jttd} |   td | W    Y S  ty\   td Y q6w tdw )N)hostportz0[INFO] ChromaDB non risponde. Avvio processo su :z...chromarunz--hostz--port)stdoutstderr   z&[INFO] ChromaDB avviato correttamente.g      ?u!   ❌ Impossibile avviare ChromaDB.)chromadb
HttpClientr   r   	heartbeat	Exceptionprint
subprocessPopenstrDEVNULLrangetimesleepRuntimeError)r
   _ r   /var/www/html/ai_worker/gpt.pyensure_chroma_running
   s*   r   case_studiestextreturnc                 C   s   t jjd| djd jS )Nztext-embedding-3-small)modelinputr   )openai
embeddingscreatedata	embedding)r!   r   r   r   embed!   s   r*   tablec           	      C   s   d dd | D }t|}tj|gdd}|d d }d |d	 d }d
}dtj| ddd d| d}tjjj	dd|dd|dgdd}|j
d jj|fS )Nz; c                 s   s.    | ]}|d   d|d  |d  V  qdS )label=companyunitNr   ).0rowr   r   r   	<genexpr>)   s   , znarrative.<locals>.<genexpr>   )query_embeddings	n_resultsidsr   
	documentsu   Sei un esperto di consulenza HR e organizzativa. Il tuo compito è generare un'analisi professionale basata sui KPI aziendali forniti e confrontarli con benchmark tratti da casi studio simili.u   
Analizza i seguenti dati aziendali e genera una breve relazione descrittiva:

📊 **Dati aziendali e KPI** (valori attuali):
F   )ensure_asciiindentu   

📚 **Casi studio simili**:
u]  

✍️ **Obiettivo**:
1. Riconosci i punti di forza e debolezza.
2. Evidenzia le aree in cui l'azienda è sopra o sotto il benchmark.
3. Proponi spunti per migliorare in ottica Smart Week (es. settimana corta, benessere, produttività).

Scrivi in tono professionale ma accessibile, come se stessi preparando un commento per un cliente aziendale.
zgpt-4o-minisystem)rolecontentuserg333333?)r#   messagestemperature)joinr*   casesqueryjsondumpsr%   chatcompletionsr'   choicesmessager>   )	r+   rD   embsimilr6   contextsysusrrspr   r   r   	narrative'   s&   	rQ   )r%   osr   numpynprE   structr   r   urllib.errorr   getenvapi_keyr   intr   r   r
   get_or_create_collectionrC   r   listfloatr*   dicttuplerQ   r   r   r   r   <module>   s   @ 
&