ویدئوهای یوتیوب را خلاصه کنید

این آموزش نحوه ساخت یک برنامه مکالمه را نشان می دهد که به کاربران امکان می دهد ویدیوهای 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 گوگل را فراهم می کند.

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

این قطعه کد متد ai.generate را برای ارسال یک اعلان چندوجهی به مدل فراخوانی می کند. درخواست شامل دو بخش است:

  • { text: prompt } : این عبارت متنی است که قبلاً تعریف کرده اید.
  • { media: { url: videoURL, contentType: "video/mp4" } } : این نشانی اینترنتی ویدیویی است که به عنوان آرگومان خط فرمان ارائه کرده اید. 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"