মাল্টিমোডাল লাইভ এপিআই মিথুনের সাথে কম লেটেন্সি দ্বিমুখী ভয়েস এবং ভিডিও ইন্টারঅ্যাকশন সক্ষম করে। মাল্টিমোডাল লাইভ API ব্যবহার করে, আপনি শেষ ব্যবহারকারীদের প্রাকৃতিক, মানুষের মতো ভয়েস কথোপকথনের অভিজ্ঞতা এবং ভয়েস কমান্ড ব্যবহার করে মডেলের প্রতিক্রিয়াগুলিকে বাধা দেওয়ার ক্ষমতা প্রদান করতে পারেন। মডেলটি পাঠ্য, অডিও এবং ভিডিও ইনপুট প্রক্রিয়া করতে পারে এবং এটি পাঠ্য এবং অডিও আউটপুট সরবরাহ করতে পারে।
আপনি Google AI স্টুডিওতে মাল্টিমোডাল লাইভ API ব্যবহার করে দেখতে পারেন।
মাল্টিমডাল লাইভ API ব্যবহার করুন
এই বিভাগটি বর্ণনা করে যে কীভাবে আমাদের SDK-এর সাথে মাল্টিমোডাল লাইভ API ব্যবহার করতে হয়। অন্তর্নিহিত WebSockets API সম্পর্কে আরও তথ্যের জন্য, নীচে WebSockets API রেফারেন্স দেখুন।
পাঠান এবং টেক্সট গ্রহণ
import asyncio
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY", http_options={'api_version': 'v1alpha'})
model = "gemini-2.0-flash-exp"
config = {"response_modalities": ["TEXT"]}
async def main():
async with client.aio.live.connect(model=model, config=config) as session:
while True:
message = input("User> ")
if message.lower() == "exit":
break
await session.send(input=message, end_of_turn=True)
async for response in session.receive():
if response.text is not None:
print(response.text, end="")
if __name__ == "__main__":
asyncio.run(main())
অডিও গ্রহণ
নিচের উদাহরণটি দেখায় কিভাবে অডিও ডেটা গ্রহণ করতে হয় এবং এটি একটি .wav
ফাইলে লিখতে হয়।
import asyncio
import wave
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY", http_options={'api_version': 'v1alpha'})
model = "gemini-2.0-flash-exp"
config = {"response_modalities": ["AUDIO"]}
async def main():
async with client.aio.live.connect(model=model, config=config) as session:
wf = wave.open("audio.wav", "wb")
wf.setnchannels(1)
wf.setsampwidth(2)
wf.setframerate(24000)
message = "Hello? Gemini are you there?"
await session.send(input=message, end_of_turn=True)
async for idx,response in async_enumerate(session.receive()):
if response.data is not None:
wf.writeframes(response.data)
# Comment this out to print audio data info
# if response.server_content.model_turn is not None:
# print(response.server_content.model_turn.parts[0].inline_data.mime_type)
wf.close()
if __name__ == "__main__":
asyncio.run(main())
অডিও ফরম্যাট
মাল্টিমোডাল লাইভ API নিম্নলিখিত অডিও ফর্ম্যাটগুলিকে সমর্থন করে:
- ইনপুট অডিও ফরম্যাট: Raw 16 bit PCM অডিও 16kHz লিটল-এন্ডিয়ান
- আউটপুট অডিও ফরম্যাট: 24kHz লিটল-এন্ডিয়ানে কাঁচা 16 বিট পিসিএম অডিও
অডিও এবং ভিডিও স্ট্রিম করুন
সিস্টেম নির্দেশাবলী
সিস্টেম নির্দেশাবলী আপনাকে আপনার নির্দিষ্ট প্রয়োজন এবং ব্যবহারের ক্ষেত্রের উপর ভিত্তি করে একটি মডেলের আচরণ পরিচালনা করতে দেয়। সিস্টেম নির্দেশাবলী সেটআপ কনফিগারেশনে সেট করা যেতে পারে এবং পুরো সেশনের জন্য কার্যকর থাকবে।
from google.genai import types
config = {
"system_instruction": types.Content(
parts=[
types.Part(
text="You are a helpful assistant and answer in a friendly tone."
)
]
),
"response_modalities": ["TEXT"],
}
ইনক্রিমেন্টাল কন্টেন্ট আপডেট
টেক্সট ইনপুট পাঠাতে, সেশন প্রসঙ্গ স্থাপন বা সেশন প্রসঙ্গ পুনরুদ্ধার করতে ক্রমবর্ধমান আপডেট ব্যবহার করুন। সংক্ষিপ্ত প্রসঙ্গের জন্য আপনি ঘটনার সঠিক ক্রম উপস্থাপন করতে পালাক্রমে মিথস্ক্রিয়া পাঠাতে পারেন:
from google.genai import types
turns = [
types.Content(parts=[types.Part(text="What is the capital of France?")], role="user"),
types.Content(parts=[types.Part(text="Paris")], role="model")
]
await session.send(input=types.LiveClientContent(turns=turns))
turns = [types.Content(parts=[types.Part(text="What is the capital of Germany?")], role="user")]
await session.send(input=types.LiveClientContent(turns=turns, turn_complete=True))
{
"clientContent": {
"turns": [
{
"parts":[
{
"text": ""
}
],
"role":"user"
},
{
"parts":[
{
"text": ""
}
],
"role":"model"
}
],
"turnComplete": true
}
}
দীর্ঘ প্রসঙ্গগুলির জন্য পরবর্তী মিথস্ক্রিয়াগুলির জন্য প্রসঙ্গ উইন্ডোটি মুক্ত করতে একটি একক বার্তা সারাংশ প্রদান করার পরামর্শ দেওয়া হয়।
কণ্ঠস্বর পরিবর্তন করুন
মাল্টিমোডাল লাইভ API নিম্নলিখিত ভয়েসগুলিকে সমর্থন করে: Aoede, Charon, Fenrir, Kore এবং Puck।
একটি ভয়েস নির্দিষ্ট করতে, সেশন কনফিগারেশনের অংশ হিসাবে speechConfig
অবজেক্টের মধ্যে ভয়েস নাম সেট করুন:
from google.genai import types
config = types.LiveConnectConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Kore")
)
)
)
{
"voiceConfig": {
"prebuiltVoiceConfig": {
"voiceName": "Kore"
}
}
}
ফাংশন কলিং ব্যবহার করুন
আপনি মাল্টিমোডাল লাইভ এপিআই দিয়ে সরঞ্জামগুলি সংজ্ঞায়িত করতে পারেন। ফাংশন কলিং সম্পর্কে আরও জানতে ফাংশন কলিং টিউটোরিয়াল দেখুন।
সরঞ্জামগুলিকে সেশন কনফিগারেশনের অংশ হিসাবে সংজ্ঞায়িত করা আবশ্যক:
config = types.LiveConnectConfig(
response_modalities=["TEXT"],
tools=[set_light_values]
)
async with client.aio.live.connect(model=model, config=config) as session:
await session.send(input="Turn the lights down to a romantic level", end_of_turn=True)
async for response in session.receive():
print(response.tool_call)
একটি একক প্রম্পট থেকে, মডেলটি একাধিক ফাংশন কল এবং তাদের আউটপুট চেইন করার জন্য প্রয়োজনীয় কোড তৈরি করতে পারে। এই কোডটি একটি স্যান্ডবক্স পরিবেশে কার্যকর করে, পরবর্তী BidiGenerateContentToolCall বার্তা তৈরি করে। প্রতিটি ফাংশন কলের ফলাফল উপলব্ধ না হওয়া পর্যন্ত এক্সিকিউশন বিরতি দেয়, যা ক্রমিক প্রক্রিয়াকরণ নিশ্চিত করে।
ক্লায়েন্টকে BidiGenerateContentToolResponse দিয়ে প্রতিক্রিয়া জানাতে হবে।
অডিও ইনপুট এবং অডিও আউটপুট নেতিবাচকভাবে মডেলের ফাংশন কলিং ব্যবহার করার ক্ষমতাকে প্রভাবিত করে।
বাধা হ্যান্ডেল
ব্যবহারকারীরা যে কোনো সময় মডেলের আউটপুট ব্যাহত করতে পারেন. যখন ভয়েস অ্যাক্টিভিটি ডিটেকশন (VAD) কোনো বাধা শনাক্ত করে, তখন চলমান জেনারেশন বাতিল করা হয় এবং বাতিল করা হয়। শুধুমাত্র ক্লায়েন্টকে ইতিমধ্যে পাঠানো তথ্য সেশন ইতিহাসে রাখা হয়। সার্ভার তখন বিডিজেনারেট কনটেন্টসার্ভার কনটেন্ট বার্তা পাঠায় বিঘ্নের রিপোর্ট করতে।
এছাড়াও, জেমিনি সার্ভার কোনো মুলতুবি থাকা ফাংশন কল বাতিল করে এবং বাতিল করা কলগুলির আইডি সহ একটি BidiGenerateContentServerContent
বার্তা পাঠায়।
async for response in session.receive():
if response.server_content.interrupted is not None:
# The generation was interrupted
সীমাবদ্ধতা
আপনি যখন আপনার প্রকল্পের পরিকল্পনা করবেন তখন মাল্টিমোডাল লাইভ API এবং জেমিনি 2.0 এর নিম্নলিখিত সীমাবদ্ধতাগুলি বিবেচনা করুন৷
ক্লায়েন্ট প্রমাণীকরণ
মাল্টিমডাল লাইভ এপিআই শুধুমাত্র সার্ভারকে সার্ভার প্রমাণীকরণ প্রদান করে এবং সরাসরি ক্লায়েন্ট ব্যবহারের জন্য সুপারিশ করা হয় না। মাল্টিমোডাল লাইভ API-এর সাথে নিরাপদ প্রমাণীকরণের জন্য ক্লায়েন্ট ইনপুট একটি মধ্যবর্তী অ্যাপ্লিকেশন সার্ভারের মাধ্যমে রুট করা উচিত।
কথোপকথনের ইতিহাস
মডেলটি ইন-সেশন ইন্টারঅ্যাকশনের ট্র্যাক রাখে, কথোপকথনের ইতিহাস সংরক্ষণ করা হয় না। একটি অধিবেশন শেষ হলে, সংশ্লিষ্ট প্রসঙ্গ মুছে ফেলা হয়।
একটি পূর্ববর্তী সেশন পুনরুদ্ধার করতে বা ব্যবহারকারীর ইন্টারঅ্যাকশনের ঐতিহাসিক প্রেক্ষাপট সহ মডেলটি প্রদান করতে, অ্যাপ্লিকেশনটির নিজস্ব কথোপকথন লগ বজায় রাখা উচিত এবং একটি নতুন সেশনের শুরুতে এই তথ্য পাঠানোর জন্য একটি BidiGenerateContentClientContent বার্তা ব্যবহার করা উচিত৷
সেশনের সর্বোচ্চ সময়কাল
সেশনের সময়কাল অডিওর জন্য 15 মিনিট পর্যন্ত বা অডিও এবং ভিডিওর 2 মিনিট পর্যন্ত সীমাবদ্ধ। যখন সেশনের সময়সীমা সীমা অতিক্রম করে, সংযোগটি বন্ধ হয়ে যায়।
মডেলটি প্রসঙ্গ আকার দ্বারা সীমাবদ্ধ। ভিডিও এবং অডিও স্ট্রীমের পাশাপাশি কন্টেন্টের বড় অংশ পাঠানোর ফলে আগের সেশন বন্ধ হয়ে যেতে পারে।
ভয়েস কার্যকলাপ সনাক্তকরণ (VAD)
মডেলটি একটি অবিচ্ছিন্ন অডিও ইনপুট স্ট্রীমে স্বয়ংক্রিয়ভাবে ভয়েস অ্যাক্টিভিটি সনাক্তকরণ (VAD) সঞ্চালন করে। VAD সর্বদা সক্রিয় থাকে এবং এর পরামিতিগুলি কনফিগারযোগ্য নয়।
টোকেন গণনা
টোকেন গণনা সমর্থিত নয়।
হারের সীমা
নিম্নলিখিত হার সীমা প্রযোজ্য:
- API কী প্রতি 3টি সমবর্তী সেশন
- প্রতি মিনিটে 4M টোকেন
WebSockets API রেফারেন্স
মাল্টিমডাল লাইভ এপিআই হল একটি স্টেটফুল এপিআই যা ওয়েবসকেট ব্যবহার করে। এই বিভাগে, আপনি WebSockets API সম্পর্কিত অতিরিক্ত বিবরণ পাবেন।
সেশন
একটি WebSocket সংযোগ ক্লায়েন্ট এবং জেমিনি সার্ভারের মধ্যে একটি সেশন স্থাপন করে। একটি ক্লায়েন্ট একটি নতুন সংযোগ শুরু করার পরে সেশনটি সার্ভারের সাথে বার্তা বিনিময় করতে পারে:
- Gemini সার্ভারে পাঠ্য, অডিও বা ভিডিও পাঠান।
- Gemini সার্ভার থেকে অডিও, টেক্সট, বা ফাংশন কল অনুরোধ গ্রহণ করুন।
সংযোগের পরে প্রাথমিক বার্তাটি সেশন কনফিগারেশন সেট করে, যার মধ্যে মডেল, প্রজন্মের পরামিতি, সিস্টেম নির্দেশাবলী এবং সরঞ্জাম রয়েছে।
নিম্নলিখিত উদাহরণ কনফিগারেশন দেখুন. মনে রাখবেন যে SDK-তে নামের আবরণ পরিবর্তিত হতে পারে। আপনি এখানে পাইথন SDK কনফিগারেশন বিকল্পগুলি দেখতে পারেন।
{
"model": string,
"generationConfig": {
"candidateCount": integer,
"maxOutputTokens": integer,
"temperature": number,
"topP": number,
"topK": integer,
"presencePenalty": number,
"frequencyPenalty": number,
"responseModalities": [string],
"speechConfig": object
},
"systemInstruction": string,
"tools": [object]
}
বার্তা পাঠান
WebSocket সংযোগের মাধ্যমে বার্তা বিনিময় করতে, ক্লায়েন্টকে অবশ্যই একটি খোলা WebSocket সংযোগের মাধ্যমে একটি JSON অবজেক্ট পাঠাতে হবে। JSON অবজেক্টে নিম্নলিখিত অবজেক্ট সেট থেকে ঠিক একটি ক্ষেত্র থাকতে হবে:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
সমর্থিত ক্লায়েন্ট বার্তা
নিম্নলিখিত টেবিলে সমর্থিত ক্লায়েন্ট বার্তাগুলি দেখুন:
বার্তা | বর্ণনা |
---|---|
BidiGenerateContentSetup | প্রথম বার্তায় সেশন কনফিগারেশন পাঠাতে হবে |
BidiGenerateContentClientContent | ক্লায়েন্ট থেকে বিতরণ করা বর্তমান কথোপকথনের ক্রমবর্ধমান বিষয়বস্তু আপডেট |
BidiGenerateContentRealtimeInput | রিয়েল টাইম অডিও বা ভিডিও ইনপুট |
BidiGenerateContentToolResponse | সার্ভার থেকে প্রাপ্ত একটি ToolCallMessage এর প্রতিক্রিয়া |
বার্তা গ্রহণ
Gemini থেকে বার্তা পেতে, WebSocket 'বার্তা' ইভেন্টের জন্য শুনুন, এবং তারপর সমর্থিত সার্ভার বার্তাগুলির সংজ্ঞা অনুযায়ী ফলাফল পার্স করুন৷
নিম্নলিখিত দেখুন:
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)
সার্ভার বার্তাগুলিতে নিম্নলিখিত অবজেক্ট সেট থেকে ঠিক একটি ক্ষেত্র থাকবে:
{
"setupComplete": BidiGenerateContentSetupComplete,
"serverContent": BidiGenerateContentServerContent,
"toolCall": BidiGenerateContentToolCall,
"toolCallCancellation": BidiGenerateContentToolCallCancellation
}
সমর্থিত সার্ভার বার্তা
নিম্নলিখিত টেবিলে সমর্থিত সার্ভার বার্তা দেখুন:
বার্তা | বর্ণনা |
---|---|
BidiGenerateContentSetupComplete | ক্লায়েন্ট থেকে একটি BidiGenerateContentSetup বার্তা, সেটআপ সম্পূর্ণ হলে পাঠানো হয় |
BidiGenerateContentServerContent | একটি ক্লায়েন্ট বার্তার প্রতিক্রিয়ায় মডেল দ্বারা উত্পন্ন সামগ্রী |
BidiGenerateContentToolCall | ক্লায়েন্টকে ফাংশন কল চালানোর জন্য অনুরোধ করুন এবং ম্যাচিং আইডিগুলির সাথে প্রতিক্রিয়াগুলি ফেরত দিন৷ |
BidiGenerateContentToolCallCancellation | ব্যবহারকারীর মডেল আউটপুটে বাধা দেওয়ার কারণে একটি ফাংশন কল বাতিল হলে পাঠানো হয় |
বার্তা এবং ঘটনা
বিডিজেনারেট কনটেন্ট ক্লায়েন্ট কনটেন্ট
ক্লায়েন্ট থেকে বিতরণ করা বর্তমান কথোপকথনের ক্রমবর্ধমান আপডেট। এখানে সমস্ত বিষয়বস্তু নিঃশর্তভাবে কথোপকথনের ইতিহাসে যুক্ত করা হয়েছে এবং সামগ্রী তৈরি করার জন্য মডেলের প্রম্পটের অংশ হিসাবে ব্যবহার করা হয়েছে।
এখানে একটি বার্তা যেকোনো বর্তমান মডেল প্রজন্মকে বাধাগ্রস্ত করবে।
ক্ষেত্র | |
---|---|
turns[] | ঐচ্ছিক। মডেলের সাথে বর্তমান কথোপকথনের সাথে বিষয়বস্তু যুক্ত করা হয়েছে। একক-পালা প্রশ্নের জন্য, এটি একটি একক উদাহরণ। মাল্টি-টার্ন কোয়েরির জন্য, এটি একটি পুনরাবৃত্ত ক্ষেত্র যাতে কথোপকথনের ইতিহাস এবং সর্বশেষ অনুরোধ রয়েছে। |
turn_ complete | ঐচ্ছিক। সত্য হলে, নির্দেশ করে যে সার্ভারের বিষয়বস্তু তৈরি করা বর্তমানে জমা হওয়া প্রম্পট দিয়ে শুরু করা উচিত। অন্যথায়, সার্ভার প্রজন্ম শুরু করার আগে অতিরিক্ত বার্তার জন্য অপেক্ষা করে। |
বিডিজেনারেট কনটেন্ট রিয়েলটাইম ইনপুট
ব্যবহারকারীর ইনপুট যা রিয়েল টাইমে পাঠানো হয়।
এটি BidiGenerateContentClientContent
থেকে কয়েকটি উপায়ে আলাদা:
- মডেল জেনারেশনে কোনো বাধা ছাড়াই ক্রমাগত পাঠানো যেতে পারে।
-
BidiGenerateContentClientContent
এবংBidiGenerateContentRealtimeInput
জুড়ে আন্তঃলিপ্ত ডেটা মিশ্রিত করার প্রয়োজন হলে, সার্ভারটি সর্বোত্তম প্রতিক্রিয়ার জন্য অপ্টিমাইজ করার চেষ্টা করে, কিন্তু কোন গ্যারান্টি নেই। - টার্নের শেষ স্পষ্টভাবে নির্দিষ্ট করা হয়নি, বরং ব্যবহারকারীর কার্যকলাপ থেকে উদ্ভূত হয়েছে (উদাহরণস্বরূপ, বক্তৃতার শেষ)।
- এমনকি পালা শেষ হওয়ার আগে, মডেল থেকে প্রতিক্রিয়া দ্রুত শুরু করার জন্য অপ্টিমাইজ করার জন্য ডেটা ক্রমবর্ধমানভাবে প্রক্রিয়া করা হয়।
- সর্বদা ব্যবহারকারীর ইনপুট হিসাবে ধরে নেওয়া হয় (কথোপকথনের ইতিহাস তৈরি করতে ব্যবহার করা যাবে না)। কোনো বাধা ছাড়াই ক্রমাগত পাঠানো যাবে। মডেলটি স্বয়ংক্রিয়ভাবে ব্যবহারকারীর বক্তৃতার শুরু এবং শেষ সনাক্ত করে এবং সেই অনুযায়ী প্রতিক্রিয়া স্ট্রিমিং শুরু বা বন্ধ করে। ডেটা আসার সাথে সাথে ক্রমবর্ধমানভাবে প্রক্রিয়া করা হয়, লেটেন্সি কমিয়ে দেয়।
ক্ষেত্র | |
---|---|
media_ chunks[] | ঐচ্ছিক। মিডিয়া ইনপুটের জন্য ইনলাইন বাইট ডেটা। |
বিডিজেনারেট কনটেন্ট সার্ভার কন্টেন্ট
ক্লায়েন্ট বার্তাগুলির প্রতিক্রিয়া হিসাবে মডেল দ্বারা উত্পন্ন ক্রমবর্ধমান সার্ভার আপডেট৷
বিষয়বস্তু যত তাড়াতাড়ি সম্ভব তৈরি করা হয়, এবং বাস্তব সময়ে নয়। ক্লায়েন্টরা বাফার করতে এবং রিয়েল টাইমে এটি চালাতে বেছে নিতে পারে।
ক্ষেত্র | |
---|---|
turn_ complete | শুধুমাত্র আউটপুট। সত্য হলে, নির্দেশ করে যে মডেলটি তৈরি করা হয়েছে। জেনারেশন শুধুমাত্র অতিরিক্ত ক্লায়েন্ট বার্তার প্রতিক্রিয়ায় শুরু হবে। |
interrupted | শুধুমাত্র আউটপুট। সত্য হলে, নির্দেশ করে যে একটি ক্লায়েন্ট বার্তা বর্তমান মডেল তৈরিতে বাধা দিয়েছে। যদি ক্লায়েন্ট রিয়েল টাইমে বিষয়বস্তু চালায়, তাহলে বর্তমান প্লেব্যাক সারি বন্ধ এবং খালি করার জন্য এটি একটি ভাল সংকেত। |
grounding_ metadata | শুধুমাত্র আউটপুট। জেনারেট করা সামগ্রীর জন্য গ্রাউন্ডিং মেটাডেটা। |
model_ turn | শুধুমাত্র আউটপুট। ব্যবহারকারীর সাথে বর্তমান কথোপকথনের অংশ হিসাবে মডেলটি যে সামগ্রী তৈরি করেছে৷ |
বিডিজেনারেট কনটেন্ট সেটআপ
প্রথম এবং একমাত্র প্রথম ক্লায়েন্ট বার্তায় বার্তা পাঠানো হবে। কনফিগারেশন রয়েছে যা স্ট্রিমিং সেশনের সময়কালের জন্য প্রযোজ্য হবে।
কোনো অতিরিক্ত বার্তা পাঠানোর আগে গ্রাহকদের একটি BidiGenerateContentSetupComplete
বার্তার জন্য অপেক্ষা করা উচিত।
ক্ষেত্র | |
---|---|
model | প্রয়োজন। মডেলের সম্পদের নাম। এটি মডেল ব্যবহার করার জন্য একটি আইডি হিসাবে কাজ করে। বিন্যাস: |
generation_ config | ঐচ্ছিক। জেনারেশন কনফিগারেশন। নিম্নলিখিত ক্ষেত্র সমর্থিত নয়:
|
system_ instruction | ঐচ্ছিক। ব্যবহারকারী মডেলের জন্য সিস্টেম নির্দেশাবলী প্রদান করেছে। দ্রষ্টব্য: অংশগুলিতে শুধুমাত্র পাঠ্য ব্যবহার করা উচিত। প্রতিটি অংশের বিষয়বস্তু একটি পৃথক অনুচ্ছেদে থাকবে। |
tools[] | ঐচ্ছিক। পরবর্তী প্রতিক্রিয়া তৈরি করতে মডেলটি ব্যবহার করতে পারে একটি |
বিডি জেনারেট কনটেন্ট সেটআপ সম্পূর্ণ
এই ধরনের কোন ক্ষেত্র আছে.
ক্লায়েন্টের কাছ থেকে একটি BidiGenerateContentSetup
বার্তার জবাবে পাঠানো হয়েছে।
বিডিজেনারেট কনটেন্ট টুলকল
ক্লায়েন্টকে ফাংশন কলগুলি চালানোর জন্য অনুরোধ করুন এবং ম্যাচিং id
সাথে প্রতিক্রিয়াগুলি ফেরত দিন৷
ক্ষেত্র | |
---|---|
function_ calls[] | শুধুমাত্র আউটপুট। ফাংশন কল নির্বাহ করা হবে. |
BidiGenerateContentToolCallCancellation
ক্লায়েন্টের জন্য বিজ্ঞপ্তি যে নির্দিষ্ট id
সহ পূর্বে জারি করা ToolCallMessage
কার্যকর করা উচিত নয় এবং বাতিল করা উচিত। যদি সেই টুল কলগুলির পার্শ্বপ্রতিক্রিয়া থাকে, তাহলে ক্লায়েন্টরা টুল কলগুলি পূর্বাবস্থায় ফেরানোর চেষ্টা করতে পারে। এই বার্তাটি কেবলমাত্র সেই ক্ষেত্রেই ঘটে যেখানে ক্লায়েন্টরা সার্ভারে বাধা দেয়।
ক্ষেত্র | |
---|---|
ids[] | শুধুমাত্র আউটপুট। টুলের আইডি বাতিল করতে হবে। |
বিডিজেনারেট কনটেন্ট টুল রেসপন্স
ক্লায়েন্ট সার্ভার থেকে প্রাপ্ত একটি ToolCall
প্রতিক্রিয়া তৈরি করেছে। স্বতন্ত্র FunctionResponse
অবজেক্টগুলি id
ফিল্ড দ্বারা সংশ্লিষ্ট FunctionCall
অবজেক্টের সাথে মিলে যায়।
উল্লেখ্য যে ইউনারি এবং সার্ভার-স্ট্রিমিং GenerateContent API-এ ফাংশন কলিং হয় Content
অংশ বিনিময়ের মাধ্যমে, যখন বিডিতে GenerateContent APIs ফাংশন কলিং এই উত্সর্গীকৃত বার্তাগুলির উপর ঘটে।
ক্ষেত্র | |
---|---|
function_ responses[] | ঐচ্ছিক। ফাংশন কল প্রতিক্রিয়া. |
সাধারণ ধরনের সম্পর্কে আরও তথ্য
সাধারণত-ব্যবহৃত API রিসোর্স ধরনের Blob
, Content
, FunctionCall
, FunctionResponse
, GenerationConfig
, GroundingMetadata
, এবং Tool
সম্পর্কে আরও তথ্যের জন্য, সামগ্রী তৈরি করা দেখুন।
তৃতীয় পক্ষের ইন্টিগ্রেশন
ওয়েব এবং মোবাইল অ্যাপ স্থাপনার জন্য, আপনি এখান থেকে বিকল্পগুলি অন্বেষণ করতে পারেন: