Live API হল একটি স্টেটফুল API যা WebSockets ব্যবহার করে। এই বিভাগে, আপনি WebSockets API সম্পর্কিত অতিরিক্ত বিবরণ পাবেন।
সেশন
WebSocket কানেকশন ক্লায়েন্ট ও Gemini সার্ভারের মধ্যে একটি সেশন তৈরি করে। ক্লায়েন্ট নতুন কানেকশন শুরু করার পরে, সেশনটি সার্ভারের সাথে মেসেজ আদানপ্রদান করতে পারে:
- Gemini সার্ভারে টেক্সট, অডিও বা ভিডিও পাঠান।
- Gemini সার্ভার থেকে অডিও, টেক্সট বা ফাংশন কল সংক্রান্ত অনুরোধ পান।
WebSocket কানেকশন
সেশন শুরু করতে, এই ওয়েবসকেট এন্ডপয়েন্টে কানেক্ট করুন:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent
সেশন কনফিগারেশন
WebSocket কানেকশন স্থাপন করার পরে পাঠানো প্রাথমিক মেসেজটি সেশন কনফিগারেশন সেট করে, যার মধ্যে মডেল, জেনারেশন প্যারামিটার, সিস্টেম নির্দেশাবলী এবং টুল অন্তর্ভুক্ত থাকে।
কানেকশন খোলা থাকাকালীন আপনি কনফিগারেশন আপডেট করতে পারবেন না। তবে, সেশন আবার চালু করার মেকানিজম-এর মাধ্যমে পজ ও আবার চালু করার সময়, মডেল ছাড়া আপনি কনফিগারেশন প্যারামিটার পরিবর্তন করতে পারবেন।
নিচে কনফিগারেশনের উদাহরণ দেখুন। মনে রাখবেন, SDK-তে নামের কেসিং আলাদা হতে পারে। আপনি Python SDK কনফিগারেশন বিকল্প এখানে দেখতে পারেন।
{
"model": string,
"generationConfig": {
"candidateCount": integer,
"maxOutputTokens": integer,
"temperature": number,
"topP": number,
"topK": integer,
"presencePenalty": number,
"frequencyPenalty": number,
"responseModalities": [string],
"speechConfig": object,
"mediaResolution": object,
"translationConfig": object
},
"systemInstruction": string,
"tools": [object]
}
API ফিল্ড সম্পর্কে আরও তথ্যের জন্য, generationConfig দেখুন।
বার্তা পাঠান
WebSocket কানেকশনের মাধ্যমে মেসেজ আদানপ্রদান করতে, ক্লায়েন্টকে অবশ্যই খোলা WebSocket কানেকশনের মাধ্যমে JSON অবজেক্ট পাঠাতে হবে। JSON অবজেক্টে নিম্নলিখিত অবজেক্ট সেট থেকে ঠিক একটি ফিল্ড থাকতে হবে:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
কাজ করে এমন ক্লায়েন্ট মেসেজ
নিচের সারণীতে কাজ করে এমন ক্লায়েন্ট মেসেজ দেখুন:
| মেসেজ | বিবরণ |
|---|---|
BidiGenerateContentSetup |
প্রথম মেসেজে সেশন কনফিগারেশন পাঠাতে হবে |
BidiGenerateContentClientContent |
ক্লায়েন্টের থেকে পাওয়া বর্তমান কথোপকথনের ইনক্রিমেন্টাল কন্টেন্ট আপডেট |
BidiGenerateContentRealtimeInput |
রিয়েল-টাইম অডিও, ভিডিও বা টেক্সট ইনপুট |
BidiGenerateContentToolResponse |
সার্ভারের থেকে পাওয়া ToolCallMessage-এর উত্তর |
মেসেজ পাওয়া
Gemini-র থেকে মেসেজ পেতে, WebSocket 'message' ইভেন্ট শুনুন, এবং তারপরে কাজ করে এমন সার্ভার মেসেজের সংজ্ঞা অনুযায়ী ফলাফল পার্স করুন।
এগুলি দেখুন:
async with client.aio.live.connect(model='...', config=config) as session:
await session.send(input='Hello world!', end_of_turn=True)
async for message in session.receive():
print(message)
সার্ভার মেসেজে usageMetadata ফিল্ড থাকতে পারে, তবে
BidiGenerateContentServerMessage
মেসেজ থেকে অন্য ফিল্ডের মধ্যে ঠিক একটি ফিল্ড অন্তর্ভুক্ত থাকবে। (messageType ইউনিয়ন JSON-এ প্রকাশ করা হয় না, তাই ফিল্ডটি মেসেজের
সবচেয়ে উপরের লেভেলে দেখা যাবে।)
মেসেজ ও ইভেন্ট
ActivityEnd
এই ধরনের কোনও ফিল্ড নেই।
ব্যবহারকারীর অ্যাক্টিভিটি শেষ হয়েছে বলে চিহ্নিত করে।
ActivityHandling
ব্যবহারকারীর অ্যাক্টিভিটি ম্যানেজ করার বিভিন্ন উপায়।
| Enums | |
|---|---|
ACTIVITY_HANDLING_UNSPECIFIED |
নির্দিষ্ট না করা থাকলে, ডিফল্ট আচরণ হল START_OF_ACTIVITY_INTERRUPTS। |
START_OF_ACTIVITY_INTERRUPTS |
সত্য হলে, অ্যাক্টিভিটি শুরু হলে মডেলের উত্তর দেওয়ার প্রসেস বাধা পাবে (এটি "বর্জ ইন" নামেও পরিচিত)। বাধা পাওয়ার সময় মডেলের বর্তমান উত্তরটি কেটে যাবে। এটি হল ডিফল্ট অ্যাকশন। |
NO_INTERRUPTION |
মডেলের উত্তর দেওয়ার সময় কোনও বাধা দেওয়া হবে না। |
ActivityStart
এই ধরনের কোনও ফিল্ড নেই।
ব্যবহারকারীর অ্যাক্টিভিটি শুরু হওয়ার সময়কে চিহ্নিত করে।
AudioTranscriptionConfig
অডিও ট্রান্সক্রিপশন কনফিগারেশন।
| ফিল্ড | |
|---|---|
languageCodes[] |
ঐচ্ছিক। BCP-47 ভাষা কোড অডিওতে উপস্থিত ভাষা সম্পর্কে ইঙ্গিত প্রদান করে। এটি বাদ দিলে বা খালি রাখলে, ডিফল্ট হিসেবে অটোমেটিক ভাষা শনাক্তকরণ ব্যবহার করা হয়। |
customVocabulary[] |
ঐচ্ছিক। নির্দিষ্ট শব্দ (প্রোডাক্টের নাম, বিশেষ্য, কঠিন পরিভাষা) শনাক্ত করার ব্যাপারে স্পিচ শনাক্তকরণ মডেলকে পক্ষপাতদুষ্ট করে তোলার জন্য কাস্টম শব্দভাণ্ডারের বাক্যাংশের তালিকা। |
wordTimestamp |
ঐচ্ছিক। শব্দ-লেভেল টাইমস্ট্যাম্প তৈরি করা কনফিগার করে। |
diarization |
ঐচ্ছিক। স্পিকার ডায়ারাইজেশন কনফিগার করে। |
mode |
ঐচ্ছিক। ট্রান্সক্রিপশন মোড কনফিগার করে। সাপোর্ট করা ভ্যালু: |
মোড
ট্রান্সক্রিপশন মোড।
| Enums | |
|---|---|
MODE_UNSPECIFIED |
অনুল্লিখিত ট্রান্সক্রিপশন মোড। |
VERBATIM |
আক্ষরিক ট্রান্সক্রিপশন মোড। |
SMART |
স্মার্ট ট্রান্সক্রিপশন মোড। |
AutomaticActivityDetection
অ্যাক্টিভিটি অটোমেটিক শনাক্ত করার সুবিধা কনফিগার করে।
| ফিল্ড | |
|---|---|
disabled |
ঐচ্ছিক। চালু করা থাকলে (ডিফল্ট), শনাক্ত করা ভয়েস ও টেক্সট ইনপুটকে অ্যাক্টিভিটি হিসেবে গণ্য করা হয়। বন্ধ করা থাকলে, ক্লায়েন্টকে অবশ্যই অ্যাক্টিভিটি সিগন্যাল পাঠাতে হবে। |
startOfSpeechSensitivity |
ঐচ্ছিক। স্পিচ শনাক্ত করার সম্ভাবনা কতটা তা নির্ধারণ করে। |
prefixPaddingMs |
ঐচ্ছিক। স্পিচ শুরু হওয়ার আগে শনাক্ত করা স্পিচের প্রয়োজনীয় সময়সীমা। এই মান যত কম হবে, স্পিচ শনাক্ত করার শুরুটা তত বেশি সংবেদনশীল হবে এবং ছোট ছোট স্পিচ শনাক্ত করা যাবে। তবে, এর ফলে ফলস পজিটিভের সম্ভাবনাও বেড়ে যায়। |
endOfSpeechSensitivity |
ঐচ্ছিক। শনাক্ত করা স্পিচ কতটা সম্ভাবনা নিয়ে শেষ হয়েছে তা নির্ধারণ করে। |
silenceDurationMs |
ঐচ্ছিক। স্পিচ শেষ হওয়ার আগে শনাক্ত করা স্পিচ নয় এমন কন্টেন্টের (যেমন, নীরবতা) প্রয়োজনীয় সময়সীমা। এই ভ্যালু যত বড় হবে, ব্যবহারকারীর অ্যাক্টিভিটি বাধা না দিয়েই স্পিচ গ্যাপ তত বেশি দীর্ঘ হতে পারবে, তবে এর ফলে মডেলের লেটেন্সি বেড়ে যাবে। |
BidiGenerateContentClientContent
ক্লায়েন্টের থেকে পাওয়া বর্তমান কথোপকথনের ইনক্রিমেন্টাল আপডেট। এখানে থাকা সব কন্টেন্ট কথোপকথনের ইতিহাসে শর্তহীনভাবে যোগ করা হয় এবং কন্টেন্ট তৈরি করার জন্য মডেলকে দেওয়া প্রম্পটের অংশ হিসেবে ব্যবহার করা হয়।
এখানে কোনও মেসেজ লিখলে, বর্তমান মডেল জেনারেশন বাধা পাবে।
| ফিল্ড | |
|---|---|
turns[] |
ঐচ্ছিক। মডেলের সাথে বর্তমান কথোপকথনে যোগ করা কন্টেন্ট। সিঙ্গেল-টার্ন কোয়েরির ক্ষেত্রে, এটি একটি সিঙ্গেল ইনস্ট্যান্স। মাল্টি-টার্ন কোয়েরির ক্ষেত্রে, এটি একটি রিপিট করা ফিল্ড যাতে কথোপকথনের ইতিহাস ও লেটেস্ট অনুরোধ থাকে। |
turnComplete |
ঐচ্ছিক। সত্য হলে, এটি ইঙ্গিত করে যে সার্ভার কন্টেন্ট জেনারেশনকে বর্তমানে জমা হওয়া প্রম্পট দিয়ে শুরু করতে হবে। অন্যথায়, জেনারেশন শুরু করার আগে সার্ভার অতিরিক্ত মেসেজের জন্য অপেক্ষা করে। |
BidiGenerateContentRealtimeInput
রিয়েল-টাইমে পাঠানো ব্যবহারকারীর ইনপুট।
বিভিন্ন মোডালিটি (অডিও, ভিডিও ও টেক্সট) কনকারেন্ট স্ট্রিম হিসেবে ম্যানেজ করা হয়। এইসব স্ট্রিম জুড়ে অর্ডার করার বিষয়টি নিশ্চিত করা যায় না।
এটি BidiGenerateContentClientContent থেকে কয়েকটি উপায়ে আলাদা:
- মডেল জেনারেশনে কোনও বাধা না দিয়েই একটানা পাঠানো যেতে পারে।
BidiGenerateContentClientContentএবংBidiGenerateContentRealtimeInputজুড়ে ইন্টারলিভ করা ডেটা মিক্স করার প্রয়োজন হলে, সার্ভার সেরা উত্তরের জন্য অপ্টিমাইজ করার চেষ্টা করে, তবে এর কোনও গ্যারান্টি নেই।- পালা শেষ হওয়ার বিষয়টি স্পষ্টভাবে উল্লেখ করা নেই, বরং ব্যবহারকারীর অ্যাক্টিভিটি থেকে তা বোঝা যায় (যেমন, বক্তব্য শেষ হওয়া)।
- এমনকি টার্ন শেষ হওয়ার আগেই, মডেলের থেকে দ্রুত উত্তর পাওয়ার জন্য ডেটা ইনক্রিমেন্টাল প্রসেস করা হয়।
| ফিল্ড | |
|---|---|
mediaChunks[] |
ঐচ্ছিক। মিডিয়া ইনপুটের জন্য ইনলাইন করা বাইট ডেটা। একাধিক পুরনো হয়ে গেছে: এর পরিবর্তে |
audio |
ঐচ্ছিক। এগুলি রিয়েল-টাইম অডিও ইনপুট স্ট্রিম তৈরি করে। |
video |
ঐচ্ছিক। এগুলি রিয়েল-টাইম ভিডিও ইনপুট স্ট্রিম তৈরি করে। |
activityStart |
ঐচ্ছিক। ব্যবহারকারীর অ্যাক্টিভিটি শুরু হওয়ার সময়কে চিহ্নিত করে। অটোমেটিক (অর্থাৎ, সার্ভার-সাইড) অ্যাক্টিভিটি শনাক্তকরণ বন্ধ করা থাকলে তবেই এটি পাঠানো যাবে। |
activityEnd |
ঐচ্ছিক। ব্যবহারকারীর অ্যাক্টিভিটি শেষ হয়েছে বলে চিহ্নিত করে। অটোমেটিক (অর্থাৎ, সার্ভার-সাইড) অ্যাক্টিভিটি শনাক্তকরণ বন্ধ করা থাকলে তবেই এটি পাঠানো যাবে। |
mediaResolution |
ঐচ্ছিক। ব্যবহার করার জন্য মিডিয়ার রেজোলিউশন। উল্লেখ করা না থাকলে, |
audioStreamEnd |
ঐচ্ছিক। এটি ইঙ্গিত করে যে অডিও স্ট্রিম শেষ হয়ে গেছে, যেমন, মাইক্রোফোন বন্ধ করে দেওয়া হয়েছে। অটোমেটিক অ্যাক্টিভিটি শনাক্তকরণ চালু থাকলে (যা ডিফল্ট হিসেবে থাকে) তবেই এটি পাঠানো উচিত। ক্লায়েন্ট অডিও মেসেজ পাঠিয়ে স্ট্রিম আবার খুলতে পারে। |
text |
ঐচ্ছিক। এগুলি রিয়েল-টাইম টেক্সট ইনপুট স্ট্রিম তৈরি করে। |
BidiGenerateContentServerContent
ক্লায়েন্টের মেসেজের উত্তরে মডেলের তৈরি করা ইনক্রিমেন্টাল সার্ভার আপডেট।
কন্টেন্ট যত দ্রুত সম্ভব জেনারেট করা হয়, তবে রিয়েল টাইমে নয়। ক্লায়েন্টরা চাইলে বাফার করতে এবং রিয়েল টাইমে চালাতে পারেন।
| ফিল্ড | |
|---|---|
generationComplete |
শুধুমাত্র আউটপুট। সত্য হলে, এটি বোঝায় যে মডেলের জেনারেশন প্রসেস সম্পূর্ণ হয়ে গেছে। জেনারেট করার সময় মডেল বাধা পেলে, বাধা পাওয়া টার্নে কোনও 'generation_complete' মেসেজ থাকবে না, এটি 'interrupted > turn_complete' প্রসেসের মধ্যে দিয়ে যাবে। মডেল যখন রিয়েলটাইম প্লেব্যাক অনুমান করে, তখন generation_complete এবং turn_complete-এর মধ্যে বিলম্ব হবে যা প্লেব্যাক শেষ হওয়ার জন্য মডেলের অপেক্ষা করার কারণে ঘটে। |
turnComplete |
শুধুমাত্র আউটপুট। সত্য হলে, এটি বোঝায় যে মডেলটি তার পালা সম্পূর্ণ করেছে। অতিরিক্ত ক্লায়েন্ট মেসেজের উত্তর হিসেবেই শুধু জেনারেশন শুরু হবে। মনে রাখবেন, প্লেব্যাক স্ট্যাটাস রিপোর্টিং চালু করা থাকলে, প্লেব্যাক স্ট্যাটাস প্লেব্যাক সম্পূর্ণ হয়েছে বলে ইঙ্গিত করলেই শুধুমাত্র এটি এমিট করা হয়। একই জেনারেশনের ভবিষ্যতের প্লেব্যাক স্ট্যাটাস উপেক্ষা করা হবে। |
interrupted |
শুধুমাত্র আউটপুট। সত্য হলে, এটি ইঙ্গিত করে যে ক্লায়েন্ট মেসেজ বর্তমান মডেল জেনারেশনে বাধা দিয়েছে। ক্লায়েন্ট যদি রিয়েল-টাইমে কন্টেন্ট প্লে করে, তাহলে এটি একটি ভাল সিগন্যাল যা বর্তমান প্লেব্যাক সারি বন্ধ করে খালি করে দেয়। |
groundingMetadata |
শুধুমাত্র আউটপুট। জেনারেট করা কন্টেন্টের জন্য গ্রাউন্ডিং মেটাডেটা। |
inputTranscription |
শুধুমাত্র আউটপুট। ইনপুট অডিও ট্রান্সক্রিপশন। ট্রান্সক্রিপশন অন্যান্য সার্ভার মেসেজ থেকে আলাদাভাবে পাঠানো হয় এবং কোনও নির্দিষ্ট ক্রমে পাঠানো হয় না। |
interimInputTranscription |
শুধুমাত্র আউটপুট। ব্যবহারকারী কথা বলার সময় কম লেটেন্সি ট্রান্সক্রিপশন আপডেট করা হয়। এই ফিল্ডটি ঘন ঘন আপডেট করা হয়। |
outputTranscription |
শুধুমাত্র আউটপুট। আউটপুট অডিও ট্রান্সক্রিপশন। এইসব ট্রান্সক্রিপশন হল সার্ভারের জেনারেশন আউটপুটের অংশ। |
urlContextMetadata |
|
waitingForInput |
শুধুমাত্র আউটপুট। এটি 'true' হলে, বুঝতে হবে যে মডেলটি কন্টেন্ট তৈরি করছে না কারণ এটি ব্যবহারকারীর থেকে আরও ইনপুট পাওয়ার জন্য অপেক্ষা করছে, যেমন, এটি আশা করছে যে ব্যবহারকারী কথা বলা চালিয়ে যাবেন। |
interactionStatus |
শুধুমাত্র আউটপুট। লাইভ সেশনের বর্তমান অ্যাক্টিভিটি স্ট্যাটাস। |
modelTurn |
শুধুমাত্র আউটপুট। ব্যবহারকারীর সাথে বর্তমান কথোপকথনের অংশ হিসেবে মডেলের তৈরি করা কন্টেন্ট। |
BidiGenerateContentServerMessage
BidiGenerateContent কলের জন্য উত্তর মেসেজ।
| ফিল্ড | |
|---|---|
usageMetadata |
শুধুমাত্র আউটপুট। উত্তর সম্পর্কিত ব্যবহার সংক্রান্ত মেটাডেটা। |
voiceActivity |
শুধুমাত্র আউটপুট। অডিও স্ট্রিমে ভয়েস অ্যাক্টিভিটি শনাক্ত করা হয়েছে। |
ইউনিয়ন ফিল্ড messageType। মেসেজের ধরন। messageType শুধুমাত্র নিম্নলিখিতগুলির মধ্যে একটি হতে পারে: |
|
setupComplete |
শুধুমাত্র আউটপুট। সেট-আপ সম্পূর্ণ হয়ে গেলে ক্লায়েন্টের |
serverContent |
শুধুমাত্র আউটপুট। ক্লায়েন্টের মেসেজের উত্তরে মডেলের তৈরি করা কন্টেন্ট। |
toolCall |
শুধুমাত্র আউটপুট। ক্লায়েন্টকে |
toolCallCancellation |
শুধুমাত্র আউটপুট। ক্লায়েন্টকে বিজ্ঞপ্তি দিয়ে জানানো যে নির্দিষ্ট |
goAway |
শুধুমাত্র আউটপুট। সার্ভার শীঘ্রই ডিসকানেক্ট হয়ে যাবে, এমন বিজ্ঞপ্তি। |
sessionResumptionUpdate |
শুধুমাত্র আউটপুট। সেশন আবার শুরু করার স্ট্যাটাস আপডেট। |
BidiGenerateContentSetup
প্রথম BidiGenerateContentClientMessage-এ (এবং শুধুমাত্র প্রথম BidiGenerateContentClientMessage-এ) মেসেজ পাঠাতে হবে। স্ট্রিমিং RPC চলাকালীন প্রযোজ্য হবে এমন কনফিগারেশন থাকে।
ক্লায়েন্টদের অতিরিক্ত মেসেজ পাঠানোর আগে BidiGenerateContentSetupComplete মেসেজের জন্য অপেক্ষা করা উচিত।
| ফিল্ড | |
|---|---|
model |
প্রয়োজনীয়। মডেলের রিসোর্স নাম। এটি মডেলের ব্যবহার করার জন্য আইডি হিসেবে কাজ করে। ফর্ম্যাট: |
generationConfig |
ঐচ্ছিক। জেনারেট করার কনফিগারেশন। নিম্নলিখিত ফিল্ড কাজ করে না:
|
systemInstruction |
ঐচ্ছিক। ব্যবহারকারী মডেলের জন্য সিস্টেম নির্দেশাবলী দিয়েছেন। মনে রাখবেন: পার্টে শুধুমাত্র টেক্সট ব্যবহার করা যাবে এবং প্রতিটি পার্টের কন্টেন্ট আলাদা আলাদা প্যারাগ্রাফে থাকবে। |
tools[] |
ঐচ্ছিক। পরবর্তী উত্তর জেনারেট করার জন্য মডেলটি ব্যবহার করতে পারে এমন
|
realtimeInputConfig |
ঐচ্ছিক। রিয়েলটাইম ইনপুট হ্যান্ডেল করার বিষয়টি কনফিগার করে। |
sessionResumption |
ঐচ্ছিক। সেশন আবার চালু করার মেকানিজম কনফিগার করে। অন্তর্ভুক্ত করা হলে, সার্ভার |
contextWindowCompression |
ঐচ্ছিক। কন্টেক্সট উইন্ডো কম্প্রেশন মেকানিজম কনফিগার করে। অন্তর্ভুক্ত করা হলে, কনফিগার করা দৈর্ঘ্য অতিক্রম করলে সার্ভার অটোমেটিক প্রসঙ্গ ছোট করে দেবে। |
inputAudioTranscription |
ঐচ্ছিক। সেট করা থাকলে, ভয়েস ইনপুট ট্রান্সক্রিপশন চালু করে। কনফিগার করা থাকলে, ট্রান্সক্রিপশন ইনপুট অডিও ভাষার সাথে মানানসই হয়। |
outputAudioTranscription |
ঐচ্ছিক। সেট করা থাকলে, মডেলের অডিও আউটপুটের ট্রান্সক্রিপশন চালু করে। কনফিগার করা থাকলে, আউটপুট অডিওর জন্য নির্দিষ্ট করা ভাষা কোডের সাথে ট্রান্সক্রিপশন অ্যালাইন করে। |
proactivity |
ঐচ্ছিক। মডেলের প্রোঅ্যাক্টিভিটি কনফিগার করে। এটি মডেলকে ইনপুটের ব্যাপারে আগে থেকে উত্তর দিতে এবং অপ্রাসঙ্গিক ইনপুট উপেক্ষা করতে সাহায্য করে। |
historyConfig |
ঐচ্ছিক। ক্লায়েন্ট ও সার্ভারের মধ্যে ইতিহাস এক্সচেঞ্জ করার বিষয়টি কনফিগার করে। |
labels |
ঐচ্ছিক। অনুরোধের জন্য ব্যবহারকারীর সংজ্ঞায়িত মেটাডেটা সহ লেবেল। ঐচ্ছিক। লেবেলকে অবশ্যই স্ট্যান্ডার্ড ইউনিফায়েড ক্লাউড লেবেল সংক্রান্ত প্রয়োজনীয়তা মেনে চলতে হবে: - লেবেল কী অবশ্যই অক্ষর দিয়ে শুরু হতে হবে। - লেবেল কী ও ভ্যালু ৬৩ অক্ষরের (Unicode কোডপয়েন্ট) বেশি হওয়া চলবে না এবং এতে শুধুমাত্র ছোট হাতের অক্ষর, সংখ্যা, আন্ডারস্কোর ও ড্যাশ থাকতে পারে। - আন্তর্জাতিক অক্ষর ব্যবহার করা যাবে। ব্যবহার: - অ্যাগ্রিগেটরদের থেকে পাওয়া নিরাপত্তা শনাক্তকারী: |
BidiGenerateContentSetupComplete
এই ধরনের কোনও ফিল্ড নেই।
ক্লায়েন্টের পাঠানো BidiGenerateContentSetup মেসেজের উত্তরে পাঠানো হয়েছে।
BidiGenerateContentToolCall
ক্লায়েন্টকে functionCalls এক্সিকিউট করতে এবং ম্যাচ করা id সহ উত্তরগুলি ফেরত দিতে অনুরোধ করুন।
| ফিল্ড | |
|---|---|
functionCalls[] |
শুধুমাত্র আউটপুট। যে ফাংশন কল এক্সিকিউট করতে হবে। |
BidiGenerateContentToolCallCancellation
ক্লায়েন্টকে বিজ্ঞপ্তি দিয়ে জানানো যে আগে ইস্যু করা ToolCallMessage-এ উল্লেখ করা id এক্সিকিউট করা উচিত ছিল না এবং এটি বাতিল করা উচিত। টুল কলের কোনও পার্শ্বপ্রতিক্রিয়া থাকলে, ক্লায়েন্ট টুল কল আগের অবস্থায় ফিরিয়ে আনার চেষ্টা করতে পারে। ক্লায়েন্ট সার্ভারের পালা বাধা দিলে তবেই এই মেসেজটি দেখানো হয়।
| ফিল্ড | |
|---|---|
ids[] |
শুধুমাত্র আউটপুট। বাতিল করতে হবে এমন টুল কলের আইডি। |
BidiGenerateContentToolResponse
সার্ভার থেকে পাওয়া ToolCall-এর জন্য ক্লায়েন্ট উত্তর জেনারেট করেছে। id ফিল্ডের মাধ্যমে আলাদা আলাদা FunctionResponse অবজেক্টকে সংশ্লিষ্ট FunctionCall অবজেক্টের সাথে ম্যাচ করা হয়।
মনে রাখবেন, unary ও সার্ভার-স্ট্রিমিং GenerateContent API-তে Content পার্ট এক্সচেঞ্জ করার মাধ্যমে ফাংশন কলিং হয়, অন্যদিকে bidi GenerateContent API-তে মেসেজের এই নির্দিষ্ট সেটের মাধ্যমে ফাংশন কলিং হয়।
| ফিল্ড | |
|---|---|
functionResponses[] |
ঐচ্ছিক। ফাংশন কলের উত্তর। |
BidiGenerateContentTranscription
অডিওর ট্রান্সক্রিপশন (ইনপুট বা আউটপুট)।
| ফিল্ড | |
|---|---|
text |
ট্রান্সক্রিপশন টেক্সট। |
languageCode |
ট্রান্সক্রিপশনের BCP-47 ভাষা কোড। |
startOffset |
ঐচ্ছিক। অডিও শুরুর সাপেক্ষে ট্রান্সক্রিপশনের সময় শুরু অফসেট। |
endOffset |
ঐচ্ছিক। অডিওর শুরু থেকে ট্রান্সক্রিপশনের শেষ পর্যন্ত অফসেট। |
ContextWindowCompressionConfig
কনটেক্সট উইন্ডো কম্প্রেশন চালু করে — এটি মডেলের কনটেক্সট উইন্ডো ম্যানেজ করার একটি মেকানিজম, যাতে এটি নির্দিষ্ট দৈর্ঘ্যের বেশি না হয়।
| ফিল্ড | |
|---|---|
ইউনিয়ন ফিল্ড compressionMechanism। ব্যবহৃত কন্টেক্সট উইন্ডো কম্প্রেশন মেকানিজম। compressionMechanism শুধুমাত্র নিম্নলিখিতগুলির মধ্যে একটি হতে পারে: |
|
slidingWindow |
স্লাইডিং-উইন্ডো মেকানিজম। |
triggerTokens |
কনটেক্সট উইন্ডো কম্প্রেশন ট্রিগার করার জন্য প্রয়োজনীয় টোকেনের সংখ্যা (টার্ন চালানোর আগে)। এটি লেটেন্সির বিপরীতে কোয়ালিটি ব্যালেন্স করতে ব্যবহার করা যেতে পারে, কারণ ছোট কনটেক্সট উইন্ডো ব্যবহার করলে মডেলের উত্তর দেওয়ার সময় কম লাগতে পারে। তবে, কোনও কম্প্রেশন অপারেশন সাময়িকভাবে লেটেন্সি বাড়িয়ে দেয়, তাই সেগুলি ঘন ঘন ট্রিগার করা উচিত নয়। সেট করা না থাকলে, মডেলের কনটেক্সট উইন্ডো সীমার ৮০% ডিফল্ট হিসেবে সেট করা হয়। এর ফলে পরবর্তী ব্যবহারকারীর অনুরোধ/মডেল উত্তরের জন্য ২০% জায়গা খালি থাকে। |
EndSensitivity
স্পিচ শেষ হয়েছে কিনা তা কীভাবে শনাক্ত করা হবে তা নির্ধারণ করে।
| Enums | |
|---|---|
END_SENSITIVITY_UNSPECIFIED |
ডিফল্ট হল END_SENSITIVITY_HIGH. |
END_SENSITIVITY_HIGH |
অটোমেটিক শনাক্তকরণ স্পিচকে আরও বেশি বার শেষ করে দেয়। |
END_SENSITIVITY_LOW |
অটোমেটিক শনাক্তকরণ কমই স্পিচ শেষ করে। |
GoAway
সার্ভার শীঘ্রই ডিসকানেক্ট হয়ে যাবে, এমন বিজ্ঞপ্তি।
| ফিল্ড | |
|---|---|
timeLeft |
কানেকশন ABORTED হিসেবে চিহ্নিত করার আগে বাকি থাকা সময়। এই সময়সীমা কখনই মডেল-নির্দিষ্ট সর্বনিম্ন সময়ের থেকে কম হবে না, যা মডেলের জন্য রেট লিমিটের সাথে একসাথে নির্দিষ্ট করা হবে। |
HistoryConfig
ইতিহাসের কনফিগারেশন।
এই মেসেজটি সেশন কনফিগারেশনে BidiGenerateContentSetup.historyConfig হিসেবে অন্তর্ভুক্ত করা হয়েছে। ইতিহাস মেসেজ আদানপ্রদান করার বিষয়টি কনফিগার করে।
| ফিল্ড | |
|---|---|
initialHistoryInClientContent |
ঐচ্ছিক। সত্য হলে, |
InteractionStatus
লাইভ সেশনের বিভিন্ন অ্যাক্টিভিটি স্টেট। সার্ভার সমস্ত প্রসেসিং সম্পূর্ণ করেছে কিনা তা বোঝাতে এই ফিল্ডটি সবসময় turnComplete-এর সাথে একসাথে পাঠানো হয়।
| Enums | |
|---|---|
INTERACTION_STATUS_UNSPECIFIED |
ইন্টার্যাকশনের স্ট্যাটাস উল্লেখ করা নেই। |
IN_PROGRESS |
সার্ভার এখনও ব্যবহারকারীর ইনপুট প্রসেস করছে বা ব্যাকগ্রাউন্ডে যুক্তি প্রয়োগ করছে। আরও মডেল আউটপুট দেখানো হতে পারে। |
REQUIRES_ACTION |
বন্ধ করা হয়েছে: এর পরিবর্তে IDLE ব্যবহার করুন। |
IDLE |
সার্ভার সব প্রসেসিং ও ব্যাকগ্রাউন্ড রিজনিং সম্পূর্ণ করেছে। |
ProactivityConfig
প্রোঅ্যাক্টিভিটি ফিচারের জন্য কনফিগারেশন।
| ফিল্ড | |
|---|---|
proactiveAudio |
ঐচ্ছিক। চালু করা থাকলে, মডেলটি শেষ প্রম্পটের উত্তর দিতে অস্বীকার করতে পারে। যেমন, এটি মডেলকে প্রসঙ্গ বহির্ভূত কথা উপেক্ষা করতে বা ব্যবহারকারী এখনও কোনও অনুরোধ না করে থাকলে চুপ করে থাকতে দেয়। |
RealtimeInputConfig
BidiGenerateContent-এ রিয়েল-টাইম ইনপুট আচরণ কনফিগার করে।
| ফিল্ড | |
|---|---|
automaticActivityDetection |
ঐচ্ছিক। সেট করা না থাকলে, ডিফল্ট হিসেবে অটোমেটিক অ্যাক্টিভিটি শনাক্তকরণ চালু থাকে। অটোমেটিক ভয়েস শনাক্তকরণ বন্ধ করা থাকলে, ক্লায়েন্টকে অ্যাক্টিভিটি সিগন্যাল পাঠাতে হবে। |
activityHandling |
ঐচ্ছিক। অ্যাক্টিভিটির প্রভাব কী তা নির্ধারণ করে। |
turnCoverage |
ঐচ্ছিক। ব্যবহারকারীর টার্নে কোন ইনপুট অন্তর্ভুক্ত করা হবে তা নির্ধারণ করে। |
interimTranscriptTimestampEnabled |
ঐচ্ছিক। অন্তর্বর্তীকালীন ট্রানস্ক্রিপ্টের টাইমস্ট্যাম্প কনফিগার করে। |
SessionResumptionConfig
সেশন আবার চালু করার কনফিগারেশন।
এই মেসেজটি সেশন কনফিগারেশনে BidiGenerateContentSetup.sessionResumption হিসেবে অন্তর্ভুক্ত করা হয়েছে। কনফিগার করা থাকলে, সার্ভার SessionResumptionUpdate মেসেজ পাঠাবে।
| ফিল্ড | |
|---|---|
handle |
আগের সেশনের হ্যান্ডেল। সেটি না থাকলে, একটি নতুন সেশন তৈরি করা হয়। আগের কানেকশনের |
SessionResumptionUpdate
সেশন আবার শুরু করার স্ট্যাটাস আপডেট।
BidiGenerateContentSetup.sessionResumption সেট করা থাকলে তবেই পাঠানো হয়।
| ফিল্ড | |
|---|---|
newHandle |
নতুন হ্যান্ডেল যা এমন একটি স্টেটকে উপস্থাপন করে যা আবার চালু করা যেতে পারে। |
resumable |
বর্তমান সেশন এই পয়েন্টে আবার চালু করা গেলে, এর মান 'সত্য' হবে। সেশনের কিছু পয়েন্টে আবার শুরু করা সম্ভব নয়। যেমন, মডেল যখন ফাংশন কল এক্সিকিউট করছে বা জেনারেট করছে। এই ধরনের অবস্থায় সেশন আবার চালু করলে (পুরনো সেশন টোকেন ব্যবহার করে) কিছু ডেটা হারিয়ে যেতে পারে। এইসব ক্ষেত্রে, |
SlidingWindow
স্লাইডিং উইন্ডো পদ্ধতি কন্টেক্সট উইন্ডোর শুরুতে কন্টেন্ট বাদ দিয়ে কাজ করে। ফলাফলস্বরূপ প্রসঙ্গ সবসময় ব্যবহারকারীর রোল টার্নের শুরুতেই শুরু হবে। সিস্টেম নির্দেশাবলী এবং যেকোনও BidiGenerateContentSetup.prefixTurns সবসময় ফলাফলের শুরুতে থাকবে।
| ফিল্ড | |
|---|---|
targetTokens |
যতগুলি টোকেন রাখতে হবে তার টার্গেট সংখ্যা। ডিফল্ট ভ্যালু হল trigger_tokens/2. কনটেক্সট উইন্ডোর অংশ বাদ দিলে সাময়িক লেটেন্সি বেড়ে যায়, তাই ঘন ঘন কম্প্রেশন অপারেশন এড়াতে এই ভ্যালু ক্যালিব্রেট করা উচিত। |
StartSensitivity
স্পিচ শুরু হওয়া কীভাবে শনাক্ত করা হবে তা নির্ধারণ করে।
| Enums | |
|---|---|
START_SENSITIVITY_UNSPECIFIED |
ডিফল্ট মান হল START_SENSITIVITY_HIGH. |
START_SENSITIVITY_HIGH |
অটোমেটিক শনাক্তকরণ, স্পিচের শুরু আরও ঘন ঘন শনাক্ত করবে। |
START_SENSITIVITY_LOW |
অটোমেটিক শনাক্তকরণ ফিচার স্পিচের শুরু কম শনাক্ত করবে। |
TurnCoverage
ব্যবহারকারীর টার্নে কোন ইনপুট অন্তর্ভুক্ত করা হবে সেই সংক্রান্ত বিকল্প।
| Enums | |
|---|---|
TURN_COVERAGE_UNSPECIFIED |
নির্দিষ্ট না করা থাকলে, মডেলের উপর ভিত্তি করে ডিফল্ট আচরণ বেছে নেওয়া হয়। যেমন, Gemini 2.5-এর জন্য ডিফল্ট হল TURN_INCLUDES_ONLY_ACTIVITY, তবে Gemini 3.1 ও তার পরের যেকোনও ভার্সনের জন্য এটি হল TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO। |
TURN_INCLUDES_ONLY_ACTIVITY |
শেষবার বলার পর থেকে হওয়া অ্যাক্টিভিটি অন্তর্ভুক্ত থাকে, তবে নিষ্ক্রিয়তা (যেমন, অডিও স্ট্রিমে কোনও শব্দ না থাকা) বাদ দেওয়া হয়। |
TURN_INCLUDES_ALL_INPUT |
শেষ টার্ন থেকে সমস্ত রিয়েল-টাইম ইনপুট অন্তর্ভুক্ত করে, যার মধ্যে নিষ্ক্রিয়তাও রয়েছে (যেমন, অডিও স্ট্রিমে নীরবতা)। |
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO |
শেষবার টার্ন নেওয়ার পর থেকে অডিও অ্যাক্টিভিটি ও সব ভিডিও অন্তর্ভুক্ত। অটোমেটিক অ্যাক্টিভিটি শনাক্তকরণের মাধ্যমে, অডিও অ্যাক্টিভিটি বলতে স্পিচ বোঝায় এবং এর মধ্যে নীরবতা অন্তর্ভুক্ত থাকে না। |
TranslationConfig
অনুবাদ ফিচারের জন্য কনফিগারেশন।
| ফিল্ড | |
|---|---|
targetLanguageCode |
প্রয়োজনীয়। অনুবাদনের জন্য টার্গেট ভাষা। BCP-47 ভাষা কোড (যেমন, "en", "es", "fr") ব্যবহার করা যায়। |
echoTargetLanguage |
ঐচ্ছিক। এটি 'ট্রু' হলে, টার্গেট ভাষা বলা হলে মডেল অডিও জেনারেট করবে, মূলত এটি ইনপুটকে অনুকরণ করবে। ফলস হলে, আমরা টার্গেট ভাষার জন্য অডিও তৈরি করব না। |
UrlContextMetadata
URL কন্টেক্সট রিট্রিভাল টুল সম্পর্কিত মেটাডেটা।
| ফিল্ড | |
|---|---|
urlMetadata[] |
URL কন্টেক্সটের তালিকা। |
UsageMetadata
উত্তর সম্পর্কিত ব্যবহার সংক্রান্ত মেটাডেটা।
| ফিল্ড | |
|---|---|
promptTokenCount |
শুধুমাত্র আউটপুট। প্রম্পটে টোকেনের সংখ্যা। |
cachedContentTokenCount |
প্রম্পটের ক্যাশে করা অংশে (ক্যাশে করা কন্টেন্ট) টোকেনের সংখ্যা |
responseTokenCount |
শুধুমাত্র আউটপুট। জেনারেট করা সম্ভাব্য উত্তর জুড়ে টোকেনের মোট সংখ্যা। |
toolUsePromptTokenCount |
শুধুমাত্র আউটপুট। টুল-ব্যবহার সংক্রান্ত প্রম্পটে টোকেনের সংখ্যা। |
thoughtsTokenCount |
শুধুমাত্র আউটপুট। থিঙ্কিং মডেলের জন্য চিন্তাভাবনার টোকেনের সংখ্যা। |
totalTokenCount |
শুধুমাত্র আউটপুট। জেনারেট করার অনুরোধের জন্য মোট টোকেনের সংখ্যা (প্রম্পট + সম্ভাব্য উত্তর)। |
promptTokensDetails[] |
শুধুমাত্র আউটপুট। অনুরোধ ইনপুটে প্রসেস করা মোডালিটির তালিকা। |
cacheTokensDetails[] |
শুধুমাত্র আউটপুট। অনুরোধ ইনপুটে ক্যাশে করা কন্টেন্টের মোডালিটির তালিকা। |
responseTokensDetails[] |
শুধুমাত্র আউটপুট। উত্তরে ফেরত দেওয়া মোডালিটির তালিকা। |
toolUsePromptTokensDetails[] |
শুধুমাত্র আউটপুট। টুল-ব্যবহারের অনুরোধ ইনপুটের জন্য প্রসেস করা মোডালিটির তালিকা। |
VoiceActivity
অডিও স্ট্রিমে ভয়েস অ্যাক্টিভিটি শনাক্ত করা হয়েছে।
| ফিল্ড | |
|---|---|
type |
শুধুমাত্র আউটপুট। VAD(ভয়েস অ্যাক্টিভিটি শনাক্তকরণ) সিগন্যালের ধরন। |
audioOffset |
শুধুমাত্র আউটপুট। অডিও স্ট্রিম শুরু হওয়ার সময় থেকে অডিও টাইমে ভয়েস অ্যাক্টিভিটি শনাক্ত করার সময়। |
ধরন
VAD সিগন্যালের ধরন।
| Enums | |
|---|---|
TYPE_UNSPECIFIED |
ডিফল্ট হল UNSPECIFIED. |
ACTIVITY_START |
বাক্যের শুরুতে সিগন্যাল। |
ACTIVITY_END |
বাক্যের শেষে ব্যবহৃত চিহ্ন। |
ক্ষণস্থায়ী যাচাইকরণ টোকেন
এফিমেরাল যাচাইকরণ টোকেন
AuthTokenService.CreateToken কল করে পাওয়া যেতে পারে এবং তারপরে
GenerativeService.BidiGenerateContentConstrained-এর সাথে ব্যবহার করা যেতে পারে, টোকেনটি
access_token কোয়েরি প্যারামিটারে অথবা HTTP Authorization হেডারে
"Token" প্রিফিক্স সহ পাস করে এটি করা যেতে পারে।
CreateAuthTokenRequest
ক্ষণস্থায়ী যাচাইকরণ টোকেন তৈরি করুন।
| ফিল্ড | |
|---|---|
authToken |
প্রয়োজনীয়। তৈরি করার টোকেন। |
AuthToken
ক্ষণস্থায়ী যাচাইকরণ টোকেন তৈরি করার অনুরোধ।
| ফিল্ড | |
|---|---|
name |
শুধুমাত্র আউটপুট। আইডেন্টিফায়ার। টোকেনটি। |
expireTime |
ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যায় না। একটি ঐচ্ছিক সময় যার পরে, ফলাফল টোকেন ব্যবহার করার সময়, BidiGenerateContent সেশনের মেসেজ বাতিল করা হবে। (Gemini এই সময়ের পরে সেশনটি আগে থেকেই বন্ধ করে দিতে পারে।) সেট করা না থাকলে, এটি ডিফল্ট হিসেবে ভবিষ্যতে ৩০ মিনিট সেট হয়ে যায়। সেট করা থাকলে, এই ভ্যালু অবশ্যই ভবিষ্যতে ২০ ঘণ্টার কম হতে হবে। |
newSessionExpireTime |
ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যায় না। এই অনুরোধের ফলে পাওয়া টোকেন ব্যবহার করে নতুন Live API সেশন শুরু করলে, কতক্ষণ পরে তা বাতিল করা হবে। এটি সেট করা না থাকলে, ভবিষ্যতে ডিফল্ট হিসেবে ৬০ সেকেন্ড সেট হয়ে যাবে। সেট করা থাকলে, এই ভ্যালু অবশ্যই ভবিষ্যতে ২০ ঘণ্টার কম হতে হবে। |
fieldMask |
ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যায় না। field_mask খালি থাকলে এবং field_mask খালি থাকলে এবং field_mask খালি না থাকলে, Live API কানেকশনে সেট-আপ মেসেজের ফিল্ড |
ইউনিয়ন ফিল্ড config। ফলাফল হিসেবে প্রাপ্ত টোকেনের জন্য পদ্ধতি-নির্দিষ্ট কনফিগারেশন। config শুধুমাত্র নিম্নলিখিতগুলির মধ্যে একটি হতে পারে: |
|
bidiGenerateContentSetup |
ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যায় না। |
uses |
ঐচ্ছিক। শুধুমাত্র ইনপুট। পরিবর্তন করা যায় না। টোকেনটি কতবার ব্যবহার করা যাবে। এই ভ্যালু শূন্য হলে কোনও সীমা প্রয়োগ করা হয় না। Live API সেশন আবার চালু করাকে ব্যবহার হিসেবে গণ্য করা হয় না। নির্দিষ্ট করা না থাকলে, ডিফল্ট মান হল ১। |
সাধারণ ধরন সম্পর্কে আরও তথ্য
সাধারণত ব্যবহৃত API রিসোর্স টাইপ Blob,
Content, FunctionCall, FunctionResponse, GenerationConfig,
GroundingMetadata, ModalityTokenCount এবং Tool সম্পর্কে আরও জানতে,
কন্টেন্ট তৈরি করা দেখুন।