Tu primera generación de texto
Ya tenemos el cliente configurado. Ahora vamos a invocar el método más básico de la API: generateContent.
Este método toma un string (prompt) y devuelve un objeto GenerateContentResult. Aunque suena simple, aquí es donde definimos el comportamiento del modelo.
El Script: Generador de commits
Sección titulada «El Script: Generador de commits»En lugar de pedir un poema, vamos a crear una herramienta que analice cambios de código (diffs) y sugiera un mensaje de commit siguiendo la convención Conventional Commits.
Crea un archivo src/text-gen.js:
Directoriogemini-lab
Directoriosrc
- config.js
- text-gen.js Nuevo archivo
Copia el siguiente código:
import { client } from "./config.js";
async function generateCommitMessage(diff) {
// 1. Definir el Prompt con contexto técnico const prompt = ` Actúa como un desarrollador Senior. Basado en el siguiente git diff, genera un mensaje de commit siguiendo la convención **Conventional Commits**.
Formato requerido: <tipo>(<alcance>): <descripción corta>
- No uses markdown. - Sé conciso.
Git Diff: ${diff} `;
try { console.log("Analizando cambios...");
// 2. Llamada a la API const result = await client.models.generateContent({ model: "gemini-3-flash-preview", contents: [{ role: "user", parts: [{ text: prompt }] }] });
// 3. Extracción del texto const text = result.text;
console.log("Sugerencia de Commit:"); console.log("------------------------------------------------"); console.log(text.trim()); console.log("------------------------------------------------");
} catch (error) { console.error("Error generando commit:", error); }}
// Simulamos un cambio en el código (un diff falso para probar)const mockDiff = `diff --git a/src/server.js b/src/server.jsindex 83a0492..12903af 100644--- a/src/server.js+++ b/src/server.js@@ -12,4 +12,4 @@- const port = 3000;+ const port = process.env.PORT || 3000;`;
generateCommitMessage(mockDiff);Ejecútalo en tu terminal: node src/text-gen.js
Deberías ver una salida como: feat(server): add support for dynamic PORT environment variable.
Ajustando la “Creatividad” (Temperature)
Sección titulada «Ajustando la “Creatividad” (Temperature)»Quizás notaste que si ejecutas el script varias veces, la respuesta puede variar ligeramente. Esto se controla con la Temperatura.
En nuestro archivo src/config.js, podemos ajustar esto. La temperatura es un valor entre 0.0 y 2.0.
- Baja (0.0 - 0.3): Respuestas deterministas, precisas y lógicas. Ideal para código, matemáticas y clasificación.
- Media (0.7 - 1.0): El estándar. Balance entre coherencia y variedad.
- Alta (1.2+): Muy creativa, pero propensa a alucinaciones. Ideal para lluvia de ideas.
¿Cómo configurarlo?
Sección titulada «¿Cómo configurarlo?»Podemos pasar una configuración de generación (generationConfig) al momento de instanciar el modelo o en cada llamada.
Modifica tu llamada en src/text-gen.js para ser más estricto:
// ... dentro de la funciónconst result = await client.models.generateContent({ model: "gemini-3-flash-preview", contents: [{ role: "user", parts: [{ text: prompt }] }], generationConfig: { temperature: 0.2, // Muy bajo para asegurar precisión técnica maxOutputTokens: 50, // Limitamos la longitud },});// ...