บทแนะนำนี้แสดงวิธีสร้างแอปพลิเคชันแบบสนทนาที่อนุญาตให้ผู้ใช้สรุปวิดีโอ YouTube และแชทเกี่ยวกับเนื้อหาโดยใช้ภาษาที่เป็นธรรมชาติ
- สร้างโปรเจ็กต์
- นําเข้าไลบรารีที่ต้องระบุ
- กําหนดค่า Genkit และโมเดลเริ่มต้น
- รับ URL ของวิดีโอจากบรรทัดคำสั่ง
- ตั้งค่าพรอมต์
- สร้างคำตอบ
- เรียกใช้แอป
ข้อกำหนดเบื้องต้น
ก่อนเริ่มทํางาน คุณควรตั้งค่าข้อกําหนดเบื้องต้นต่อไปนี้
ขั้นตอนการติดตั้งใช้งาน
หลังจากตั้งค่าทรัพยากร คุณจะสร้างโปรเจ็กต์ได้
1. สร้างโปรเจ็กต์
สร้างโครงสร้างไดเรกทอรีและไฟล์สำหรับเก็บซอร์สโค้ด
$ mkdir -p summarize-a-video/src && \ cd summarize-a-video && \ touch src/index.ts
เริ่มต้นโปรเจ็กต์ TypeScript ใหม่
$ npm init -y
ติดตั้งข้อกําหนดของ Genkit ต่อไปนี้เพื่อใช้ Genkit ในโปรเจ็กต์
$ npm i genkit @genkit-ai/googleai
genkit
มีความสามารถหลักของ Genkit@genkit-ai/googleai
ให้สิทธิ์เข้าถึงโมเดล Gemini ของ AI ของ Google
รับและกำหนดค่าคีย์ 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"