Ir al contenido

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.

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:

src/text-gen.js
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.js
index 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.

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:

src/text-gen.js
// ... dentro de la función
const 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
},
});
// ...