
    dh               	          d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 ddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZ d	Zd
Z e j6                  ej8                        Z e
g dg dg dg dg dg dd      ZeeeeeeedZ e e      5 Z! ejD                  e!      Z#ddd        e e      5 Z! ejD                  e!      Z$ddd       d dl%m&Z& d Z'd Z(d Z)d Z*ed        Z+y# 1 sw Y   GxY w# 1 sw Y   0xY w)    N)settings)login_required)OrderedDict   )respostas_prontasresposta_treinamento_aplicativo)resposta_coeficiente_parede) system_educacional_carga_termicasystem_cadastro_projetosystem_cadastro_ambientesystem_lista_ambientesystem_bibliotecasystem_relatoriossystem_termo_referenciasystem_geralz</var/www/html/cagpublico/cag/projeto/fabiano_embeddings.jsonzF/var/www/html/cagpublico/cag/projeto/respostas_prontas_embeddings.json)api_key)
zcadastrar ambientezquero cadastrar um ambientezcomo cadastrar um ambienteznovo ambientezcriar ambienteu   formulário de ambientezadicionar ambientezinserir ambientezambiente novozpreencher ambiente)zcadastrar projetozquero cadastrar um projetozcomo cadastrar um projetoznovo projetozcriar projetozinserir projetoznome do projetozcidade do projetozcoordenadas do projetozabrir projetozadicionar projeto)	u   termo de referênciaztermo de referenciau   licitaçãoz	lei 8.666u   compras públicaszdocumento para comprazdocumento oficialu   justificativa técnicazprojeto para edital)u
   relatório
relatoriosu   gráficou	   gráficoszresultado finalzexportar docxu   documentaçãoztabela de dadosu   resultados do cálculou   relatório técnicozarquivo docx)zlista de ambienteszvisualizar ambienteszver ambienteszresultados do ambientezmostrar ambientesu   relatório do ambientezambientes cadastradoszdados do ambiente)coeficientecoeficientes
biblioteca   valores térmicos   resistência térmicau   material de construçãoztabela de valores
isolamento   potência térmica   dissipação de calorztabela coeficientezqual coeficientezcoeficiente uzu-valueu   valor térmicou   coeficiente térmicor   r   r   r   r   )r   r   r   r   r   r   )r
   r   r   r   r   r   r   )SequenceMatcherc                     | j                         j                         }d|v r
d|v rt        S d }d}t        j                         D ]'  }t        d ||      j                         }||kD  s$|}|}) |dkD  r	t        |   S y )Ntreinamento
aplicativog        g      ?)lowerstripr   r   keysr   ratio)textotexto_normalizadomelhor_chavemaior_similaridadechavesims         -/var/www/html/cagpublico/cag/projeto/agent.pyresposta_fixa_se_houverr+   [   s    ++- ))l>O.O.. L"'') %d$5u=CCE## L!$	% D  ..    c                     t         j                  j                  | d      }t        j                  |j
                  d   j                        S )Nztext-embedding-ada-002)inputmodelr   )client
embeddingscreatenparraydata	embedding)r$   responses     r*   gerar_embeddingr8   t   sC      ''& ( H 88HMM!$..//r,   c                    t        |       }i }t        j                         D ]u  \  }}t        j                  |      }t        j
                  ||      t        j                  j                  |      t        j                  j                  |      z  z  }|||<   w t        ||j                        }||   dkD  rt        j                  |      S y )Nkeyg333333?)r8   respostas_rapidas_embeddingsitemsr3   r4   dotlinalgnormmaxgetr   )r$   pergunta_vecsimilaridadesperguntaembemb_vecr)   melhors           r*   buscar_resposta_rapidarI   }   s    "5)LM5;;= &#((3-ff\7+ryy~~l/Kbiinn]dNe/ef"%h&
 M$5$56FVt# $$V,,r,   c                    t        |       dk\  r| d   d   dz   | d   d   z   }n| d   d   }t        |      }i }t        j                         D ]u  \  }}t	        j
                  |      }t	        j                  ||      t        j                  j                  |      t        j                  j                  |      z  z  }|||<   w t        ||j                        }t        j                  |t              S )N   content r:   )lenr8   system_embeddingsr=   r3   r4   r>   r?   r@   rA   rB   prompts_dictr   )	historico_mensagenspergunta_compostarC   rD   nomerF   rG   r)   rH   s	            r*   detectar_contextorV      s    
1$/3I>DGZ[]G^_hGii/3I>"#45LM&,,. "	c((3-ff\7+ryy~~l/Kbiinn]dNe/ef!d"
 M$5$56FFL11r,   c                     |d   d   }t        |      }|r|S t        |      }||d   g}t        j                  j                  j                  d|d      }|j                  d   j                  j                  S )NrO   rM   zgpt-4o-mini-2024-07-18g333333?)r/   messagestemperaturer   )	rI   rV   r0   chatcompletionsr2   choicesmessagerM   )requestrS   user_mensagemresposta_prontasystem_prompt	mensagensr7   s          r*   responder_pergunta_termo_iarc      s    '+I6M,];O%&9:M 3B 78I{{&&--& . H A&&...r,   ),openaijsonnumpyr3   osdjango.confr   django.contrib.auth.decoratorsr   collectionsr   respostas_rapidasr   r   resposta_coeficientesr	   fabiano_promptsr
   r   r   r   r   r   r   r   EMBEDDINGS_PATHEMBEDDINGS_RAPIDAS_PATHOpenAIOPENAI_API_KEYr0   keywords_maprR   openfloadrQ   r<   difflibr   r+   r8   rI   rV   rc    r,   r*   <module>rx      s5      	   9 # Q >	 	 	 Qb  
x66	7 !
 
 / B )I6 82**6 
/ %a!		!% 

!" 0a#,499Q< 0 $20 2$ / /i% %0 0s   C,6C8,C58D