生成 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 金鑰。如果還沒有金鑰,請在 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"