Proyecto

General

Perfil

Modificacion #3644

Actualizado por Admin Savia Web Admin hace 4 meses

Deberiamos crear una sección en savia que se llame credenciales IA y que diga    Gemini y allí peguen la api key. 

 Cuando el usuario pegue la clave en el panel de administración, el backend debe proteger ese dato. 
 *Frontend*: El input del formulario debe ser de tipo password (<input type="password">) para que no quede expuesto en la pantalla. 
 *Backend*: No guardamos la API Key en texto plano. Porque si alguien accede a la base de datos, podría usar las claves de todos las agencias. Tenemos que cifrarla usando un algoritmo como AES-256 utilizando una clave maestra interna de Savia antes de insertarla en la tabla o algo asi lei. 

 *Como seria el flujo cuando el usuario sube el PDF* 
 Cuando el usuario hace clic agregar nuevo aereo al costado de Multidestino, ponemos un boton en color que se vea y diga "Interpretar PDF con IA" y se ejecuta el siguiente proceso: 

 *Paso 1*: Recuperar y descifrar la clave 
 El backend recibe el archivo PDF, identifica a qué agencia pertenece el usuario, busca la API Key cifrada en la base de datos y la descifra en memoria para usarla en esa única petición. 

 *Paso 2*: Llamada a la API de Gemini 
 Para leer PDFs, el modelo que podemos usar es el *Gemini 2.5 Flash*. 

 La ventaja de Gemini frente a otros (como ChatGPT) es que acepta archivos nativamente (soporta PDFs directamente, sin necesidad de extrer el texto con librerías raras). 

 *La petición HTTP estructurada a la API de Google se hace de la siguiente manera:* 

 *URL*: [https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=AQUI_VA_LA_API_KEY_DEL_CLIENTE] 
 (https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=AQUI_VA_LA_API_KEY_DEL_CLIENTE) 

 *Headers*: Content-Type: application/json 

 En el cuerpo (body) de la petición JSON que le mandás a Google, debés pasarle el archivo PDF (codificado en Base64) y configurar el objeto generationConfig para exigir un esquema de respuesta. El JSON que debés enviarle a la API tiene este formato: (adjunto archivo JSON) 

 *Paso 3*. El Frontend recibe y dibuja los datos 
 Google te va a devolver exactamente el JSON limpio con las variables estructuradas.  
 Tomamos ese JSON y se lo mandamos de vuelta a la pantalla del navegador del agente de viajes. 

 Con Javascript (o el framework que uses en el front de Savia), hacés el mapeo directo a los inputs de la pantalla que vimos en la imagen: 

 Si json.trayecto == "ROUND_TRIP", seleccionás el botón de opción correspondiente de forma automática. 
 Buscás el input de número de vuelo de ida y le asignás json.vuelo_ida.numero_vuelo. 
 Asignás los campos de fecha y hora directamente en las cajas de texto respectivas del formulario.

Atrás