总结 YouTube 视频

本教程演示了如何构建一个对话式应用,让用户能够使用自然语言总结 YouTube 视频并讨论其内容。

  1. 设置项目
  2. 导入所需的依赖项
  3. 配置 Genkit 和默认模型
  4. 通过命令行获取视频网址
  5. 设置提示
  6. 生成回答
  7. 运行应用

前提条件

在开始工作之前,您应先设置以下前提条件:

实现步骤

设置依赖项后,您就可以构建项目了。

1. 设置项目

  1. 创建一个目录结构和一个文件来存放源代码。

    $ mkdir -p summarize-a-video/src && \
    cd summarize-a-video && \
    touch src/index.ts
    
  2. 初始化一个新的 TypeScript 项目。

    $ npm init -y
    
  3. 安装以下 Genkit 依赖项,以便在项目中使用 Genkit:

    $ npm i genkit @genkit-ai/googleai
    
    • genkit 提供 Genkit 核心功能。
    • @genkit-ai/googleai 提供对 Google AI Gemini 模型的访问权限。
  4. 获取和配置模型 API 密钥

    如需使用本教程中使用的 Gemini API,您必须先配置 API 密钥。如果您还没有 API 密钥,请在 Google AI Studio 中创建密钥

    Gemini API 提供较大的免费使用额度,开通时无需信用卡。

    创建 API 密钥后,使用以下命令将 GEMINI_API_KEY 环境变量设置为您的密钥:

    $ export GEMINI_API_KEY=<your API key>
    

2. 导入所需的依赖项

在您创建的 index.ts 文件中,添加以下代码行以导入此项目所需的依赖项:

import { gemini, googleAI } from '@genkit-ai/googleai';
import { genkit } from 'genkit';
  • 第一行从 @genkit-ai/googleai 软件包导入 googleAI 插件和 gemini 模型加载器函数,以便访问 Google 的 Gemini 模型。

3. 配置 Genkit 和默认模型

添加以下代码行以配置 Genkit 并将 Gemini 2.0 Flash 设置为默认模型。

const ai = genkit({
  plugins: [googleAI()],
  model: gemini('gemini-2.0-flash'),
});

然后,您可以为代码和错误处理添加框架。

(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. 解析命令行并获取视频网址

添加代码以读取从命令行传入的视频的网址。

  // 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. 设置提示

添加代码以设置提示:

  // Step 2: construct prompt
  const prompt = process.argv[3] || "Please summarize the following video:";
  • 如果用户未从命令行传入自己的提示,此 const 声明会定义一个默认提示。

6. 生成响应

添加以下代码以将多模态提示传递给模型:

  // Step 3: process video
  const { text } = await ai.generate({
    prompt: [
      { text: prompt },
      { media: { url: videoURL, contentType: "video/mp4" } }
    ],
  });
  console.log(text);

此代码段会调用 ai.generate 方法,以向模型发送多模态提示。提示由两部分组成:

  • { text: prompt }:这是您之前定义的文本提示。
  • { media: { url: videoURL, contentType: "video/mp4" } }:这是您作为命令行参数提供的视频的网址。contentType 设置为 video/mp4,表示网址指向 MP4 视频文件。

ai.generate 方法会返回一个包含生成的文本的对象,然后将该对象记录到控制台。

7. 运行应用

如需运行应用,请在项目的根文件夹中打开终端,然后运行以下命令:

npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q

片刻之后,系统会显示您提供的视频的摘要。

您还可以传入其他问题。例如:

npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q "Transcribe this video"