La API de Gemini puede generar un resultado de texto cuando se proporcionan texto, imágenes, video y audio como entrada.
En esta guía, se muestra cómo generar texto con los métodos generateContent
y streamGenerateContent
. Si quieres obtener información para trabajar con las capacidades de visión y audio de Gemini, consulta las guías de Vision y audio.
Antes de comenzar: Configura tu proyecto y clave de API
Antes de llamar a la API de Gemini, debes configurar tu proyecto y la clave de API.
Genera texto a partir de una entrada de solo texto
La forma más sencilla de generar texto con la API de Gemini es proporcionarle al modelo una sola entrada de solo texto, como se muestra en este ejemplo:
// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContent(prompt);
console.log(result.response.text());
En este caso, la instrucción ("Escribe una historia sobre una mochila mágica") no incluye ningún ejemplo de salida, instrucciones del sistema ni información de formato. Es un enfoque sin ejemplos. En algunos casos de uso, un mensaje de una sola muestra o con pocos ejemplos puede producir resultados que estén más alineados con las expectativas de los usuarios. En algunos casos, también es posible que desees proporcionar instrucciones del sistema para ayudar al modelo a comprender la tarea o seguir lineamientos específicos.
Genera texto a partir de entradas de imágenes y texto
La API de Gemini admite entradas multimodales que combinan texto con archivos multimedia. En el siguiente ejemplo, se muestra cómo generar texto a partir de entradas de imagen y texto:
// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
function fileToGenerativePart(path, mimeType) {
return {
inlineData: {
data: Buffer.from(fs.readFileSync(path)).toString("base64"),
mimeType,
},
};
}
const prompt = "Describe how this product might be manufactured.";
// Note: The only accepted mime types are some image types, image/*.
const imagePart = fileToGenerativePart(
`${mediaPath}/jetpack.jpg`,
"image/jpeg",
);
const result = await model.generateContent([prompt, imagePart]);
console.log(result.response.text());
Al igual que con las instrucciones de solo texto, las instrucciones multimodales pueden implicar varios enfoques y mejoras. Según el resultado de este ejemplo, es posible que quieras agregar pasos a la instrucción o ser más específico en tus instrucciones. Para obtener más información, consulta Estrategias de instrucciones de archivos.
Genera un flujo de texto
De forma predeterminada, el modelo muestra una respuesta después de completar todo el proceso de generación de texto. Puedes lograr interacciones más rápidas si no esperas el resultado completo y, en su lugar, usas la transmisión para controlar los resultados parciales.
En el siguiente ejemplo, se muestra cómo implementar la transmisión con el método streamGenerateContent
para generar texto a partir de una instrucción de entrada de solo texto.
// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContentStream(prompt);
// Print text as it comes in.
for await (const chunk of result.stream) {
const chunkText = chunk.text();
process.stdout.write(chunkText);
}
Cómo crear un chat interactivo
Puedes usar la API de Gemini para crear experiencias de chat interactivas para tus usuarios. El uso de la función de chat de la API te permite recopilar varias rondas de preguntas y respuestas, lo que permite a los usuarios avanzar gradualmente hacia las respuestas u obtener ayuda con problemas de varias partes. Esta función es ideal para aplicaciones que requieren una comunicación continua, como chatbots, tutores interactivos o asistentes de asistencia al cliente.
En el siguiente ejemplo de código, se muestra una implementación básica de chat:
// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
history: [
{
role: "user",
parts: [{ text: "Hello" }],
},
{
role: "model",
parts: [{ text: "Great to meet you. What would you like to know?" }],
},
],
});
let result = await chat.sendMessage("I have 2 dogs in my house.");
console.log(result.response.text());
result = await chat.sendMessage("How many paws are in my house?");
console.log(result.response.text());
Habilitar la transmisión del chat
También puedes usar la transmisión con chat, como se muestra en el siguiente ejemplo:
// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
history: [
{
role: "user",
parts: [{ text: "Hello" }],
},
{
role: "model",
parts: [{ text: "Great to meet you. What would you like to know?" }],
},
],
});
let result = await chat.sendMessageStream("I have 2 dogs in my house.");
for await (const chunk of result.stream) {
const chunkText = chunk.text();
process.stdout.write(chunkText);
}
result = await chat.sendMessageStream("How many paws are in my house?");
for await (const chunk of result.stream) {
const chunkText = chunk.text();
process.stdout.write(chunkText);
}
Configura la generación de texto
Cada instrucción que envías al modelo incluye
parámetros que
controlan cómo el modelo genera respuestas. Puedes usar GenerationConfig
para configurar estos parámetros. Si no configuras los parámetros, el modelo
usará las opciones predeterminadas, que pueden variar según el modelo.
En el siguiente ejemplo, se muestra cómo configurar varias de las opciones disponibles.
// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
model: "gemini-1.5-flash",
generationConfig: {
candidateCount: 1,
stopSequences: ["x"],
maxOutputTokens: 20,
temperature: 1.0,
},
});
const result = await model.generateContent(
"Tell me a story about a magic backpack.",
);
console.log(result.response.text());
candidateCount
especifica la cantidad de respuestas generadas que se mostrarán.
Actualmente, este valor solo se puede establecer en 1. Si no la estableces, el valor predeterminado será 1.
stopSequences
especifica el conjunto de secuencias de caracteres (hasta 5) que detendrán la generación de resultados. Si se especifica, la API se detendrá en la primera aparición de una stop_sequence. La secuencia de detención no se incluirá como parte de la respuesta.
maxOutputTokens
establece la cantidad máxima de tokens que se deben incluir en un candidato.
temperature
controla la aleatoriedad del resultado. Usa valores más altos para respuestas más creativas y valores más bajos para respuestas más determinísticas. Los valores pueden variar de [0.0, 2.0].
También puedes configurar llamadas individuales a generateContent
:
const result = await model.generateContent({
contents: [
{
role: 'user',
parts: [
{
text: prompt,
}
],
}
],
generationConfig: {
maxOutputTokens: 1000,
temperature: 0.1,
},
});
console.log(result.response.text());
Cualquier valor establecido en la llamada individual anula los valores del constructor del modelo.
¿Qué sigue?
Ahora que exploraste los conceptos básicos de la API de Gemini, te recomendamos que pruebes lo siguiente:
- Comprensión visual: Aprende a usar la comprensión visual nativa de Gemini para procesar imágenes y videos.
- Instrucciones del sistema: Las instrucciones del sistema te permiten controlar el comportamiento del modelo según tus necesidades específicas y casos de uso.
- Comprensión de audio: Aprende a usar la comprensión de audio nativa de Gemini para procesar archivos de audio.