En este instructivo, se muestra cómo compilar una aplicación de conversación que les permita a los usuarios resumir videos de YouTube y chatear sobre su contenido con lenguaje natural.
- Configura tu proyecto
- Importa las dependencias requeridas
- Configura Genkit y el modelo predeterminado
- Obtén la URL del video desde la línea de comandos
- Configura la instrucción
- Genera la respuesta
- Ejecuta la app
Requisitos previos
Antes de comenzar a trabajar, debes configurar los siguientes requisitos previos:
Pasos de implementación
Después de configurar las dependencias, puedes compilar el proyecto.
1. Configura tu proyecto
Crea una estructura de directorio y un archivo para almacenar tu código fuente.
$ mkdir -p summarize-a-video/src && \ cd summarize-a-video && \ touch src/index.ts
Inicializa un nuevo proyecto de TypeScript.
$ npm init -y
Instala las siguientes dependencias de Genkit para usar Genkit en tu proyecto:
$ npm i genkit @genkit-ai/googleai
genkit
proporciona las funciones principales de Genkit.@genkit-ai/googleai
proporciona acceso a los modelos de Google AI Gemini.
Obtén y configura la clave de API de tu modelo
Para usar la API de Gemini, que se usa en este instructivo, primero debes configurar una clave de API. Si aún no tienes una, crea una clave en Google AI Studio.
La API de Gemini ofrece un nivel generoso sin costo y no requiere una tarjeta de crédito para comenzar.
Después de crear tu clave de API, establece la variable de entorno
GEMINI_API_KEY
como tu clave con el siguiente comando:$ export GEMINI_API_KEY=<your API key>
2. Importa las dependencias requeridas
En el archivo index.ts
que creaste, agrega las siguientes líneas para importar las dependencias necesarias para este proyecto:
import { gemini, googleAI } from '@genkit-ai/googleai';
import { genkit } from 'genkit';
- La primera línea importa el complemento
googleAI
y la función del cargador de modelosgemini
desde el paquete@genkit-ai/googleai
, lo que permite el acceso a los modelos de Gemini de Google.
3. Configura Genkit y el modelo predeterminado
Agrega las siguientes líneas para configurar Genkit y establecer Gemini 2.0 Flash como el modelo predeterminado.
const ai = genkit({
plugins: [googleAI()],
model: gemini('gemini-2.0-flash'),
});
Luego, puedes agregar un esqueleto para el código y el manejo de errores.
(async () => {
try {
// Step 1: get command line arguments
// Step 2: construct prompt
// Step 3: process video
} catch (error) {
console.error("Error processing video:", error);
}
})(); // <-- don't forget the trailing parentheses to call the function!
4. Analiza la línea de comandos y obtén la URL del video
Agrega código para leer la URL del video que se pasó desde la línea de comandos.
// Step 1: get command line arguments
const videoURL = process.argv[2];
if (!videoURL) {
console.error("Please provide a video URL as a command line argument.");
process.exit(1);
}
5. Configura la instrucción
Agrega código para configurar la instrucción:
// Step 2: construct prompt
const prompt = process.argv[3] || "Please summarize the following video:";
- Esta declaración
const
define un mensaje predeterminado si el usuario no pasa uno propio desde la línea de comandos.
6. Genera la respuesta
Agrega el siguiente código para pasar una instrucción multimodal al modelo:
// Step 3: process video
const { text } = await ai.generate({
prompt: [
{ text: prompt },
{ media: { url: videoURL, contentType: "video/mp4" } }
],
});
console.log(text);
Este fragmento de código llama al método ai.generate
para enviar una instrucción multimodal al modelo. La consigna consta de dos partes:
{ text: prompt }
: Es la instrucción de texto que definiste antes.{ media: { url: videoURL, contentType: "video/mp4" } }
: Es la URL del video que proporcionaste como argumento de línea de comandos.contentType
se establece envideo/mp4
para indicar que la URL apunta a un archivo de video MP4.
El método ai.generate
muestra un objeto que contiene el texto generado, que luego se registra en la consola.
7. Ejecuta la app
Para ejecutar la app, abre la terminal en la carpeta raíz de tu proyecto y, luego, ejecuta el siguiente comando:
npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q
Después de un momento, aparecerá un resumen del video que proporcionaste.
También puedes pasar otras instrucciones. Por ejemplo:
npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q "Transcribe this video"