يصف مرجع واجهة برمجة التطبيقات هذا واجهات برمجة التطبيقات العادية والمتدفقة وفي الوقت الفعلي التي يمكنكم استخدامها للتفاعل مع نماذج Gemini. يمكنكم استخدام واجهات برمجة تطبيقات REST في أي بيئة تتيح إرسال طلبات HTTP. يُرجى الرجوع إلى الـ دليل التشغيل السريع لمعرفة كيفية بدء استخدام أول طلب بيانات من واجهة برمجة التطبيقات. إذا كنتم تبحثون عن مراجع لمكتباتنا وحِزم SDK الخاصة بلغة معيّنة، يُرجى الانتقال إلى رابط تلك اللغة في شريط التنقّل الأيمن ضمن مراجع حِزم SDK.
نقاط النهاية الأساسية
تم تنظيم Gemini API حول نقاط النهاية الرئيسية التالية:
- إنشاء المحتوى العادي (
generateContent): نقطة نهاية عادية لطلبات REST تعالج طلبكم وتعرض الردّ الكامل للنموذج في حزمة واحدة. هذه النقطة هي الأفضل للمهام غير التفاعلية التي يمكنكم فيها انتظار النتيجة الكاملة. - إنشاء المحتوى المتدفّق (
streamGenerateContent): تستخدم هذه النقطة أحداثًا مرسَلة من الخادم (SSE) لإرسال أجزاء من الردّ إليكم أثناء إنشائها. ويوفّر ذلك تجربة أسرع وأكثر تفاعلاً للتطبيقات، مثل روبوتات الدردشة. - واجهة برمجة التطبيقات المباشرة (
BidiGenerateContent): هي واجهة برمجة تطبيقات مستندة إلى WebSocket ومحتفظة بالحالة، ومصمّمة لتدفق البيانات ثنائي الاتجاه، ومناسبة لحالات الاستخدام الحوارية في الوقت الفعلي. - وضع الدُفعات (
batchGenerateContent): هي نقطة نهاية عادية لطلبات REST لإرسال دُفعات من طلباتgenerateContent. - التضمينات (
embedContent): هي نقطة نهاية عادية لطلبات REST تنشئ متّجه تضمين نصي من الإدخالContent. - واجهات برمجة تطبيقات Gen Media: هي نقاط نهاية لإنشاء الوسائط باستخدام نماذجنا المتخصّصة
، مثل Imagen لإنشاء الصور
، وVeo لإنشاء الفيديوهات.
تتضمّن Gemini أيضًا هذه الإمكانات التي يمكنكم الوصول إليها باستخدام واجهة برمجة التطبيقات
generateContent. - واجهات برمجة تطبيقات المنصة: هي نقاط نهاية للأدوات المساعدة تدعم الإمكانات الأساسية، مثل تحميل الملفات وعدد الرموز المميزة.
المصادقة
يجب أن تتضمّن جميع الطلبات إلى Gemini API عنوان x-goog-api-key مع مفتاح واجهة برمجة التطبيقات. يمكنكم إنشاء مفتاح ببضع نقرات في Google AI
Studio.
في ما يلي مثال على طلب يتضمّن مفتاح واجهة برمجة التطبيقات في العنوان:
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a few words"
}
]
}
]
}'
للحصول على تعليمات حول كيفية تمرير المفتاح إلى واجهة برمجة التطبيقات باستخدام حِزم Gemini SDK، يُرجى الاطّلاع على دليل استخدام مفاتيح Gemini API.
إنشاء المحتوى
هذه هي نقطة النهاية المركزية لإرسال الطلبات إلى النموذج. هناك نقطتا نهاية لإنشاء المحتوى، ويكمن الاختلاف الرئيسي في كيفية تلقّي الردّ:
generateContent(REST): تتلقّى هذه النقطة طلبًا وتوفّر ردًا واحدًا بعد أن ينتهي النموذج من عملية الإنشاء بالكامل.streamGenerateContent(SSE): تتلقّى هذه النقطة الطلب نفسه تمامًا، ولكن النموذج يرسل إليكم أجزاء من الردّ أثناء إنشائها. ويوفّر ذلك تجربة أفضل للمستخدمين في التطبيقات التفاعلية لأنّه يتيح لكم عرض النتائج الجزئية على الفور.
بنية نص الطلب
نص الطلب هو كائن JSON مطابق لكل من الوضعَين العادي والمتدفّق، ويتم إنشاؤه من بعض الكائنات الأساسية:
Contentعنصر: يمثّل هذا العنصر جولة واحدة في محادثة.Partكائن: يمثّل هذا الكائن جزءًا من البيانات في جولةContent(مثل نص أو صورة).inline_data(Blob): هو حاوية لبايتات الوسائط الأولية ونوع MIME الخاص بها.
على أعلى مستوى، يحتوي نص الطلب على كائن contents، وهو عبارة عن قائمة بكائنات Content، يمثّل كل منها جولة في المحادثة. في معظم الحالات، لإنشاء نص أساسي، سيكون لديكم كائن Content واحد، ولكن إذا كنتم تريدون الاحتفاظ بسجلّ المحادثة، يمكنكم استخدام كائنات Content متعددة.
في ما يلي مثال على نص طلب generateContent نموذجي:
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"role": "user",
"parts": [
// A list of Part objects goes here
]
},
{
"role": "model",
"parts": [
// A list of Part objects goes here
]
}
]
}'
بنية نص الاستجابة
يكون نص الاستجابة مشابهًا لكل من الوضعَين المتدفّق والعادي باستثناء ما يلي:
- الوضع العادي: يحتوي نص الاستجابة على مثال
GenerateContentResponse. - الوضع المتدفّق: يحتوي نص الاستجابة على سلسلة من
GenerateContentResponseأمثلة.
على مستوى عالٍ، يحتوي نص الاستجابة على كائن candidates، وهو عبارة عن قائمة بكائنات Candidate. يحتوي الكائن Candidate على كائن Content يتضمّن الردّ الذي تم إنشاؤه من النموذج.
أمثلة على الطلبات
توضّح الأمثلة التالية كيفية دمج هذه المكوّنات لأنواع مختلفة من الطلبات.
طلب نصي فقط
يتكوّن الطلب النصي البسيط من مصفوفة contents تحتوي على كائن Content واحد. تحتوي مصفوفة parts الخاصة بهذا الكائن، بدورها، على كائن Part واحد يتضمّن حقل text.
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a single paragraph."
}
]
}
]
}'
طلب متعدّد الوسائط (نص وصورة)
لتضمين نص وصورة في الطلب، يجب أن تحتوي مصفوفة parts على كائنَي Part: أحدهما للنص والآخر لـ inline_data الخاصة بالصورة.
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{
"inline_data": {
"mime_type":"image/jpeg",
"data": "/9j/4AAQSkZJRgABAQ... (base64-encoded image)"
}
},
{"text": "What is in this picture?"},
]
}]
}'
محادثات متعدّدة الجولات (دردشة)
لإنشاء محادثة تتضمّن جولات متعددة، يجب تحديد مصفوفة contents باستخدام كائنات Content متعددة. ستستخدم واجهة برمجة التطبيقات هذا السجلّ بالكامل كسياق للردّ التالي. يجب أن يتناوب role لكل كائن Content بين user وmodel.
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"role": "user",
"parts": [
{ "text": "Hello." }
]
},
{
"role": "model",
"parts": [
{ "text": "Hello! How can I help you today?" }
]
},
{
"role": "user",
"parts": [
{ "text": "Please write a four-line poem about the ocean." }
]
}
]
}'
الخلاصات الرئيسية
Contentهو الحاوية: هو الحاوية ذات المستوى الأعلى لجولة رسالة، سواء كانت من المستخدم أو النموذج.Partيتيح تعدُّد الوسائط: يمكنكم استخدام عناصرPartمتعددة ضمن عنصرContentواحد لدمج أنواع مختلفة من البيانات (نص أو صورة أو عنوان URI للفيديو وما إلى ذلك).- اختيار طريقة البيانات:
- بالنسبة إلى الوسائط الصغيرة المضمّنة مباشرةً (مثل معظم الصور)، يمكنكم استخدام
Partمعinline_data. - بالنسبة إلى الملفات الأكبر حجمًا أو الملفات التي تريدون إعادة استخدامها في الطلبات، يمكنكم استخدام File API لتحميل الملف والإشارة إليه باستخدام جزء
file_data.
- بالنسبة إلى الوسائط الصغيرة المضمّنة مباشرةً (مثل معظم الصور)، يمكنكم استخدام
- إدارة سجلّ المحادثة: بالنسبة إلى تطبيقات الدردشة التي تستخدم REST API، يمكنكم إنشاء
مصفوفة
contentsعن طريق إلحاقContentلكل جولة، بالتناوب بين الدورَين"user"و"model". إذا كنتم تستخدمون حزمة SDK، يُرجى الرجوع إلى مستندات حزمة SDK لمعرفة الطريقة المقترَحة لإدارة سجلّ المحادثة.
أمثلة على الردود
توضّح الأمثلة التالية كيفية دمج هذه المكوّنات لأنواع مختلفة من الطلبات.
ردّ نصي فقط
يتكوّن الردّ النصي التلقائي من مصفوفة candidates تحتوي على كائن content واحد أو أكثر يتضمّن ردّ النموذج.
في ما يلي مثال على ردّ عادي:
{
"candidates": [
{
"content": {
"parts": [
{
"text": "At its core, Artificial Intelligence works by learning from vast amounts of data ..."
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 1
}
],
}
في ما يلي سلسلة من الردود المتدفّقة. يحتوي كل ردّ على responseId يربط الردّ الكامل ببعضه:
{
"candidates": [
{
"content": {
"parts": [
{
"text": "The image displays"
}
],
"role": "model"
},
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": ...
},
"modelVersion": "gemini-2.5-flash-lite",
"responseId": "mAitaLmkHPPlz7IPvtfUqQ4"
}
...
{
"candidates": [
{
"content": {
"parts": [
{
"text": " the following materials:\n\n* **Wood:** The accordion and the violin are primarily"
}
],
"role": "model"
},
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": ...
}
"modelVersion": "gemini-2.5-flash-lite",
"responseId": "mAitaLmkHPPlz7IPvtfUqQ4"
}
واجهة برمجة التطبيقات المباشرة (BidiGenerateContent) WebSockets API
توفّر واجهة برمجة التطبيقات المباشرة واجهة برمجة تطبيقات مستندة إلى WebSocket ومحتفظة بالحالة لتدفق البيانات ثنائي الاتجاه من أجل إتاحة حالات الاستخدام المتدفّقة في الوقت الفعلي. يمكنكم مراجعة دليل واجهة برمجة التطبيقات المباشرة ومرجع واجهة برمجة التطبيقات المباشرة لمزيد من التفاصيل.
النماذج المتخصّصة
بالإضافة إلى مجموعة نماذج Gemini، توفّر Gemini API نقاط نهاية للنماذج المتخصّصة، مثل Imagen وLyria ونماذج التضمين. يمكنكم الاطّلاع على هذه الأدلة ضمن قسم "النماذج".
واجهات برمجة تطبيقات المنصة
تتيح نقاط النهاية المتبقية إمكانات إضافية لاستخدامها مع نقاط النهاية الرئيسية الموضّحة حتى الآن. يمكنكم الاطّلاع على موضوعَي وضع الدُفعات و File API في قسم "الأدلة" لمزيد من المعلومات.
الخطوات التالية
إذا كنتم قد بدأتم لتوّكم، يُرجى الاطّلاع على الأدلة التالية التي ستساعدكم في فهم نموذج برمجة Gemini API:
قد يكون من المفيد أيضًا الاطّلاع على أدلة الإمكانات التي تقدّم ميزات مختلفة في Gemini API وتوفّر أمثلة على الرموز البرمجية: