U
    YåÕj`  ã                   @   sª   d dl Zd dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlZddd	i d
œdœddd	dddœdddœdœdgdœdœgZdd„ Zdd„ Zdd„ ZdS )é    N)Úobtener_clave)ÚMODELÚSYSTEM_PROMPT)ÚguardarÚ	historial)Úejecutar_herramienta)Úconsultar_programacionÚconsultar_servidoruD   Consulta CPU, RAM, disco y trÃ¡fico real de subida y bajada del VPS.ZOBJECT)ÚtypeÚ
properties)ÚnameÚdescriptionZ
parametersr   uÕ   Busca programaciÃ³n en las EPG privadas de Sling, Paramount, USA y MÃ©xico. Devuelve canales, tÃ­tulos y horarios en la zona America/Tijuana. Las coincidencias no confirman por sÃ­ solas que sean partidos en vivo.ÚSTRINGzEquipo, liga o evento a buscar)r
   r   ZINTEGERu   DÃ­as futuros, entre 1 y 7©ÚterminoÚdiasr   )r
   r   Zrequiredc              
   C   sˆ   dt › d�}ddtigi| dtigddidœ}tjj|t |¡ d	¡d
t	ƒ dœdd�}tjj
|dd��}t |¡W  5 Q R £ S Q R X d S )Nz8https://generativelanguage.googleapis.com/v1beta/models/z:generateContentÚpartsÚtextZfunctionDeclarationsZmaxOutputTokensiè  )ZsystemInstructionÚcontentsZtoolsZgenerationConfigzutf-8zapplication/json)zContent-Typezx-goog-api-keyZPOST)ÚdataZheadersÚmethodé-   )Ztimeout)r   r   ÚDECLARACIONESÚurllibZrequestZRequestÚjsonÚdumpsÚencoder   ZurlopenÚload)Ú
contenidosZurlZpayloadZ	solicitudÚr© r    úhermes_brain_v3.pyÚllamar_gemini_v32   s.    
ÿ ÿ ÿ ÿøþù
r"   c                 C   s<   | dkrt | ƒS | dkr0t|d | dd¡d�S tdƒ‚d S )Nr	   r   r   r   é   r   zHerramienta no autorizada)r   r   ÚgetÚ
ValueError)ÚnombreÚ
argumentosr    r    r!   ÚejecutarS   s    
þr(   c                 C   s  t ||dd�}| dd| igdœ¡ t|ƒ}|d d d }d	d
„ | dg ¡D ƒ}|rÌ| |¡ g }|D ]:}|d }	| di ¡}
t|	|
ƒ}| d|	d|idœi¡ qh| d|dœ¡ t|ƒ}|d d d }d dd„ | dg ¡D ƒ¡ ¡ }|søtdƒ‚t||d| ƒ t||d|ƒ |S )Né   )ZlimiteÚuserr   )Zroler   Z
candidatesr   Zcontentc                 S   s   g | ]}d |kr|d  ‘qS )ZfunctionCallr    ©Ú.0Úpr    r    r!   Ú
<listcomp>k   s   þz'preguntar_hermes_v3.<locals>.<listcomp>r   r   ÚargsZfunctionResponseÚresult)r   ZresponseÚ c                 s   s   | ]}|  d d¡V  qdS )r   r1   N)r$   r+   r    r    r!   Ú	<genexpr>Š   s   ÿz&preguntar_hermes_v3.<locals>.<genexpr>u   Gemini no devolviÃ³ textoZmodel)	r   Úappendr"   r$   r(   ÚjoinÚstripÚRuntimeErrorr   )ZpreguntaZusuarioZsesionr   ZprimeraZ	contenidoZllamadasZ
respuestasZllamadar&   r'   Z	resultadoZsegundaZ	respuestar    r    r!   Úpreguntar_hermes_v3`   sJ    þ
þ

þÿþ

þr7   )Zurllib.requestr   Zhermes_brain_v2r   Zhermes_brainr   r   Zhermes_memoryr   r   Zhermes_toolsr   Zhermes_epg_toolr   r   r   r"   r(   r7   r    r    r    r!   Ú<module>   s:   þúþþû
ôöô(!