يتطور عالم الذكاء الاصطناعي بسرعة، وتتصدر جوجل المشهد بنماذجها القوية Gemini. لمطوري TypeScript وJavaScript الذين يتطلعون إلى تسخير هذه القوة، توفر Google Gen AI SDK حلاً شاملاً ومرنًا. تُمكّنك هذه الحزمة من بناء تطبيقات مدعومة بسهولة بنماذج Gemini 2.5 وغيرها من النماذج المتطورة، مع دعم قوي لكل من Gemini Developer API وVertex AI. سيكون هذا المقال دليلك لفهم واستخدام هذه الحزمة، حيث يغطي ميزاتها الرئيسية بدءًا من التفاعلات الحية في الوقت الفعلي ومعالجة المحتوى متعدد الوسائط وصولاً إلى تحويل النص إلى كلام (TTS)، وتوليد الصور، والمزيد.
هل تريد منصة متكاملة وشاملة لفريق المطورين لديك للعمل معًا بأقصى قدر من الإنتاجية؟
Apidog يلبي جميع متطلباتك، ويحل محل Postman بسعر معقول جدًا!
مقدمة: سد الفجوة بين JavaScript وقوة Gemini
تم تصميم Google Gen AI JavaScript SDK بدقة لتمكين المطورين من دمج قدرات الذكاء الاصطناعي التوليدي المتقدمة من Google في تطبيقات الويب وNode.js الخاصة بهم. سواء كنت تبني روبوت محادثة متطورًا، أو أداة ذكية لإنشاء المحتوى، أو تطبيقًا يفهم وينشئ أنواعًا متنوعة من الوسائط، فإن هذه الحزمة توفر اللبنات الأساسية اللازمة.
من نقاط القوة الأساسية للحزمة هو نهجها الموحد للوصول إلى نماذج Gemini، بغض النظر عما إذا كانت مستضافة على منصة Gemini Developer (عبر مفاتيح API من Google AI Studio) أو منصة Vertex AI في Google Cloud. تتيح هذه المرونة للمطورين اختيار البيئة التي تناسب احتياجات مشروعهم على أفضل وجه، بدءًا من النماذج الأولية السريعة باستخدام مفتاح API وصولاً إلى عمليات النشر على مستوى الإنتاج على Vertex AI مع قدرات MLOps الخاصة بها.
تم تصميم الحزمة للعمل بسلاسة مع أحدث ميزات Gemini، بما في ذلك نماذج Gemini 2.5 المرتقبة للغاية، مما يضمن للمطورين الوصول إلى أحدث ما توصل إليه الذكاء الاصطناعي بمجرد توفره.
البدء: التثبيت والتهيئة
قبل الغوص في الميزات المتقدمة، دعنا نغطي أساسيات إعداد الحزمة.
المتطلبات المسبقة:
تأكد من تثبيت Node.js الإصدار 18 أو أحدث في بيئة التطوير الخاصة بك.
التثبيت:
تثبيت الحزمة بسيط باستخدام npm:
npm install @google/genai
التهيئة - بوابتك إلى Gemini:
تبدأ جميع التفاعلات مع Gemini API، سواء من خلال Google AI Studio أو Vertex AI، بإنشاء مثيل لفئة GoogleGenAI
.
1. استخدام Gemini Developer API (مع مفتاح API):
غالبًا ما تكون هذه هي أسرع طريقة للبدء، خاصة للتطبيقات من جانب الخادم أو المشاريع الشخصية. ستحتاج إلى مفتاح API من Google AI Studio.
import { GoogleGenAI } from '@google/genai';
const GEMINI_API_KEY = process.env.GEMINI_API_KEY; // Or your actual API key
const ai = new GoogleGenAI({ apiKey: GEMINI_API_KEY });
async function run() {
// Example: Generate text content
const model = ai.models.generateContent({
model: "gemini-pro", // Or a specific Gemini 2.5 model like "gemini-2.5-flash-001"
contents: [{ role: "user", parts: [{ text: "Explain the significance of the Google Gen AI SDK." }] }]
});
const response = await model;
console.log(response.text);
}
run();
تحذير بشأن أمان مفتاح API:
2. استخدام Vertex AI:
للتطبيقات التي تتطلب قوة وتوسعية Google Cloud، فإن تهيئة الحزمة لـ Vertex AI هي الطريقة الصحيحة. يتضمن ذلك تحديد معرّف مشروع Google Cloud الخاص بك والموقع.
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({
vertexai: true,
project: 'your-gcp-project-id',
location: 'your-gcp-location', // e.g., 'us-central1'
});
async function runVertex() {
// Example: Generate text content with Vertex AI
const model = ai.models.generateContent({
model: "gemini-1.5-pro-preview-0409", // Example Vertex AI model
contents: [{ role: "user", parts: [{ text: "What are the benefits of using Vertex AI with the Gen AI SDK?" }] }]
});
const response = await model;
console.log(response.text);
}
runVertex();
اختيار إصدار API:
بشكل افتراضي، تستفيد الحزمة من نقاط نهاية API التجريبية (beta) لتوفير وصول مبكر إلى ميزات المعاينة. ومع ذلك، للتطبيقات التي تتطلب الاستقرار، يمكنك تحديد إصدار API الصريح (v1
) (المستقر) أو إصدارات API محددة أخرى (مثل v1alpha
لبعض ميزات المعاينة على Gemini API) أثناء التهيئة:
لـ Vertex AI (التعيين إلى v1
):
const ai = new GoogleGenAI({
vertexai: true,
project: 'your-gcp-project-id',
location: 'your-gcp-location',
apiVersion: 'v1'
});
لـ Gemini Developer API (التعيين إلى v1alpha
لميزات مثل ai.live
):
const ai = new GoogleGenAI({
apiKey: 'YOUR_GEMINI_API_KEY',
apiVersion: 'v1alpha'
});
هيكل الحزمة الأساسي: كائن GoogleGenAI
بمجرد تهيئته، يكون الكائن ai
(مثيل من GoogleGenAI
) هو واجهتك الأساسية لقدرات الحزمة. يوفر الوصول إلى وحدات فرعية متنوعة، كل منها يلبي وظائف محددة:
ai.models
: يمكن القول إن هذه الوحدة الفرعية هي الأكثر استخدامًا. إنها بوابتك للتفاعل مع النماذج التوليدية نفسها. من خلالai.models
، يمكنك:- توليد محتوى نصي (
generateContent
,generateContentStream
). - توليد صور (
generateImages
). - حساب التضمينات للنص (
embedContent
). - عد الرموز في طلباتك (
countTokens
). - (Vertex AI فقط) حساب معلومات الرموز التفصيلية (
computeTokens
). ai.caches
: (معاينة) للتطبيقات التي تستخدم بادئات طلب كبيرة بشكل متكرر، يمكن أن يقلل التخزين المؤقت التكاليف والكمون بشكل كبير. تسمح لك الوحدة الفرعيةai.caches
بإنشاء وإدارة هذه التخزينات المؤقتة.ai.chats
: يبسط تطوير تجارب المحادثة متعددة الأدوار. يسمح لكai.chats
بإنشاء كائنات دردشة محلية ذات حالة تدير سجل المحادثات تلقائيًا، مما يسهل بناء روبوتات محادثة تفاعلية.ai.files
: (Gemini API فقط) يسمح لك بتحميل الملفات (مثل الصور، الصوت، أو الفيديو لطلبات متعددة الوسائط) إلى API. يمكن بعد ذلك الإشارة إلى هذه الملفات في طلباتك. هذا مفيد بشكل خاص للملفات الكبيرة التي لا يمكن إرسالها مضمنة أو للملفات التي تنوي إعادة استخدامها عبر مكالمات API متعددة، وبالتالي تقليل عرض النطاق الترددي.ai.live
: (معاينة، Gemini APIv1alpha
فقط) تتيح هذه الوحدة الفرعية المثيرة الاتصال في الوقت الفعلي ثنائي الاتجاه مع نماذج Gemini. تم تصميمها للتطبيقات التي تتطلب تفاعلًا فوريًا، وتدعم إدخال النص، الصوت، والفيديو، مع إخراج نصي أو صوتي. هذا هو الأساس لبناء تجارب ذكاء اصطناعي ديناميكية ومتجاوبة حقًا.
بناء التطبيقات باستخدام نماذج Gemini 2.5
الحزمة هي خط اتصالك المباشر بقوة نماذج Gemini 2.5 (والإصدارات السابقة مثل Gemini 1.0 Pro، 1.5 Pro، و 1.5 Flash). لاستخدام نموذج معين، ما عليك سوى الإشارة إلى اسمه في معلمة model
لطرق مثل ai.models.generateContent()
أو عند إنشاء جلسة دردشة باستخدام ai.chats.create()
.
على سبيل المثال، لاستخدام نموذج gemini-2.5-flash-001
(اسم افتراضي، استبدله بمعرفات النماذج الفعلية عند إصدارها):
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash-001', // Use the specific model identifier
contents: [{ role: "user", parts: [{ text: "Tell me about the key advancements in Gemini 2.5." }] }]
});
console.log(response.text);
تتعامل الحزمة مع مكالمات API الأساسية، مما يتيح لك التركيز على صياغة طلباتك ومعالجة المحتوى الذي تم إنشاؤه. عندما تصدر Google نماذج جديدة وتحدّث النماذج الحالية، يمكنك عادةً التبديل إليها ببساطة عن طريق تغيير سلسلة معرّف النموذج، مما يسهل الحفاظ على تطبيقاتك في طليعة التكنولوجيا.
تعمق: معالجة المحتوى متعدد الوسائط (MCP)
أحد أقوى جوانب نماذج Gemini هو قدرتها على فهم وإنشاء محتوى عبر وسائط متعددة (نص، صور، صوت، فيديو). تدعم Google Gen AI SDK هذا بالكامل، مما يمكّنك من بناء تطبيقات غنية ومتعددة الوسائط.
يتم تحقيق MCP بشكل أساسي من خلال معلمة contents
في طرق مثل generateContent
وsendMessage
(في الدردشة). تأخذ مصفوفة contents
سلسلة من كائنات Content
، يمكن لكل منها أن يحتوي على كائنات Part
متعددة. يمكن لكل Part
أن يمثل نوعًا مختلفًا من البيانات.
هيكل المحتوى متعدد الوسائط:
- كائن
Content
: يمثل دورًا واحدًا في المحادثة أو كتلة إدخال واحدة. عادةً ما يحتوي علىrole
(إما "user" أو "model") ومصفوفة منparts
. - كائن
Part
: هذا هو المكان الذي توجد فيه البيانات الفعلية. يمكن أن يكونPart
: { text: "Your text prompt" }
للإدخال النصي.{ inlineData: { mimeType: "image/jpeg", data: "base64_encoded_image_string" } }
لتضمين بيانات الصورة مباشرة في الطلب.{ fileData: { mimeType: "video/mp4", fileUri: "gs://bucket/object" } }
للإشارة إلى ملف تم تحميله عبرai.files.upload()
أو URI يمكن الوصول إليه بشكل عام (خاصة لـ Vertex AI).- يمكن أن يتضمن إدخال الفيديو أيضًا
videoMetadata
مثلstartOffset
وendOffset
لتحديد جزء معين من ملف الفيديو.
مثال: طلب متعدد الوسائط (نص وصورة):
import { GoogleGenAI } from '@google/genai';
// ... (Initialization)
async function describeImage() {
// Assume 'base64ImageData' is a Base64 encoded string of a JPEG image
const base64ImageData = "..."; // Your Base64 image data
const contents = [
{
role: "user",
parts: [
{ text: "What is in this image?" },
{
inlineData: {
mimeType: "image/jpeg",
data: base64ImageData,
},
},
],
},
];
const response = await ai.models.generateContent({
model: "gemini-pro-vision", // Or a Gemini 2.5 vision-capable model
contents: contents,
});
console.log(response.text);
}
describeImage();
تفتح هذه القدرة على دمج أنواع مختلفة من البيانات بسلاسة في طلباتك مجموعة واسعة من إمكانيات التطبيقات، بدءًا من أنظمة الأسئلة والأجوبة المرئية وصولاً إلى الأدوات التي تحلل وتصف محتوى الفيديو. بينما توفر الحزمة طرقًا مباشرة لـ توليد الصور، فإن توليد الفيديو لا يُقدم صراحة كطريقة SDK مباشرة. بدلاً من ذلك، يتم التعامل مع الفيديو بشكل أساسي كوسيلة إدخال. ومع ذلك، قد تكون النماذج المتقدمة متعددة الوسائط التي يتم الوصول إليها عبر generateContent
قادرة على معالجة والاستجابة لمدخلات الفيديو بطرق متطورة، مثل التلخيص أو الإجابة على أسئلة حول محتوى الفيديو.
التفاعلات في الوقت الفعلي مع Live API (ai.live
)
للتطبيقات التي تتطلب تجارب تفاعلية بزمن انتقال منخفض، تعد الوحدة الفرعية ai.live
بمثابة تغيير في قواعد اللعبة. حاليًا في مرحلة المعاينة وتتطلب إصدار API v1alpha
لـ Gemini API، تقوم ai.live
بإنشاء اتصال WebSocket للبث ثنائي الاتجاه مع نماذج Gemini. يتيح ذلك الإرسال في الوقت الفعلي لكتل النص والصوت، وحتى إطارات الفيديو كإدخال، واستقبال النص أو الصوت كإخراج.
المفاهيم الأساسية لـ ai.live
:
ai.live.connect(params)
: هذه هي نقطة الدخول. تقوم بتوفير معلمات مثل اسم النموذج (model
)، تكوين الاتصال (config
)، ودوال رد الاتصال (callbacks
) لأحداث WebSocket المختلفة (مثلonopen
،onmessage
،onerror
،onclose
). تُرجعPromise
يتم حلها إلى كائنSession
.- كائن
Session
: يمثل اتصال WebSocket النشط. يحتوي على طرق لـ:
sendClientContent(params)
: يرسلContent
منظمًا (كما فيgenerateContent
)، مناسبًا للرسائل النصية أو ملء سياق المحادثة مسبقًا.sendRealtimeInput(params)
: يرسل بياناتBlob
، محسّنة للتدفقات المستمرة لكتل الصوت أو إطارات الفيديو (كصور). تم تصميم هذه الطريقة للاستجابة، ربما على حساب ضمانات الترتيب الصارمة إذا تم مزجها معsendClientContent
.sendToolResponse(params)
: يرسل الاستجابات مرة أخرى إلى النموذج إذا كان يتم استخدام استدعاء الدوال داخل الجلسة المباشرة.close()
: ينهي اتصال WebSocket.
التكوين (LiveConnectParameters
وLiveConnectConfig
):
model
: يحدد نموذج Gemini للاتصال به (مثل النماذج التجريبية مثل 'gemini-2.0-flash-exp' كما هو موضح في أمثلة التوثيق، أو نماذج أخرى متوافقة معv1alpha
).config.responseModalities
: مصفوفة تحدد أنواع الإخراج المطلوبة، مثل[Modality.AUDIO, Modality.TEXT]
. الافتراضي هوModality.AUDIO
إذا لم يتم تحديده.config.speechConfig
: تكوين لإخراج تحويل النص إلى كلام (المزيد عن هذا لاحقًا).config.systemInstruction
: تعليمات على مستوى النظام لتوجيه النموذج.config.tools
: إعلانات لاستدعاء الدوال.
ردود الاتصال (LiveCallbacks
):
onopen
: يتم استدعاؤها عند إنشاء اتصال WebSocket بنجاح.onmessage
: يتم استدعاؤها عند استلام رسالة (مثل نص تم إنشاؤه، بيانات صوتية، استدعاءات أدوات) من الخادم.onerror
: يتم استدعاؤها إذا حدث خطأ في اتصال WebSocket.onclose
: يتم استدعاؤها عند إغلاق الاتصال.
مثال: إعداد ai.live
أساسي (مفاهيمي):
import { GoogleGenAI, Modality } from '@google/genai';
// Ensure you initialize with apiVersion: 'v1alpha' for Gemini API
const ai = new GoogleGenAI({ apiKey: 'YOUR_GEMINI_API_KEY', apiVersion: 'v1alpha' });
async function startLiveSession() {
try {
const session = await ai.live.connect({
model: 'gemini-pro', // Or a specific model supporting live, check documentation
config: {
responseModalities: [Modality.TEXT, Modality.AUDIO], // Expect text and audio back
// speechConfig: { ... } // For TTS, covered below
},
callbacks: {
onopen: () => console.log('Live session connected!'),
onmessage: (serverMessage) => {
// Process messages from the server
// This could be text, audio data, tool calls, etc.
console.log('Received from server:', serverMessage);
if (serverMessage.speechUpdate?.audio) {
// Handle incoming audio data (e.g., play it)
const audioBytes = serverMessage.speechUpdate.audio;
// ... your audio playback logic ...
}
if (serverMessage.textUpdate?.text) {
console.log("Text: ", serverMessage.textUpdate.text);
}
},
onerror: (error) => console.error('Live session error:', error),
onclose: () => console.log('Live session closed.'),
},
});
// Now you can send messages
session.sendClientContent({ turns: [{ role: 'user', parts: [{text: 'Hello, live Gemini!'}] }] });
// For continuous audio input:
// navigator.mediaDevices.getUserMedia({ audio: true }).then(stream => {
// const mediaRecorder = new MediaRecorder(stream);
// mediaRecorder.ondataavailable = event => {
// if (event.data.size > 0) {
// session.sendRealtimeInput({ media: { mediaChunks: [event.data] } });
// }
// };
// mediaRecorder.start(1000); // Send audio chunks every second
// });
// Remember to close the session when done
// session.close();
} catch (error) {
console.error('Failed to connect live session:', error);
}
}
startLiveSession();
تعد الوحدة ai.live
قوية للغاية لبناء تطبيقات تبدو تفاعلية ومتجاوبة حقًا، وتتفاعل في الوقت الفعلي مع مدخلات المستخدم عبر وسائط مختلفة.
نماذج وقدرات تحويل النص إلى كلام (TTS)
تسهل الحزمة توليد تحويل النص إلى كلام (TTS)، بشكل أساسي من خلال واجهة ai.live
عند طلب إخراج صوتي. يتيح ذلك لنماذج Gemini الاستجابة ليس فقط بالنص، بل أيضًا بالصوت المنطوق.
تكوين TTS (SpeechConfig
وVoiceConfig
):
عند إنشاء اتصال مباشر باستخدام ai.live.connect()
، يمكنك تحديد speechConfig
ضمن معلمة config
.
SpeechConfig
: يحتوي هذا الكائن حاليًا على خاصية رئيسية واحدة:voiceConfig
: كائن لتحديد الصوت المطلوب لإخراج TTS.VoiceConfig
:prebuiltVoice
: يمكنك تحديد اسم صوت مُعد مسبقًا (مثل 'aura-asteria-en'، 'aura-luna-en' وفقًا لعروض Google المحتملة - ارجع دائمًا إلى أحدث الوثائق الرسمية لأسماء الأصوات المتاحة).customVoice
: (محتمل) لاستخدام أصوات مدربة مخصصة إذا كانت مدعومة من قبل API.
مثال: طلب إخراج صوتي في جلسة مباشرة:
// Within ai.live.connect parameters:
// ...
config: {
responseModalities: [Modality.AUDIO], // Crucial for TTS
speechConfig: {
voiceConfig: {
// Replace with an actual available prebuilt voice name
prebuiltVoice: 'aura-asteria-en',
}
}
},
callbacks: {
onmessage: (serverMessage) => {
if (serverMessage.speechUpdate?.audio) {
const audioData = serverMessage.speechUpdate.audio; // This is ArrayBuffer
// Logic to play this audio data in the browser or save it in Node.js
// For example, in a browser:
// const audioBlob = new Blob([audioData], { type: 'audio/mpeg' }); // Or appropriate MIME type
// const audioUrl = URL.createObjectURL(audioBlob);
// new Audio(audioUrl).play();
console.log('Received audio data for TTS.');
}
if (serverMessage.textUpdate?.text) {
console.log("Accompanying text (if any):", serverMessage.textUpdate.text)
}
},
// ... other callbacks
},
// ...
عند التكوين لإخراج الصوت، سيستقبل رد الاتصال onmessage
في جلستك المباشرة كائنات ServerMessage
. إذا كانت الرسالة تحتوي على كلام، فإن حقل speechUpdate.audio
سيحتوي على بيانات الصوت (عادةً كـ ArrayBuffer
). يمكنك بعد ذلك معالجة هذه البيانات لتشغيلها للمستخدم أو حفظها كملف صوتي. قد يتم أيضًا ملء حقل textUpdate.text
بالنسخة النصية للكلام.
هذا التكامل لـ TTS مباشرة في التدفق المباشر والتفاعلي يجعل الحزمة مثالية لتطبيقات الصوت أولاً، والمساعدين التفاعليين، وميزات إمكانية الوصول.
نماذج توليد الصور
توفر الحزمة طريقة مخصصة لتوليد الصور باستخدام نماذج مثل Imagen: ai.models.generateImages()
. تتيح لك هذه الطريقة تقديم طلب نصي واستقبال بيانات الصورة التي تم إنشاؤها.
استخدام ai.models.generateImages()
:
تأخذ هذه الطريقة GenerateImagesParameters
، والتي تتضمن:
model
: معرّف نموذج توليد الصور (مثل 'imagen-3.0-generate-002' - تحقق دائمًا من الوثائق لأسماء النماذج الحالية).prompt
: وصف نصي للصورة التي تريد توليدها.config
(اختياريGenerateImagesConfig
):numberOfImages
: عدد المرشحات الصور المراد توليدها (الافتراضي غالبًا هو 1).negativePrompt
: وصف لما لا تريده في الصورة.seed
: رقم للتحكم في العشوائية للحصول على نتائج قابلة للتكرار.aspectRatio
: نسبة العرض إلى الارتفاع المطلوبة (مثل "1:1"، "16:9").includeRaiReason
: ما إذا كان يجب تضمين الأسباب إذا فشلت صورة في فحوصات الذكاء الاصطناعي المسؤول (Responsible AI).- ومعلمات أخرى خاصة بالنموذج.
مثال: توليد صورة:
import { GoogleGenAI } from '@google/genai';
// ... (Initialization for Vertex AI, as Imagen is often a Vertex AI service)
const ai = new GoogleGenAI({ vertexai: true, project: 'your-gcp-project-id', location: 'your-gcp-location' });
async function createImage() {
try {
const response = await ai.models.generateImages({
model: 'imagen-3.0-generate-002', // Check documentation for latest model
prompt: 'A futuristic cityscape at sunset, with flying vehicles and neon lights.',
config: {
numberOfImages: 1,
aspectRatio: '16:9',
includeRaiReason: true,
},
});
if (response?.generatedImages && response.generatedImages.length > 0) {
const imageBytesBase64 = response.generatedImages[0]?.image?.imageBytes;
if (imageBytesBase64) {
// imageBytesBase64 is a Base64 encoded string of the image
console.log('Image generated (Base64 encoded)!');
// You can then display this image in a browser (e.g., <img src="data:image/png;base64,..." />)
// or save it to a file in Node.js
}
} else {
console.log('No image generated or RAI filtered:', response?.raiFilteredReason);
}
} catch (error) {
console.error('Error generating image:', error);
}
}
createImage();
ستحتوي الاستجابة (GenerateImagesResponse
) على مصفوفة من كائنات GeneratedImage
. يمكن أن يحتوي كل كائن على بيانات الصورة (غالبًا كـ imageBytes
بتنسيق Base64)، وraiFilteredReason
إذا تم تصفيتها، وبيانات وصفية أخرى.
معالجة الفيديو (كإدخال)
كما تم تسليط الضوء عليه سابقًا، تتعامل الحزمة بشكل أساسي مع الفيديو كوسيلة إدخال بدلاً من إخراج تم إنشاؤه. يمكنك تضمين بيانات الفيديو في طلباتك إلى نماذج Gemini متعددة الوسائط بعدة طرق:
تحميل ملفات الفيديو (ai.files.upload()
- Gemini API):
يمكنك تحميل ملفات الفيديو (مثل MP4) باستخدام الوحدة الفرعية ai.files
. بمجرد تحميلها، تتلقى URI للملف يمكن الإشارة إليه في جزء fileData
من كائن Content
الخاص بك.
// Conceptual example for file upload (Gemini API)
// const uploadedFile = await ai.files.upload({
// file: pathToYourVideoFile, // Or a Blob in the browser
// mimeType: 'video/mp4',
// displayName: 'my-cool-video.mp4'
// });
// const videoFileUri = uploadedFile.uri;
const contents = [{
role: "user",
parts: [
{ text: "Summarize this video." },
{ fileData: { mimeType: "video/mp4", fileUri: "YOUR_UPLOADED_VIDEO_URI_HERE" } },
// Optionally, add VideoMetadata
// { videoMetadata: { startOffset: "0s", endOffset: "30s" } } // Process first 30s
]
}];
استخدام URIs تخزين Google Cloud (Vertex AI):
عند استخدام Vertex AI، يمكنك الإشارة مباشرة إلى ملفات الفيديو المخزنة في مجموعات تخزين Google Cloud باستخدام URI gs://
الخاص بها في جزء fileData
.
إطارات الفيديو المباشرة (ai.live
):
كما تمت مناقشته في قسم ai.live
، يمكنك إرسال إطارات فيديو فردية (ككائنات Blob
، على الأرجح بأنواع MIME للصور مثل image/jpeg
أو image/png
) باستخدام session.sendRealtimeInput()
. يتيح ذلك التحليل أو التفاعل في الوقت الفعلي بناءً على بث فيديو مباشر.
تسمح واجهة VideoMetadata
، مع startOffset
وendOffset
، بتحديد الجزء الذي يجب أن يركز عليه النموذج من ملف الفيديو، وهو مفيد لمعالجة مقاطع الفيديو الطويلة.
دعم Gemini API مقابل Vertex AI: نهج مزدوج
ميزة هامة لـ Google Gen AI SDK هي دعمها السلس لكل من Gemini Developer API (عبر Google AI Studio) وVertex AI. يوفر هذا الدعم المزدوج للمطورين المرونة ومسار ترقية واضح.
- Gemini Developer API (Google AI Studio):
- الإيجابيات: إعداد سريع باستخدام مفتاح API، مثالي للنماذج الأولية السريعة، المشاريع الشخصية، والتطبيقات من جانب الخادم حيث تكون إدارة البنية التحتية السحابية أقل مرغوبة. غالبًا ما يوفر وصولًا مبكرًا إلى أحدث الميزات والنماذج التجريبية.
- السلبيات: لا يجب كشف مفاتيح API من جانب العميل. ميزات مثل
ai.files
وai.live
خاصة بهذا API (أو إصدارهv1alpha
). قد تختلف حدود المعدل والحصص عن Vertex AI. - Vertex AI:
- الإيجابيات: منصة على مستوى الإنتاج مع قدرات MLOps قوية، IAM للأمان، التكامل مع خدمات Google Cloud الأخرى، وغالبًا ما تكون حصصها أعلى مناسبة للتطبيقات واسعة النطاق. قد يكون توفر النماذج أكثر تنظيمًا واستقرارًا.
- السلبيات: يتطلب مشروع Google Cloud والإلمام بمفاهيم GCP. التهيئة أكثر تعقيدًا قليلاً (معرّف المشروع، الموقع). قد تظهر بعض الميزات التجريبية الجديدة جدًا على Gemini API أولاً.
تجرّد الحزمة العديد من الاختلافات. تعمل الطرق الأساسية مثل ai.models.generateContent()
بشكل مشابه لكليهما، مع التمييز الرئيسي هو التهيئة (apiKey
مقابل vertexai: true, project, location
). يتيح لك ذلك البدء بـ Gemini API والترحيل إلى Vertex AI مع نضج وتوسع تطبيقك، دون إعادة كتابة كاملة لمنطق الذكاء الاصطناعي الخاص بك. غالبًا ما تحدد وثائق الطرق ما إذا كانت ميزة أو معلمة فريدة لمنصة واحدة.
الخلاصة: أدواتك لتطبيقات الذكاء الاصطناعي من الجيل التالي
Google Gen AI TypeScript/JavaScript SDK هي مجموعة أدوات قوية ومتعددة الاستخدامات تجلب قدرات Gemini 2.5 والنماذج المتقدمة الأخرى مباشرة إلى مطوري JavaScript. دعمها للمحتوى متعدد الوسائط، التفاعلات في الوقت الفعلي عبر Live API، TTS المدمج، توليد الصور، والمرونة في الاختيار بين Gemini Developer API وVertex AI يجعلها موردًا لا غنى عنه.
من خلال فهم هيكل الحزمة، ووحداتها الأساسية (ai.models
، ai.live
، ai.chats
، ai.files
، ai.caches
)، والفروق الدقيقة في صياغة الطلبات متعددة الوسائط، أنت مجهز جيدًا لبناء تطبيقات مبتكرة يمكنها الرؤية، السمع، التحدث، وفهم العالم بطرق أغنى من أي وقت مضى. مع استمرار جوجل في دفع حدود الذكاء الاصطناعي، ستكون هذه الحزمة مفتاحك لفتح تلك الإمكانيات داخل مشاريع JavaScript وTypeScript الخاصة بك. انغمس، جرب، وابنِ مستقبل التطبيقات المدعومة بالذكاء الاصطناعي اليوم!
لقد قمت بتوليد المقال بناءً على المعلومات المجمعة من README.md
ودليل docs
. يغطي جميع المواضيع المحددة ويهدف إلى عدد الكلمات المطلوب.