লাইভ এপিআই হলো একটি স্টেটফুল এপিআই যা ওয়েবসকেটস ব্যবহার করে। এই অংশে আপনি ওয়েবসকেটস এপিআই সম্পর্কে আরও বিস্তারিত তথ্য পাবেন।
অধিবেশন
একটি ওয়েবসকেট সংযোগ ক্লায়েন্ট এবং জেমিনি সার্ভারের মধ্যে একটি সেশন স্থাপন করে। ক্লায়েন্ট একটি নতুন সংযোগ শুরু করার পর, সেশনটি সার্ভারের সাথে নিম্নলিখিত উদ্দেশ্যে বার্তা আদান-প্রদান করতে পারে:
- জেমিনি সার্ভারে টেক্সট, অডিও বা ভিডিও পাঠান।
- জেমিনি সার্ভার থেকে অডিও, টেক্সট বা ফাংশন কল অনুরোধ গ্রহণ করুন।
ওয়েবসকেট সংযোগ
একটি সেশন শুরু করতে, এই ওয়েবসকেট এন্ডপয়েন্টে সংযোগ করুন:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent
সেশন কনফিগারেশন
WebSocket সংযোগ স্থাপনের পর পাঠানো প্রাথমিক বার্তাটি সেশন কনফিগারেশন নির্ধারণ করে, যার মধ্যে মডেল, জেনারেশন প্যারামিটার, সিস্টেম নির্দেশাবলী এবং টুলস অন্তর্ভুক্ত থাকে।
সংযোগ খোলা থাকা অবস্থায় আপনি কনফিগারেশন আপডেট করতে পারবেন না। তবে, সেশন রিজাম্পশন মেকানিজমের মাধ্যমে সেশন পজ ও রিজুম করার সময় আপনি মডেল ছাড়া অন্যান্য কনফিগারেশন প্যারামিটারগুলো পরিবর্তন করতে পারবেন।
নিম্নলিখিত উদাহরণ কনফিগারেশনটি দেখুন। মনে রাখবেন যে SDK-গুলিতে নামের কেসিং ভিন্ন হতে পারে। আপনি এখানে পাইথন SDK কনফিগারেশন অপশনগুলো দেখে নিতে পারেন।
{
"model": string,
"generationConfig": {
"candidateCount": integer,
"maxOutputTokens": integer,
"temperature": number,
"topP": number,
"topK": integer,
"presencePenalty": number,
"frequencyPenalty": number,
"responseModalities": [string],
"speechConfig": object,
"mediaResolution": object
},
"systemInstruction": string,
"tools": [object]
}
API ফিল্ড সম্পর্কে আরও তথ্যের জন্য, generationConfig দেখুন।
বার্তা পাঠান
WebSocket সংযোগের মাধ্যমে বার্তা আদান-প্রদান করতে, ক্লায়েন্টকে একটি খোলা WebSocket সংযোগের মাধ্যমে একটি JSON অবজেক্ট পাঠাতে হবে। JSON অবজেক্টটিতে নিম্নলিখিত অবজেক্ট সেট থেকে ঠিক একটি ফিল্ড থাকতে হবে:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
সমর্থিত ক্লায়েন্ট বার্তা
নিম্নলিখিত সারণীতে সমর্থিত ক্লায়েন্ট বার্তাগুলি দেখুন:
| বার্তা | বর্ণনা |
|---|---|
BidiGenerateContentSetup | প্রথম মেসেজে সেশন কনফিগারেশন পাঠানো হবে। |
BidiGenerateContentClientContent | ক্লায়েন্টের কাছ থেকে প্রাপ্ত বর্তমান কথোপকথনের পর্যায়ক্রমিক বিষয়বস্তু হালনাগাদ। |
BidiGenerateContentRealtimeInput | রিয়েল টাইম অডিও, ভিডিও, বা টেক্সট ইনপুট |
BidiGenerateContentToolResponse | সার্ভার থেকে প্রাপ্ত ToolCallMessage এর প্রতিক্রিয়া |
বার্তা গ্রহণ করুন
জেমিনি থেকে বার্তা গ্রহণ করতে, ওয়েবসকেট '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-এ প্রকাশ করা হয় না, তাই ফিল্ডটি মেসেজের শীর্ষ-স্তরে প্রদর্শিত হবে।)
বার্তা এবং ঘটনা
কার্যকলাপ শেষ
এই প্রকারে কোনো ক্ষেত্র নেই।
ব্যবহারকারীর কার্যকলাপের সমাপ্তি নির্দেশ করে।
কার্যকলাপ পরিচালনা
ব্যবহারকারীর কার্যকলাপ পরিচালনার বিভিন্ন উপায়।
| এনাম | |
|---|---|
ACTIVITY_HANDLING_UNSPECIFIED | অনির্দিষ্ট থাকলে, ডিফল্ট আচরণ হলো START_OF_ACTIVITY_INTERRUPTS । |
START_OF_ACTIVITY_INTERRUPTS | যদি সত্য হয়, তাহলে কার্যকলাপ শুরু হলে মডেলের প্রতিক্রিয়া বাধাগ্রস্ত হবে (একে "বার্জ ইন"ও বলা হয়)। বাধাগ্রস্ত হওয়ার মুহূর্তে মডেলের বর্তমান প্রতিক্রিয়াটি বন্ধ হয়ে যাবে। এটিই ডিফল্ট আচরণ। |
NO_INTERRUPTION | মডেলের প্রতিক্রিয়া ব্যাহত হবে না। |
কার্যকলাপ শুরু
এই প্রকারে কোনো ক্ষেত্র নেই।
ব্যবহারকারীর কার্যকলাপের সূচনা নির্দেশ করে।
অডিও ট্রান্সক্রিপশন কনফিগারেশন
এই প্রকারে কোনো ক্ষেত্র নেই।
অডিও ট্রান্সক্রিপশন কনফিগারেশন।
স্বয়ংক্রিয় কার্যকলাপ সনাক্তকরণ
কার্যকলাপের স্বয়ংক্রিয় সনাক্তকরণ কনফিগার করে।
| ক্ষেত্র | |
|---|---|
disabled | ঐচ্ছিক। যদি এটি সক্রিয় থাকে (যা ডিফল্টরূপে চালু থাকে), তাহলে শনাক্তকৃত ভয়েস এবং টেক্সট ইনপুট কার্যকলাপ হিসেবে গণ্য হবে। যদি এটি নিষ্ক্রিয় থাকে, তাহলে ক্লায়েন্টকে অবশ্যই কার্যকলাপ সংকেত পাঠাতে হবে। |
startOfSpeechSensitivity | ঐচ্ছিক। এটি নির্ধারণ করে যে কথা শনাক্ত হওয়ার সম্ভাবনা কতটা। |
prefixPaddingMs | ঐচ্ছিক। বক্তব্য শুরু হওয়ার আগে শনাক্তকৃত বক্তব্যের প্রয়োজনীয় সময়কাল। এই মান যত কম হবে, বক্তব্য শুরু শনাক্তকরণ তত বেশি সংবেদনশীল হবে এবং ছোট বক্তব্যও শনাক্ত করা যাবে। তবে, এতে ভুল শনাক্তকরণের সম্ভাবনাও বেড়ে যায়। |
endOfSpeechSensitivity | ঐচ্ছিক। শনাক্তকৃত বক্তব্য শেষ হওয়ার সম্ভাবনা কতটুকু, তা নির্ধারণ করে। |
silenceDurationMs | ঐচ্ছিক। কথা শেষ হওয়ার আগে শনাক্তকৃত কথাবিহীন অংশের (যেমন নীরবতা) প্রয়োজনীয় সময়কাল। এই মান যত বেশি হবে, ব্যবহারকারীর কাজে বাধা না দিয়ে কথার বিরতি তত দীর্ঘ হতে পারবে, কিন্তু এতে মডেলের ল্যাটেন্সি বেড়ে যাবে। |
বিডিজেনারেট কনটেন্ট ক্লায়েন্ট কনটেন্ট
ক্লায়েন্টের কাছ থেকে পাঠানো বর্তমান কথোপকথনের ক্রমবর্ধমান হালনাগাদ। এখানকার সমস্ত বিষয়বস্তু নিঃশর্তভাবে কথোপকথনের ইতিহাসে যুক্ত করা হয় এবং মডেলকে বিষয়বস্তু তৈরি করার জন্য নির্দেশনার অংশ হিসেবে ব্যবহৃত হয়।
এখানে একটি বার্তা দিলে চলমান মডেল তৈরির প্রক্রিয়াটি বাধাগ্রস্ত হবে।
| ক্ষেত্র | |
|---|---|
turns[] | ঐচ্ছিক। মডেলের সাথে চলমান কথোপকথনের সাথে যুক্ত বিষয়বস্তু। একক-টার্ন কোয়েরির ক্ষেত্রে, এটি একটি একক ইনস্ট্যান্স। একাধিক-টার্ন কোয়েরির ক্ষেত্রে, এটি একটি পুনরাবৃত্ত ক্ষেত্র যা কথোপকথনের ইতিহাস এবং সর্বশেষ অনুরোধ ধারণ করে। |
turnComplete | ঐচ্ছিক। যদি 'true' হয়, তবে এটি নির্দেশ করে যে সার্ভারে কন্টেন্ট তৈরি বর্তমানে জমা হওয়া প্রম্পট থেকে শুরু হবে। অন্যথায়, সার্ভার তৈরি শুরু করার আগে অতিরিক্ত বার্তার জন্য অপেক্ষা করবে। |
বিডিজেনারেট কনটেন্ট রিয়েলটাইম ইনপুট
ব্যবহারকারীর ইনপুট যা রিয়েল টাইমে পাঠানো হয়।
বিভিন্ন মাধ্যম (অডিও, ভিডিও এবং টেক্সট) যুগপৎ প্রবাহ হিসেবে পরিচালিত হয়। এই প্রবাহগুলোর মধ্যে ক্রমবিন্যাস নিশ্চিত করা হয় না।
এটি BidiGenerateContentClientContent থেকে কয়েকটি দিক দিয়ে আলাদা:
- মডেল তৈরির জন্য নিরবচ্ছিন্নভাবে পাঠানো যেতে পারে।
- যদি
BidiGenerateContentClientContentএবংBidiGenerateContentRealtimeInputএর মধ্যে ডেটা এলোমেলোভাবে মেশানোর প্রয়োজন হয়, তবে সার্ভার সর্বোত্তম প্রতিক্রিয়ার জন্য অপ্টিমাইজ করার চেষ্টা করে, কিন্তু এর কোনো নিশ্চয়তা নেই। - পালা শেষ হওয়ার সময় স্পষ্টভাবে নির্দিষ্ট করা থাকে না, বরং তা ব্যবহারকারীর কার্যকলাপ থেকে নির্ধারিত হয় (যেমন, বক্তৃতা শেষ হওয়া)।
- পালা শেষ হওয়ার আগেও, মডেল থেকে দ্রুত প্রতিক্রিয়া শুরু করার জন্য ডেটা পর্যায়ক্রমে প্রক্রিয়াজাত করা হয়।
| ক্ষেত্র | |
|---|---|
mediaChunks[] | ঐচ্ছিক। মিডিয়া ইনপুটের জন্য ইনলাইন করা বাইট ডেটা। একাধিক অপ্রচলিত: এর পরিবর্তে |
audio | ঐচ্ছিক। এগুলো রিয়েলটাইম অডিও ইনপুট স্ট্রিম গঠন করে। |
video | ঐচ্ছিক। এগুলো রিয়েলটাইম ভিডিও ইনপুট স্ট্রিম গঠন করে। |
activityStart | ঐচ্ছিক। ব্যবহারকারীর কার্যকলাপের শুরু নির্দেশ করে। এটি শুধুমাত্র তখনই পাঠানো যাবে, যখন স্বয়ংক্রিয় (অর্থাৎ সার্ভার-সাইড) কার্যকলাপ শনাক্তকরণ নিষ্ক্রিয় করা থাকে। |
activityEnd | ঐচ্ছিক। ব্যবহারকারীর কার্যকলাপের সমাপ্তি নির্দেশ করে। এটি শুধুমাত্র তখনই পাঠানো যাবে, যখন স্বয়ংক্রিয় (অর্থাৎ সার্ভার-সাইড) কার্যকলাপ শনাক্তকরণ নিষ্ক্রিয় করা থাকে। |
audioStreamEnd | ঐচ্ছিক। এটি নির্দেশ করে যে অডিও প্রবাহ শেষ হয়ে গেছে, যেমন মাইক্রোফোন বন্ধ করার কারণে। এটি শুধুমাত্র তখনই পাঠানো উচিত যখন স্বয়ংক্রিয় কার্যকলাপ সনাক্তকরণ সক্রিয় থাকে (যা ডিফল্টরূপে চালু থাকে)। ক্লায়েন্ট একটি অডিও বার্তা পাঠিয়ে স্ট্রিমটি পুনরায় চালু করতে পারেন। |
text | ঐচ্ছিক। এগুলো রিয়েলটাইম টেক্সট ইনপুট স্ট্রিম গঠন করে। |
বিডিজেনারেট কনটেন্ট সার্ভার কন্টেন্ট
ক্লায়েন্টের বার্তার প্রতিক্রিয়ায় মডেল দ্বারা তৈরি ক্রমবর্ধমান সার্ভার আপডেট।
কন্টেন্ট যত দ্রুত সম্ভব তৈরি করা হয়, রিয়েল টাইমে নয়। ক্লায়েন্টরা চাইলে তা বাফার করে রিয়েল টাইমে প্লে করতে পারেন।
| ক্ষেত্র | |
|---|---|
generationComplete | শুধুমাত্র আউটপুট। যদি 'true' হয়, তবে এটি নির্দেশ করে যে মডেলটি তৈরি করা শেষ হয়েছে। মডেল তৈরির সময় বাধাগ্রস্ত হলে, বাধাগ্রস্ত টার্নে 'generation_complete' বার্তাটি আসবে না, বরং এটি 'interrupted > turn_complete' ধাপে ধাপে সম্পন্ন হবে। যখন মডেল রিয়েলটাইম প্লেব্যাক চালু করে, তখন generation_complete এবং turn_complete-এর মধ্যে একটি বিলম্ব ঘটে, যা প্লেব্যাক শেষ হওয়ার জন্য মডেলের অপেক্ষার কারণে হয়ে থাকে। |
turnComplete | শুধুমাত্র আউটপুট। যদি সত্য হয়, তবে এটি নির্দেশ করে যে মডেলটি তার পালা সম্পন্ন করেছে। অতিরিক্ত ক্লায়েন্ট বার্তার প্রতিক্রিয়ায় জেনারেশন শুরু হবে। |
interrupted | শুধুমাত্র আউটপুট। যদি সত্য হয়, তবে এটি নির্দেশ করে যে একটি ক্লায়েন্ট বার্তা বর্তমান মডেল তৈরি প্রক্রিয়াকে বাধাগ্রস্ত করেছে। যদি ক্লায়েন্ট রিয়েল টাইমে কন্টেন্টটি প্লে করে, তবে এটি থামার এবং বর্তমান প্লেব্যাক কিউ খালি করার একটি ভালো সংকেত। |
groundingMetadata | শুধুমাত্র আউটপুট। তৈরি করা কন্টেন্টের জন্য মেটাডেটা গ্রাউন্ডিং করা হচ্ছে। |
inputTranscription | শুধুমাত্র আউটপুট। অডিও ট্রান্সক্রিপশন ইনপুট করুন। ট্রান্সক্রিপশনটি সার্ভারের অন্যান্য বার্তা থেকে স্বাধীনভাবে পাঠানো হয় এবং এর কোনো নিশ্চিত ক্রম নেই। |
outputTranscription | শুধুমাত্র আউটপুট। অডিও ট্রান্সক্রিপশন আউটপুট করুন। ট্রান্সক্রিপশনটি অন্যান্য সার্ভার বার্তা থেকে স্বাধীনভাবে পাঠানো হয় এবং এর কোনো নিশ্চিত ক্রম নেই, বিশেষ করে |
urlContextMetadata | |
modelTurn | শুধুমাত্র আউটপুট। ব্যবহারকারীর সাথে বর্তমান কথোপকথনের অংশ হিসেবে মডেলটি যে বিষয়বস্তু তৈরি করেছে। |
বিডিজেনারেট কনটেন্ট সার্ভার মেসেজ
BidiGenerateContent কলটির প্রতিক্রিয়া বার্তা।
| ক্ষেত্র | |
|---|---|
usageMetadata | শুধুমাত্র আউটপুট। প্রতিক্রিয়া(গুলো) সম্পর্কিত ব্যবহারের মেটাডেটা। |
ইউনিয়ন ফিল্ড messageType বার্তার ধরণ। messageType নিম্নলিখিতগুলির মধ্যে কেবল একটি হতে পারে: | |
setupComplete | শুধুমাত্র আউটপুট। সেটআপ সম্পন্ন হলে ক্লায়েন্টের পাঠানো |
serverContent | শুধুমাত্র আউটপুট। ক্লায়েন্টের বার্তার জবাবে মডেল দ্বারা তৈরি বিষয়বস্তু। |
toolCall | শুধুমাত্র আউটপুট। ক্লায়েন্টকে |
toolCallCancellation | শুধুমাত্র আউটপুট। ক্লায়েন্টের জন্য বিজ্ঞপ্তি যে, নির্দিষ্ট |
goAway | শুধুমাত্র আউটপুট। একটি বিজ্ঞপ্তি যে সার্ভারটি শীঘ্রই সংযোগ বিচ্ছিন্ন করবে। |
sessionResumptionUpdate | শুধুমাত্র আউটপুট। সেশন পুনরায় চালুর অবস্থার হালনাগাদ। |
BidiGenerateContentSetup
এই বার্তাটি প্রথম (এবং শুধুমাত্র প্রথম) BidiGenerateContentClientMessage এ পাঠানো হবে। এতে এমন কনফিগারেশন রয়েছে যা স্ট্রিমিং RPC চলাকালীন প্রযোজ্য থাকবে।
অতিরিক্ত কোনো বার্তা পাঠানোর আগে ক্লায়েন্টদের BidiGenerateContentSetupComplete বার্তাটির জন্য অপেক্ষা করা উচিত।
| ক্ষেত্র | |
|---|---|
model | আবশ্যক। মডেলের রিসোর্স নাম। এটি মডেলের ব্যবহারের জন্য একটি আইডি হিসেবে কাজ করে। ফরম্যাট: |
generationConfig | ঐচ্ছিক। জেনারেশন কনফিগারেশন। নিম্নলিখিত ক্ষেত্রগুলি সমর্থিত নয়:
|
systemInstruction | ঐচ্ছিক। ব্যবহারকারী মডেলটির জন্য সিস্টেম নির্দেশাবলী প্রদান করেছেন। দ্রষ্টব্য: শুধুমাত্র লেখা খণ্ড খণ্ড করে ব্যবহার করা হবে এবং প্রতিটি খণ্ডের বিষয়বস্তু একটি পৃথক অনুচ্ছেদে থাকবে। |
tools[] | ঐচ্ছিক। পরবর্তী প্রতিক্রিয়া তৈরি করতে মডেলটি |
realtimeInputConfig | ঐচ্ছিক। রিয়েলটাইম ইনপুট পরিচালনার পদ্ধতি নির্ধারণ করে। |
sessionResumption | ঐচ্ছিক। সেশন পুনরায় চালু করার পদ্ধতি নির্ধারণ করে। অন্তর্ভুক্ত করা হলে, সার্ভার |
contextWindowCompression | ঐচ্ছিক। একটি কনটেক্সট উইন্ডো কম্প্রেশন মেকানিজম কনফিগার করে। অন্তর্ভুক্ত করা হলে, কনটেক্সটের আকার কনফিগার করা দৈর্ঘ্য অতিক্রম করলে সার্ভার স্বয়ংক্রিয়ভাবে তা কমিয়ে দেবে। |
inputAudioTranscription | ঐচ্ছিক। সেট করা থাকলে, ভয়েস ইনপুটের ট্রান্সক্রিপশন চালু হয়। কনফিগার করা থাকলে, ট্রান্সক্রিপশনটি ইনপুট অডিও ভাষার সাথে সামঞ্জস্যপূর্ণ হয়। |
outputAudioTranscription | ঐচ্ছিক। সেট করা থাকলে, মডেলের অডিও আউটপুটের ট্রান্সক্রিপশন চালু হয়। কনফিগার করা থাকলে, ট্রান্সক্রিপশনটি আউটপুট অডিওর জন্য নির্দিষ্ট করা ভাষা কোডের সাথে সামঞ্জস্যপূর্ণ হয়। |
proactivity | ঐচ্ছিক। মডেলটির সক্রিয়তা নির্ধারণ করে। এর ফলে মডেলটি ইনপুটের প্রতি সক্রিয়ভাবে সাড়া দিতে এবং অপ্রাসঙ্গিক ইনপুট উপেক্ষা করতে পারে। |
বিডি জেনারেট কনটেন্ট সেটআপ সম্পূর্ণ
এই প্রকারে কোনো ক্ষেত্র নেই।
ক্লায়েন্টের কাছ থেকে আসা একটি BidiGenerateContentSetup বার্তার জবাবে পাঠানো হয়েছে।
BidiGenerateContentToolCall
ক্লায়েন্টকে functionCalls সম্পাদন করতে এবং মিলে যাওয়া id সহ প্রতিক্রিয়াগুলো ফেরত দিতে অনুরোধ করা হচ্ছে।
| ক্ষেত্র | |
|---|---|
functionCalls[] | শুধুমাত্র আউটপুট। যে ফাংশন কলটি কার্যকর করা হবে। |
BidiGenerateContentToolCallCancellation
ক্লায়েন্টের জন্য বিজ্ঞপ্তি যে, নির্দিষ্ট id s সহ পূর্বে জারি করা একটি ToolCallMessage কার্যকর করা উচিত হয়নি এবং তা বাতিল করা উচিত। যদি সেই টুল কলগুলির কোনো পার্শ্ব-প্রতিক্রিয়া থাকে, তবে ক্লায়েন্টরা টুল কলগুলি পূর্বাবস্থায় ফিরিয়ে আনার চেষ্টা করতে পারে। এই বার্তাটি শুধুমাত্র তখনই প্রদর্শিত হয় যখন ক্লায়েন্টরা সার্ভারের পালাবদলে বাধা দেয়।
| ক্ষেত্র | |
|---|---|
ids[] | শুধুমাত্র আউটপুট। বাতিল করার জন্য টুল কলগুলোর আইডি। |
বিডিজেনারেট কনটেন্ট টুল রেসপন্স
সার্ভার থেকে প্রাপ্ত একটি ToolCall -এর জবাবে ক্লায়েন্ট কর্তৃক উৎপন্ন প্রতিক্রিয়া। প্রতিটি FunctionResponse অবজেক্টকে তার id ফিল্ডের মাধ্যমে সংশ্লিষ্ট FunctionCall অবজেক্টের সাথে মেলানো হয়।
উল্লেখ্য যে, ইউনারি এবং সার্ভার-স্ট্রিমিং GenerateContent API-গুলিতে ফাংশন কলিং ঘটে Content অংশগুলি বিনিময়ের মাধ্যমে, অন্যদিকে বাইডি GenerateContent API-গুলিতে ফাংশন কলিং এই বিশেষ মেসেজ সেটের মাধ্যমে সম্পন্ন হয়।
| ক্ষেত্র | |
|---|---|
functionResponses[] | ঐচ্ছিক। ফাংশন কলগুলোর প্রতিক্রিয়া। |
বিডিজেনারেট কনটেন্ট ট্রান্সক্রিপশন
অডিওর (ইনপুট বা আউটপুট) ট্রান্সক্রিপশন।
| ক্ষেত্র | |
|---|---|
text | প্রতিলিপি পাঠ্য। |
ContextWindowCompressionConfig
কনটেক্সট উইন্ডো কম্প্রেশন সক্ষম করে — এটি মডেলের কনটেক্সট উইন্ডোকে এমনভাবে পরিচালনা করার একটি পদ্ধতি, যাতে এটি একটি নির্দিষ্ট দৈর্ঘ্য অতিক্রম না করে।
| ক্ষেত্র | |
|---|---|
ইউনিয়ন ফিল্ড compressionMechanism । ব্যবহৃত কনটেক্সট উইন্ডো কম্প্রেশন মেকানিজম। compressionMechanism নিম্নলিখিতগুলির মধ্যে কেবল একটি হতে পারে: | |
slidingWindow | একটি স্লাইডিং-উইন্ডো ব্যবস্থা। |
triggerTokens | একটি টার্ন শুরু করার আগে কনটেক্সট উইন্ডো কম্প্রেশন চালু করার জন্য প্রয়োজনীয় টোকেনের সংখ্যা। এটি কোয়ালিটি ও ল্যাটেন্সির মধ্যে ভারসাম্য রক্ষা করতে ব্যবহার করা যেতে পারে, কারণ ছোট কনটেক্সট উইন্ডোর ফলে মডেলের প্রতিক্রিয়া দ্রুততর হতে পারে। তবে, যেকোনো কম্প্রেশন অপারেশনের কারণে সাময়িকভাবে ল্যাটেন্সি বেড়ে যায়, তাই এগুলো ঘন ঘন চালু করা উচিত নয়। সেট করা না থাকলে, ডিফল্ট হিসেবে মডেলের কনটেক্সট উইন্ডো লিমিটের ৮০% ব্যবহৃত হয়। এর ফলে পরবর্তী ইউজার রিকোয়েস্ট বা মডেল রেসপন্সের জন্য ২০% জায়গা অবশিষ্ট থাকে। |
EndSensitive
বক্তৃতার সমাপ্তি কীভাবে শনাক্ত করা হবে তা নির্ধারণ করে।
| এনাম | |
|---|---|
END_SENSITIVITY_UNSPECIFIED | ডিফল্ট মান হলো END_SENSITIVITY_HIGH। |
END_SENSITIVITY_HIGH | স্বয়ংক্রিয় সনাক্তকরণ প্রায়শই বক্তৃতা শেষ করে দেয়। |
END_SENSITIVITY_LOW | স্বয়ংক্রিয় সনাক্তকরণ ব্যবস্থা বক্তৃতা শেষ হওয়ার ঘটনা কমই ঘটে। |
চলে যাও
সার্ভারটি শীঘ্রই সংযোগ বিচ্ছিন্ন করবে বলে একটি বিজ্ঞপ্তি।
| ক্ষেত্র | |
|---|---|
timeLeft | সংযোগটি বাতিল (ABORTED) হিসেবে সমাপ্ত হওয়ার আগে অবশিষ্ট সময়। এই সময়কাল কখনোই মডেল-নির্দিষ্ট একটি ন্যূনতম সময়ের চেয়ে কম হবে না, যা মডেলটির জন্য নির্ধারিত হারের সীমার সাথে উল্লেখ করা হবে। |
প্রোঅ্যাকটিভিটিকনফিগ
সক্রিয়তা বৈশিষ্ট্যগুলির জন্য কনফিগারেশন।
| ক্ষেত্র | |
|---|---|
proactiveAudio | ঐচ্ছিক। এটি সক্রিয় করা হলে, মডেলটি সর্বশেষ প্রম্পটের উত্তর দিতে অস্বীকার করতে পারে। উদাহরণস্বরূপ, এটি মডেলটিকে অপ্রাসঙ্গিক কথাবার্তা উপেক্ষা করার অথবা ব্যবহারকারী এখনও কোনো অনুরোধ না করলে নীরব থাকার সুযোগ দেয়। |
রিয়েলটাইমইনপুটকনফিগ
BidiGenerateContent এ রিয়েলটাইম ইনপুট আচরণ কনফিগার করে।
| ক্ষেত্র | |
|---|---|
automaticActivityDetection | ঐচ্ছিক। সেট করা না থাকলে, স্বয়ংক্রিয় কার্যকলাপ সনাক্তকরণ ডিফল্টরূপে সক্রিয় থাকে। যদি স্বয়ংক্রিয় ভয়েস সনাক্তকরণ নিষ্ক্রিয় করা থাকে, তবে ক্লায়েন্টকে অবশ্যই কার্যকলাপ সংকেত পাঠাতে হবে। |
activityHandling | ঐচ্ছিক। কোনো কার্যকলাপের প্রভাব নির্ধারণ করে। |
turnCoverage | ঐচ্ছিক। ব্যবহারকারীর পালায় কোন কোন ইনপুট অন্তর্ভুক্ত হবে তা নির্ধারণ করে। |
সেশনরিজাম্পশনকনফিগ
সেশন পুনরায় শুরু করার কনফিগারেশন।
এই বার্তাটি সেশন কনফিগারেশনে BidiGenerateContentSetup.sessionResumption হিসেবে অন্তর্ভুক্ত থাকে। কনফিগার করা থাকলে, সার্ভার SessionResumptionUpdate বার্তা পাঠাবে।
| ক্ষেত্র | |
|---|---|
handle | পূর্ববর্তী সেশনের হ্যান্ডেল। এটি উপস্থিত না থাকলে একটি নতুন সেশন তৈরি করা হয়। পূর্ববর্তী সংযোগগুলিতে থাকা |
সেশনপুনরায় শুরু আপডেট
সেশন পুনরায় চালুর অবস্থার হালনাগাদ।
শুধুমাত্র তখনই পাঠানো হবে যদি BidiGenerateContentSetup.sessionResumption সেট করা থাকে।
| ক্ষেত্র | |
|---|---|
newHandle | নতুন হ্যান্ডেল যা এমন একটি অবস্থাকে নির্দেশ করে যা পুনরায় চালু করা যেতে পারে। যদি |
resumable | এই পর্যায়ে বর্তমান সেশনটি পুনরায় শুরু করা সম্ভব হলে সত্য। সেশনের কিছু নির্দিষ্ট পর্যায়ে সেশন পুনরায় শুরু করা সম্ভব নয়। উদাহরণস্বরূপ, যখন মডেলটি ফাংশন কল সম্পাদন করে বা জেনারেট করে। এই অবস্থায় (পূর্ববর্তী সেশন টোকেন ব্যবহার করে) সেশন পুনরায় শুরু করলে কিছু ডেটা নষ্ট হবে। এই ক্ষেত্রে, |
স্লাইডিং উইন্ডো
SlidingWindow মেথডটি কনটেক্সট উইন্ডোর শুরুর দিকের কন্টেন্ট বাদ দিয়ে কাজ করে। এর ফলে প্রাপ্ত কনটেক্সটটি সর্বদা একটি USER রোলের টার্নের শুরু থেকে শুরু হবে। সিস্টেম ইনস্ট্রাকশন এবং যেকোনো BidiGenerateContentSetup.prefixTurns সর্বদা ফলাফলের শুরুতে থেকে যাবে।
| ক্ষেত্র | |
|---|---|
targetTokens | সংরক্ষণ করার জন্য টোকেনের লক্ষ্যমাত্রা সংখ্যা। ডিফল্ট মান হলো trigger_tokens/2। কনটেক্সট উইন্ডোর অংশবিশেষ বাদ দিলে সাময়িকভাবে ল্যাটেন্সি বেড়ে যায়, তাই ঘন ঘন কম্প্রেশন অপারেশন এড়াতে এই মানটি ক্যালিব্রেট করা উচিত। |
স্টার্টসেনসিটিভিটি
বক্তৃতার শুরু কীভাবে শনাক্ত করা হবে তা নির্ধারণ করে।
| এনাম | |
|---|---|
START_SENSITIVITY_UNSPECIFIED | ডিফল্ট মান হলো START_SENSITIVITY_HIGH। |
START_SENSITIVITY_HIGH | স্বয়ংক্রিয় সনাক্তকরণ ব্যবস্থা আরও ঘন ঘন বক্তৃতার শুরু সনাক্ত করবে। |
START_SENSITIVITY_LOW | স্বয়ংক্রিয় সনাক্তকরণ ব্যবস্থার মাধ্যমে বক্তৃতার শুরু কমই শনাক্ত করা যাবে। |
টার্ন কভারেজ
ব্যবহারকারীর পালায় কোন কোন ইনপুট অন্তর্ভুক্ত হবে সে সম্পর্কিত বিকল্পসমূহ।
| এনাম | |
|---|---|
TURN_COVERAGE_UNSPECIFIED | অনির্দিষ্ট থাকলে, মডেলের উপর ভিত্তি করে একটি ডিফল্ট আচরণ নির্বাচন করা হয়। |
TURN_INCLUDES_ONLY_ACTIVITY | শেষ টার্নের পর থেকে হওয়া কার্যকলাপ অন্তর্ভুক্ত, তবে নিষ্ক্রিয়তা (যেমন অডিও স্ট্রিমে নীরবতা) বাদ দেওয়া হয়েছে। |
TURN_INCLUDES_ALL_INPUT | শেষ চালের পর থেকে সমস্ত রিয়েল-টাইম ইনপুট অন্তর্ভুক্ত, যার মধ্যে নিষ্ক্রিয়তাও (যেমন অডিও স্ট্রিমে নীরবতা) রয়েছে। |
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO | শেষ পালা থেকে অডিও কার্যকলাপ এবং সমস্ত ভিডিও অন্তর্ভুক্ত। স্বয়ংক্রিয় কার্যকলাপ সনাক্তকরণের ক্ষেত্রে, অডিও কার্যকলাপ বলতে কথাবার্তা বোঝায় এবং নীরবতা এর অন্তর্ভুক্ত নয়। |
ইউআরএলকনটেক্সটমেটাডেটা
ইউআরএল কনটেক্সট পুনরুদ্ধার টুল সম্পর্কিত মেটাডেটা।
| ক্ষেত্র | |
|---|---|
urlMetadata[] | ইউআরএল কনটেক্সটের তালিকা। |
ব্যবহার মেটাডেটা
প্রতিক্রিয়া(গুলো) সম্পর্কিত ব্যবহারের মেটাডেটা।
| ক্ষেত্র | |
|---|---|
promptTokenCount | শুধুমাত্র আউটপুট। প্রম্পটে থাকা টোকেনের সংখ্যা। যখন |
cachedContentTokenCount | প্রম্পটের ক্যাশ করা অংশে (ক্যাশ করা বিষয়বস্তু) থাকা টোকেনের সংখ্যা |
responseTokenCount | শুধুমাত্র আউটপুট। তৈরি হওয়া সমস্ত সম্ভাব্য উত্তরের মোট টোকেন সংখ্যা। |
toolUsePromptTokenCount | শুধুমাত্র আউটপুট। টুল-ব্যবহারের প্রম্পট(গুলি)-তে উপস্থিত টোকেনের সংখ্যা। |
thoughtsTokenCount | শুধুমাত্র আউটপুট। চিন্তন মডেলগুলোর জন্য চিন্তার টোকেন সংখ্যা। |
totalTokenCount | শুধুমাত্র আউটপুট। জেনারেশন অনুরোধের জন্য মোট টোকেন সংখ্যা (প্রম্পট + সম্ভাব্য প্রতিক্রিয়া)। |
promptTokensDetails[] | শুধুমাত্র আউটপুট। অনুরোধের ইনপুটে প্রক্রিয়াকৃত মোডালিটিগুলোর তালিকা। |
cacheTokensDetails[] | শুধুমাত্র আউটপুট। অনুরোধ ইনপুটে থাকা ক্যাশ করা কন্টেন্টের মোডালিটির তালিকা। |
responseTokensDetails[] | শুধুমাত্র আউটপুট। প্রতিক্রিয়ায় ফেরত আসা মোডালিটিগুলোর তালিকা। |
toolUsePromptTokensDetails[] | শুধুমাত্র আউটপুট। টুল-ব্যবহারের অনুরোধের ইনপুটগুলোর জন্য যে মোডালিটিগুলো প্রক্রিয়া করা হয়েছিল, তার তালিকা। |
ক্ষণস্থায়ী প্রমাণীকরণ টোকেন
AuthTokenService.CreateToken কল করে ক্ষণস্থায়ী প্রমাণীকরণ টোকেন পাওয়া যায় এবং তারপর তা GenerativeService.BidiGenerateContentConstrained এর সাথে ব্যবহার করা যায়। এর জন্য টোকেনটিকে হয় একটি access_token কোয়েরি প্যারামিটারে পাস করতে হয়, অথবা একটি HTTP Authorization হেডারের শুরুতে " Token " উপসর্গ যোগ করে পাস করতে হয়।
CreateAuthTokenRequest
একটি ক্ষণস্থায়ী প্রমাণীকরণ টোকেন তৈরি করুন।
| ক্ষেত্র | |
|---|---|
authToken | তৈরির জন্য টোকেনটি প্রয়োজন। |
অথটোকেন
একটি ক্ষণস্থায়ী প্রমাণীকরণ টোকেন তৈরি করার অনুরোধ।
| ক্ষেত্র | |
|---|---|
name | শুধুমাত্র আউটপুট। শনাক্তকারী। টোকেনটি নিজে। |
expireTime | ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। একটি ঐচ্ছিক সময়, যার পরে প্রাপ্ত টোকেনটি ব্যবহার করার সময় BidiGenerateContent সেশনের বার্তাগুলি প্রত্যাখ্যান করা হবে। (এই সময়ের পরে Gemini আগেভাগেই সেশনটি বন্ধ করে দিতে পারে।) সেট করা না থাকলে, এটি স্বয়ংক্রিয়ভাবে ৩০ মিনিট ভবিষ্যতের সময় দেখাবে। সেট করা থাকলে, এই মানটি অবশ্যই ২০ ঘণ্টার কম ভবিষ্যতের হতে হবে। |
newSessionExpireTime | ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। যে সময়ের পর এই অনুরোধের ফলে প্রাপ্ত টোকেন ব্যবহার করে নতুন লাইভ এপিআই সেশনগুলো প্রত্যাখ্যান করা হবে। সেট করা না থাকলে এটি স্বয়ংক্রিয়ভাবে ভবিষ্যতের ৬০ সেকেন্ড সময় দেখায়। সেট করা থাকলে, এই মানটি অবশ্যই ভবিষ্যতের ২০ ঘণ্টার কম হতে হবে। |
fieldMask | ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। যদি field_mask খালি থাকে এবং যদি field_mask খালি থাকে এবং যদি field_mask খালি না থাকে, তাহলে |
ইউনিয়ন ফিল্ড config । ফলাফলস্বরূপ প্রাপ্ত টোকেনের জন্য মেথড-নির্দিষ্ট কনফিগারেশন। config নিম্নলিখিতগুলির মধ্যে কেবল একটি হতে পারে: | |
bidiGenerateContentSetup | ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। |
uses | ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। টোকেনটি কতবার ব্যবহার করা যাবে। এই মান শূন্য হলে কোনো সীমা প্রযোজ্য হবে না। একটি লাইভ এপিআই সেশন পুনরায় শুরু করা ব্যবহার হিসাবে গণ্য হবে না। অনির্দিষ্ট থাকলে, ডিফল্ট মান হবে ১। |
সাধারণ প্রকার সম্পর্কে আরও তথ্য
সাধারণভাবে ব্যবহৃত API রিসোর্স টাইপ Blob , Content , FunctionCall , FunctionResponse , GenerationConfig , GroundingMetadata , ModalityTokenCount এবং Tool সম্পর্কে আরও তথ্যের জন্য, Generating content দেখুন।