neuronalstarx / src /gemini.js
salomonsky's picture
Upload 10 files
e229d32 verified
import {gemKeyGet} from './config.js';
export async function callGemini(topic,n1,n2,n3){const modelId='gemini-2.0-flash-exp';const schema={type:'OBJECT',properties:{analisis:{type:'STRING'},lista_palabras:{type:'ARRAY',items:{type:'OBJECT',properties:{palabra_principal:{type:'STRING'},variantes:{type:'ARRAY',items:{type:'OBJECT',properties:{palabra_variante:{type:'STRING'},sub_variantes:{type:'ARRAY',items:{type:'STRING'}}},required:['palabra_variante','sub_variantes']}}},required:['palabra_principal','variantes']}}},required:['lista_palabras']};const sys='Eres un analista. Devuelve JSON sin acentos.';const up=`Tema: "${topic}". 1) ${n1} palabras clave. 2) ${n2} variantes por cada una. 3) ${n3} sub-variantes por variante.`;const payload={contents:[{parts:[{text:up}]}],systemInstruction:{parts:[{text:sys}]},generationConfig:{responseMimeType:'application/json',responseSchema:schema}};const key=gemKeyGet();if(!key)throw new Error('Configura tu Gemini API Key.');const url=`https://generativelanguage.googleapis.com/v1beta/models/${modelId}:generateContent?key=${key}`;const r=await fetch(url,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(payload)});if(!r.ok){throw new Error(await r.text()||'Error Gemini');}return await r.json();}