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