এই এপিআই রেফারেন্সটি স্ট্যান্ডার্ড, স্ট্রিমিং এবং রিয়েল-টাইম এপিআইগুলোর বর্ণনা দেয়, যা ব্যবহার করে আপনি জেমিনি মডেলগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারবেন। আপনি HTTP রিকোয়েস্ট সমর্থন করে এমন যেকোনো পরিবেশে REST এপিআইগুলো ব্যবহার করতে পারেন। আপনার প্রথম এপিআই কলটি কীভাবে শুরু করবেন, তার জন্য কুইকস্টার্ট গাইডটি দেখুন। আপনি যদি আমাদের ভাষা-নির্দিষ্ট লাইব্রেরি এবং এসডিকে-গুলোর রেফারেন্স খুঁজে থাকেন, তবে বাম দিকের নেভিগেশনে 'এসডিকে রেফারেন্স' (SDK references) এর অধীনে সেই ভাষার লিঙ্কে যান।
প্রাথমিক শেষবিন্দু
জেমিনি এপিআই নিম্নলিখিত প্রধান এন্ডপয়েন্টগুলোকে কেন্দ্র করে সংগঠিত:
- স্ট্যান্ডার্ড কন্টেন্ট জেনারেশন (
generateContent): একটি স্ট্যান্ডার্ড REST এন্ডপয়েন্ট যা আপনার অনুরোধটি প্রসেস করে এবং মডেলের সম্পূর্ণ রেসপন্স একটি প্যাকেজে ফেরত দেয়। এটি নন-ইন্টারেক্টিভ কাজের জন্য সবচেয়ে ভালো, যেখানে আপনি সম্পূর্ণ ফলাফলের জন্য অপেক্ষা করতে পারেন। - স্ট্রিমিং কন্টেন্ট জেনারেশন (
streamGenerateContent): সার্ভার-সেন্ট ইভেন্টস (SSE) ব্যবহার করে রেসপন্সের অংশগুলো তৈরি হওয়ার সাথে সাথেই আপনার কাছে পাঠিয়ে দেয়। এটি চ্যাটবটের মতো অ্যাপ্লিকেশনগুলোর জন্য আরও দ্রুত এবং ইন্টারেক্টিভ অভিজ্ঞতা প্রদান করে। - লাইভ এপিআই (
BidiGenerateContent): দ্বিমুখী স্ট্রিমিংয়ের জন্য একটি স্টেটফুল ওয়েবসকেট-ভিত্তিক এপিআই, যা রিয়েল-টাইম কথোপকথনমূলক ব্যবহারের জন্য ডিজাইন করা হয়েছে। - ব্যাচ মোড (
batchGenerateContent):generateContentঅনুরোধের ব্যাচ জমা দেওয়ার জন্য একটি স্ট্যান্ডার্ড REST এন্ডপয়েন্ট। - এমবেডিংস (
embedContent): একটি স্ট্যান্ডার্ড REST এন্ডপয়েন্ট যা ইনপুটContentথেকে একটি টেক্সট এমবেডিং ভেক্টর তৈরি করে। - জেন মিডিয়া এপিআই: আমাদের বিশেষায়িত মডেল, যেমন ইমেজ তৈরির জন্য Imagen এবং ভিডিও তৈরির জন্য Veo ব্যবহার করে মিডিয়া তৈরির এন্ডপয়েন্ট। জেমিনির মধ্যেও এই সক্ষমতাগুলো অন্তর্নির্মিত রয়েছে, যা আপনি
generateContentএপিআই ব্যবহার করে অ্যাক্সেস করতে পারেন। - প্ল্যাটফর্ম এপিআই: ইউটিলিটি এন্ডপয়েন্ট যা ফাইল আপলোড করা এবং টোকেন গণনা করার মতো মূল কাজগুলো সমর্থন করে।
প্রমাণীকরণ
জেমিনি এপিআই-তে করা সমস্ত অনুরোধে আপনার এপিআই কী সহ একটি x-goog-api-key হেডার অবশ্যই অন্তর্ভুক্ত করতে হবে। গুগল এআই স্টুডিও -তে কয়েকটি ক্লিকেই একটি তৈরি করে নিন।
নিম্নলিখিতটি হেডারে এপিআই কী সহ একটি অনুরোধের উদাহরণ:
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 ব্যবহার করে API-তে আপনার কী কীভাবে প্রেরণ করবেন, সে সম্পর্কিত নির্দেশাবলীর জন্য “Using Gemini API keys” গাইডটি দেখুন।
বিষয়বস্তু তৈরি
মডেলে প্রম্পট পাঠানোর জন্য এটিই কেন্দ্রীয় এন্ডপয়েন্ট। কন্টেন্ট জেনারেট করার জন্য দুটি এন্ডপয়েন্ট রয়েছে, মূল পার্থক্যটি হলো আপনি কীভাবে রেসপন্সটি গ্রহণ করেন:
-
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?"},
]
}]
}'
একাধিক পালায় কথোপকথন (চ্যাট)
একাধিক পালা সহ একটি কথোপকথন তৈরি করতে, আপনাকে একাধিক Content অবজেক্ট দিয়ে contents অ্যারেটি সংজ্ঞায়িত করতে হবে। API পরবর্তী প্রতিক্রিয়ার জন্য এই সম্পূর্ণ ইতিহাসকে প্রেক্ষাপট হিসেবে ব্যবহার করবে। প্রতিটি Content অবজেক্টের role 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মাল্টিমোডালিটি সক্ষম করে: বিভিন্ন ধরণের ডেটা (টেক্সট, ছবি, ভিডিও ইউআরআই, ইত্যাদি) একত্রিত করতে একটি এককContentঅবজেক্টের মধ্যে একাধিকPartঅবজেক্ট ব্যবহার করুন। - আপনার ডেটা পদ্ধতি বেছে নিন:
- ছোট, সরাসরি এমবেড করা মিডিয়ার (যেমন বেশিরভাগ ছবি) জন্য,
inline_dataসহ একটিPartব্যবহার করুন। - বড় ফাইল বা একাধিক অনুরোধে পুনরায় ব্যবহার করতে চাইলে, ফাইল এপিআই (File API) ব্যবহার করে ফাইলটি আপলোড করুন এবং
file_dataপার্ট দিয়ে সেটিকে রেফারেন্স করুন।
- ছোট, সরাসরি এমবেড করা মিডিয়ার (যেমন বেশিরভাগ ছবি) জন্য,
- কথোপকথনের ইতিহাস পরিচালনা করুন: REST API ব্যবহারকারী চ্যাট অ্যাপ্লিকেশনগুলির জন্য, প্রতিটি টার্নের জন্য
"user"এবং"model"রোলের মধ্যে পর্যায়ক্রমেContentঅবজেক্ট যুক্ত করেcontentsঅ্যারেটি তৈরি করুন। আপনি যদি একটি 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"
}
লাইভ এপিআই (বিডিজেনারেটকন্টেন্ট) ওয়েবসকেটস এপিআই
লাইভ এপিআই রিয়েল-টাইম স্ট্রিমিং ব্যবহারের জন্য দ্বিমুখী স্ট্রিমিংয়ের উদ্দেশ্যে একটি স্টেটফুল ওয়েবসকেট ভিত্তিক এপিআই প্রদান করে। আরও বিস্তারিত তথ্যের জন্য আপনি লাইভ এপিআই গাইড এবং লাইভ এপিআই রেফারেন্স পর্যালোচনা করতে পারেন।
বিশেষায়িত মডেল
জেমিনি মডেল পরিবারের পাশাপাশি, জেমিনি এপিআই ইমেজেন , লাইরিয়া এবং এমবেডিং মডেলের মতো বিশেষায়িত মডেলগুলোর জন্যও এন্ডপয়েন্ট প্রদান করে। আপনি মডেলস সেকশনের অধীনে এই গাইডগুলো দেখে নিতে পারেন।
প্ল্যাটফর্ম এপিআই
বাকি এন্ডপয়েন্টগুলো এখন পর্যন্ত বর্ণিত প্রধান এন্ডপয়েন্টগুলোর সাথে ব্যবহারের জন্য অতিরিক্ত সক্ষমতা প্রদান করে। আরও জানতে গাইডস সেকশনে থাকা ব্যাচ মোড এবং ফাইল এপিআই টপিকগুলো দেখুন।
এরপর কী?
আপনি যদি সবে শুরু করে থাকেন, তাহলে নিচের গাইডগুলো দেখে নিন, যা আপনাকে জেমিনি এপিআই প্রোগ্রামিং মডেলটি বুঝতে সাহায্য করবে:
আপনি ক্যাপাবিলিটিজ গাইডগুলোও দেখে নিতে পারেন, যেখানে জেমিনি এপিআই-এর বিভিন্ন ফিচারের সাথে পরিচয় করিয়ে দেওয়া হয়েছে এবং কোডের উদাহরণও দেওয়া আছে: