
    CTh!                     :   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 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j                   j#                  ej                   j%                  e            Zej                   j+                  ed      Zej                   j/                  e      s  ej0                  de         ede        ee       g dZg Zi ZeD ]1  Z ej<                  e      Zesedk7  rejA                  e       eee<   3 er2d	d
j+                  e       de dZ! ej0                  e!        e"e!      ed   Z#ed   Z$ed   Z%ed   Z&ed   Z'ed   Z(ed   Z)ed   Z*e(re(jW                  d      se(dz  Z(e)re)jW                  d      se)dz  Z) e,e#      Z- e,e$      Z. e,e'      Z/ ej`                  d        ej`                  de*         ej`                  de(         ej`                  de)        d Z1d Z2d Z3de4de4de5de4d e4d!e5fd"Z6y)#    N)datetime)load_dotenvz.envzArchivo .env no encontrado en: u#   No se encontró el archivo .env en )OPENAI_API_KEYPINECONE_API_KEYOPENAI_API_VALOR_MAS
SERVER_ENV
XI_API_KEY	AUDIO_URL
RUTA_AUDION8N_WEBHOOK_URL_ANTHROPIC_V2r   zVariables faltantes en .env: z, z
Archivo .env: z5
Por favor verifica las variables en el archivo .env.r   r   r   r	   r
   r   r   /z*Variables de entorno cargadas exitosamentezN8N_WEBHOOK_URL_ANTHROPIC_V2: zAUDIO_URL: zRUTA_AUDIO: c                      t         j                  } 	 t        j                  j                  di | }|j                         r|S y # t        j                  j                  $ r}t        d|        Y d }~y d }~ww xY w)NzError:  )
conexionesconfigmysql	connectorconnectis_connectedErrorprint)r   
connectionerrs      J/var/www/catia.catastroantioquia-mas.com/valormas/valormas_anthropic_v2.pyconectar_dbr   U   si    F__,,6v6
""$??   uos   0A A9!A44A9c                     ddddddddd	d
dddd}|j                         D ]  \  }}| j                  ||      }  t        j                  dd|       j	                         } | S )N   á   é   í   ó   ú   ñ   Ñ   ü   É   Ú   Ó   Í   À)u   Ã¡u   Ã©u   Ã­u   Ã³u   Ãºu   Ã±u   Ã‘u   Ã¼u   Ã‰u   Ãšu   Ã“u   Ã�u   Ã€z\s+ )itemsreplaceresubstrip)texto
reemplazos
incorrectocorrectos       r   limpiar_textor4   b   sy     dD$tTD$tJ !+ 0 0 2 4
Hj(34 FF63&,,.EL    c                    t        |      }	 t               }|t        d      	 	 |j	                  d      }d}|j                  || f       |j                         }|s5ddi|j                         r!|j                          |j                          S S |d   d	k(  rd
nd}d|d    d|d    d|d    d| }	d| d|	 d}
d|d    d}dt        d}t        d       t        |
       t        j                  |||
      }|j                  dk(  rt        j                  dd      }d | d!|  d"}t          | }t"         | }t%        |d#      5 }|j'                  |j(                         d d d        ||j                         r!|j                          |j                          S S d$d%|j                   d&|j*                   d'|j                         r!|j                          |j                          S S # t        $ r}ddt        |       icY d }~S d }~ww xY w# 1 sw Y   xY w# |j                         r!j                          |j                          w w xY w)(Nz'Error al conectar con la base de datos.errorz(Error al conectar con la base de datos: T)
dictionarya  
            SELECT 
                asistentes.id_voz,
                voces.nombre_voz,
                voces.id_eleven,
                asistentes_voces.similarity_boost,
                asistentes_voces.stability,
                asistentes_voces.style,
                asistentes_voces.use_speaker_boost
            FROM asistentes
            INNER JOIN asistentes_voces ON asistentes.id_voz = asistentes_voces.id
            INNER JOIN voces ON asistentes_voces.id_modelo_voz = voces.id
            WHERE asistentes.id = %s
        u5   No se encontró un asistente con el ID proporcionado.use_speaker_boost   truefalsez"similarity_boost": similarity_boostz, "stability": 	stabilityz, "style": stylez, "use_speaker_boost": z5{
  "model_id": "eleven_multilingual_v2",
  "text": "z",
  "voice_settings": {
    z
  }
}z,https://api.elevenlabs.io/v1/text-to-speech/	id_elevenz9?optimize_streaming_latency=0&output_format=mp3_44100_128zapplication/json)zContent-Typez
xi-api-keyz'JSON enviado a ElevenLabs desde Python:)headersdata   i'  i audio__z.mp3wbFzError en ElevenLabs: z - )successr7   )r4   r   	Exceptionstrcursorexecutefetchoner   closer	   r   requestspoststatus_coderandomrandintr   r
   openwritecontenttext)id_asistenter0   texto_limpior   erJ   	query_voz	asistenter9   voice_settingspayloadapi_urlrA   responsenumero_aleatorionombre_archivo
ruta_audio	audio_url
audio_files                      r   )obtener_configuracion_voz_y_generar_audiore   u   s    'LN ]
EFF L""d"3	 	y</2OO%	TUj ""$LLN %e '00C&D&IFw %Y/A%B$C D'45 6#G,- .&&7%8: 	)N +--;,< = 	 A;AW@X  YR  S /$
 	78g =='H3&%~~eU;%&6%7qdKN&<'78J$+n%56Ij$' 3:  !1!123  ""$LLN % !01E1E0Fc(--Y ""$LLN %[  NCCF8LMMND3 3 ""$LLN %sM   G5 <H' B:H' H*	H' %H' 5	H>HHHH$ H' '3I	thread_idpregunta	idclienter[   	volume_uprW   c                 ~   i }| dk(  r;t        t        j                               } | |d<   t        j                  d|         nt        j                  d|         | |t        |      |d}	 t        j                  d      5 }|j                  t        |      }	|	j                          |	j                  j                         }
d d d        
|d	<   | |d
<   d|d<   |dk(  rt        ||
      }||d<   |S # 1 sw Y   0xY w# t
        j                  $ rg}t        j                  d|j                  j                          dd|j                  j                   |j                  j                   dcY d }~S d }~wt"        $ r<}t        j                  dt        |              ddt        |       dcY d }~S d }~ww xY w)NnadaTarea_CreadazNuevo thread_id generado: zUsando thread_id recibido: )rf   rg   rh   r[   g      >@)timeout)rB   	Respuestarf   Exitosirb   zError HTTP en webhook N8N: r7   zError en N8N: )statusmessagecodezError interno en main: zError interno: )rq   rr   )rI   uuiduuid4logginginfohttpxClientrO   r   raise_for_statusrV   r/   re   HTTPStatusErrorr7   r_   rP   rH   )rf   rg   rh   r[   ri   rW   	json_datarB   clientr_   respuesta_textorb   rY   s                r   mainr      s   IF

%	$-	.!1)=>29+>? ^	D
\\$' 	46{{#?d{KH%%'&mm113O	4
 "1	+!*	+$	'B<Q`aJ&0Il#	4 	4    
3AJJOO3DEF'

'89JJ**
 	

  
/Ax89(Q1
 	

sJ   ,C? AC3.C? 3C<8C? ?F<AE4.F<4F< 1F71F<7F<)7base64binasciiosrv   	mimetypesr   rx   rt   r   mysql.connectorr   r-   rQ   rN   dotenvr   pathdirnameabspath__file__current_dirjoinenv_file_pathexistsr7   FileNotFoundErrorREQUIRED_KEYSmissing_keysconfig_varskeygetenvvalueappend	error_msg
ValueErrorr   r   r   r   r	   r
   r   r   endswithboolOPENAI_API_KEY_VALIDATEDPINECONE_API_KEY_VALIDATEDXI_API_KEY_VALIDATEDrw   r   r4   re   rI   intr   r   r5   r   <module>r      s     	        	    ggoobggooh78[&1 
ww~~m$GMM3M?CD
A-Q
RR M 	  CBIIcNESL(C K	 
'		,(?'@ A& (?	? 
 GMM)
Y
 -.12 "#9: &
&
$	&
*+IJ  Y'',Ij))#.#J  / !"23 J'  9 : -.J-KL M {9+& ' |J<( )&Wr-
C -
3 -
3 -
3 -
SV -
fi -
r5   