סיכום של סרטוני YouTube

במדריך הזה תלמדו איך ליצור אפליקציית שיחה שמאפשרת למשתמשים לסכם סרטונים ב-YouTube ולשוחח על התוכן שלהם באמצעות שפה טבעית.

  1. הגדרת הפרויקט
  2. ייבוא יחסי התלות הנדרשים
  3. הגדרת Genkit והמודל שמוגדר כברירת מחדל
  4. איך מקבלים את כתובת ה-URL של הסרטון משורת הפקודה
  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';
  • השורה הראשונה מייבאת את הפלאגין googleAI ואת הפונקציה gemini לטעינה של מודלים מחבילת @genkit-ai/googleai, ומאפשרת גישה למודלים של Gemini מבית Google.

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. ניתוח שורת הפקודה וקבלת כתובת ה-URL של הסרטון

מוסיפים קוד לקריאת כתובת ה-URL של הסרטון שהועברה משורת הפקודה.

  // 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);

קטע הקוד הזה קורא ל-method‏ ai.generate כדי לשלוח הנחיה מרובת-מצבים למודל. ההנחיה מורכבת משני חלקים:

  • { text: prompt }: זהו הנחיית הטקסט שהגדרתם קודם.
  • { media: { url: videoURL, contentType: "video/mp4" } }: זוהי כתובת ה-URL של הסרטון שסיפקתם כארגומנטים בשורת הפקודה. הערך של contentType מוגדר ל-video/mp4 כדי לציין שכתובת ה-URL מפנה לקובץ וידאו בפורמט 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"