Gabriel Obregón
John Salcedo
Julian Sosa
📘GOOGLE GEMINI (LLMs)
🔧 API E INTEGRACIÓN
• La API de Gemini soporta múltiples lenguajes.
• Python.
• JavaScript.
• Go.
• Java.
• C#.
• También se puede usar con Postman.
📌 Ejemplo mencionado.
• “snippet de código necesario para consumir la API en múltiples lenguajes” [01:10].
🤖 MODELOS DISPONIBLES
🔹 Clasificación por capacidad y costo
• Gemini 3 Pro.
• Es el modelo más potente.
• Gemini Flash.
• Tiene balance entre calidad y velocidad.
• Gemini Flash Lite.
• Es más rápido y económico.
• Tiene menor precisión.
🧠 MODELOS ESPECIALIZADOS
• Imagen 3.
• Imagen Pro.
• Permiten generación y edición de imágenes.
• Veo 3.1.
• Permite generación de video.
• Existen modelos con audio.
• Gemini Robotics.
• Combina visión y lenguaje.
• Se usa en robótica.
📌 Ejemplo mencionado.
• “modelos de vanguardia para generación y edición de imágenes” [02:05].
🔑 CREACIÓN DE API KEY
• Se realiza desde Google AI Studio.
🪜 Pasos
• Crear nueva API key.
• Asignar nombre.
• Ejemplo: "Platzi LLM API curso".
• Asociar a un proyecto.
• Crear la clave.
📌 Ejemplo mencionado.
• “Platzi LLM API curso” [04:15].
📊 PANEL DE CONTROL
• Permite ver el uso de la API.
• Permite ver los tokens consumidos.
• Permite ver errores.
• Permite ver límites.
💰 COSTOS
🆓 Versión gratuita
• Tiene acceso limitado.
💼 Versiones pagas / Enterprise
• Permiten mayor capacidad.
• Permiten mayor uso.
Mi chatbox
Excelente, si hay alguna diferencia entre el de google, y es que el role en gemini no es 'assistant' sino 'model' , o por lo menos a mi eso me soluciono un error,
Para el que le sirva le comparto la implementación, 😅
import { GoogleGenAI } from '@google/genai'; const google = new GoogleGenAI({}) async function chatWithGoogle(messages: MessageType[]) { console.log(messages) // CLan simple const cleanMessages = messages .filter((m) => (m.role === 'user' || m.role === 'assistant') && m.content?.trim()) .map((m) => ({ role: m.role, content: m.content.trim() })) if (cleanMessages.length === 0 || cleanMessages[0]?.role !== 'user') { throw new Error('Conversation must start with a user message') } // Map to gemini format const contents = cleanMessages.map((m) => ({ role: m.role === 'assistant' ? 'model' : 'user', parts: [{ text: m.content }] })) // Gemini call const response = await google.models.generateContent({ model: 'gemini-2.5-flash', contents, config: { systemInstruction: SYSTEM_PROMPT } }) // Extract text robustrly const text = response.text ?? response.candidates?.[0]?.content?.parts ?.map((p: { text?: string }) => p.text) .filter(Boolean) .join('\n') ?? '' return { role: 'assistant' as const, content: text, } }