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)