สรุปวิดีโอ 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 ให้สิทธิ์เข้าถึงโมเดล Gemini ของ AI ของ Google
  4. รับและกำหนดค่าคีย์ API ของโมเดล

    หากต้องการใช้ Gemini API ซึ่งบทแนะนํานี้ใช้อยู่ คุณต้องกําหนดค่าคีย์ API ก่อน หากยังไม่มี ให้สร้างใน Google AI Studio

    Gemini API มีระดับแบบไม่มีค่าใช้จ่ายที่ครอบคลุมและไม่ต้องใช้บัตรเครดิตเพื่อเริ่มต้นใช้งาน

    หลังจากสร้างคีย์ API แล้ว ให้ตั้งค่าตัวแปรGEMINI_API_KEY environment เป็นคีย์ด้วยคำสั่งต่อไปนี้

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

ข้อมูลโค้ดนี้เรียกใช้เมธอด ai.generate เพื่อส่งพรอมต์แบบหลายโมดัลไปยังโมเดล โดยพรอมต์ประกอบด้วย 2 ส่วน ดังนี้

  • { 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"