Este tutorial demonstra como criar um aplicativo de conversação que permite que os usuários resumam vídeos do YouTube e conversem sobre o conteúdo usando linguagem natural.
- Configurar o projeto
- Importar as dependências necessárias
- Configurar o Genkit e o modelo padrão
- Receber o URL do vídeo na linha de comando
- Configurar o comando
- Gerar a resposta
- Executar o aplicativo
Pré-requisitos
Antes de começar a trabalhar, você precisa configurar estes pré-requisitos:
Etapas de implementação
Depois de configurar as dependências, você pode criar o projeto.
1. Criar o projeto
Crie uma estrutura de diretórios e um arquivo para armazenar seu código-fonte.
$ mkdir -p summarize-a-video/src && \ cd summarize-a-video && \ touch src/index.ts
Inicie um novo projeto do TypeScript.
$ npm init -y
Para usar o Genkit no seu projeto, instale as seguintes dependências:
$ npm i genkit @genkit-ai/googleai
genkit
oferece os recursos principais do Genkit.@genkit-ai/googleai
oferece acesso aos modelos de IA Gemini do Google.
Receber e configurar a chave de API do modelo
Para usar a API Gemini, que é usada neste tutorial, primeiro é necessário configurar uma chave de API. Se ainda não tiver, crie uma chave no Google AI Studio.
A API Gemini oferece um nível sem custo financeiro generoso e não exige um cartão de crédito para começar.
Depois de criar a chave de API, defina a variável de ambiente
GEMINI_API_KEY
para sua chave com o seguinte comando:$ export GEMINI_API_KEY=<your API key>
2. Importar as dependências necessárias
No arquivo index.ts
que você criou, adicione as
seguintes linhas para importar as dependências necessárias para este projeto:
import { gemini, googleAI } from '@genkit-ai/googleai';
import { genkit } from 'genkit';
- A primeira linha importa o plug-in
googleAI
e a função de carregador de modelosgemini
do pacote@genkit-ai/googleai
, permitindo o acesso aos modelos Gemini do Google.
3. Configurar o Genkit e o modelo padrão
Adicione as linhas abaixo para configurar o Genkit e definir o Gemini 2.0 Flash como o modelo padrão.
const ai = genkit({
plugins: [googleAI()],
model: gemini('gemini-2.0-flash'),
});
Em seguida, adicione um esqueleto para o código e o tratamento de erros.
(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. Analisar a linha de comando e receber o URL do vídeo
Adicione o código para ler o URL do vídeo transmitido pela linha de comando.
// 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. Configurar o comando
Adicione um código para configurar o comando:
// Step 2: construct prompt
const prompt = process.argv[3] || "Please summarize the following video:";
- Essa declaração
const
define uma solicitação padrão se o usuário não transmitir uma própria na linha de comando.
6. Gerar a resposta
Adicione o código abaixo para transmitir um comando multimodal ao modelo:
// Step 3: process video
const { text } = await ai.generate({
prompt: [
{ text: prompt },
{ media: { url: videoURL, contentType: "video/mp4" } }
],
});
console.log(text);
Este snippet de código chama o método ai.generate
para enviar um comando multimodal ao
modelo. A solicitação consiste em duas partes:
{ text: prompt }
: é o comando de texto que você definiu anteriormente.{ media: { url: videoURL, contentType: "video/mp4" } }
: é o URL do vídeo que você forneceu como um argumento de linha de comando. OcontentType
é definido comovideo/mp4
para indicar que o URL aponta para um arquivo de vídeo MP4.
O método ai.generate
retorna um objeto que contém o texto gerado, que
é registrado no console.
7. Execute o aplicativo
Para executar o app, abra o terminal na pasta raiz do projeto e execute o seguinte comando:
npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q
Depois de um momento, um resumo do vídeo enviado vai aparecer.
Você também pode transmitir outras solicitações. Exemplo:
npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q "Transcribe this video"