يوضّح هذا الدليل التعليمي كيفية إنشاء تطبيق محادثات يسمح للمستخدمين بملخص فيديوهات 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
يتيح الوصول إلى نماذج الذكاء الاصطناعي من Google في Gemini.
- يوفّر
الحصول على مفتاح واجهة برمجة التطبيقات للنموذج وضبطه
لاستخدام Gemini API التي تستخدمها هذه المقالة التعليمية، عليك أولاً ضبط مفتاح واجهة برمجة التطبيقات. إذا لم يكن لديك مفتاح، أنشئ مفتاحًا في Google AI Studio.
توفّر واجهة برمجة التطبيقات Gemini 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
لإرسال طلب متعدد الوسائط إلى
النموذج. تتألّف رسالة المطالبة من جزأين:
{ 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"