অন্তর্নির্মিত সরঞ্জাম এবং ফাংশন কলিং একত্রিত করুন
জেমিনি টুল কলের কনটেক্সট হিস্ট্রি সংরক্ষণ ও প্রকাশ করার মাধ্যমে একটি একক ইন্টারঅ্যাকশনে বিল্ট-ইন টুল (যেমন google_search ) এবং ফাংশন কলিং (যা কাস্টম টুল নামেও পরিচিত) একত্রিত করার সুযোগ দেয়। বিল্ট-ইন এবং কাস্টম টুলের সংমিশ্রণ জটিল, এজেন্টিক ওয়ার্কফ্লো তৈরি করতে সাহায্য করে, যেখানে উদাহরণস্বরূপ, মডেলটি আপনার নির্দিষ্ট বিজনেস লজিক কল করার আগে রিয়েল-টাইম ওয়েব ডেটার উপর ভিত্তি করে নিজেকে প্রস্তুত করতে পারে।
এখানে একটি উদাহরণ দেওয়া হলো যা google_search এবং getWeather নামক একটি কাস্টম ফাংশনের সাথে বিল্ট-ইন ও কাস্টম টুলের সমন্বয় সক্ষম করে:
পাইথন
from google import genai
client = genai.Client()
getWeather = {
"type": "function",
"name": "getWeather",
"description": "Gets the weather for a requested city.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city and state, e.g. Utqiaġvik, Alaska",
},
},
"required": ["city"],
},
}
# The Interactions API manages context automatically across tool calls.
# The model will first use Google Search, then call getWeather.
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="What is the northernmost city in the United States? What's the weather like there today?",
tools=[
{"google_search": {}},
getWeather,
],
)
# Process steps: the interaction contains search results and a function call
for step in interaction.steps:
if step.type == "function_call":
print(f"Function call: {step.name} with args: {step.arguments}")
# In a real application, you would execute the function here
# and provide the result back to the model.
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from '@google/genai';
const client = new GoogleGenAI({});
const getWeather = {
type: "function",
name: "getWeather",
description: "Get the weather in a given location",
parameters: {
type: "object",
properties: {
location: {
type: "string",
description: "The city and state, e.g. San Francisco, CA"
}
},
required: ["location"]
}
};
// The Interactions API manages context automatically across tool calls.
// The model will first use Google Search, then call getWeather.
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "What is the northernmost city in the United States? What's the weather like there today?",
tools: [
{ googleSearch: {} },
getWeather,
],
});
// Process steps: the interaction contains search results and a function call
for (const step of interaction.steps) {
if (step.type === "function_call") {
console.log(`Function call: ${step.name} with args: ${JSON.stringify(step.arguments)}`);
// In a real application, you would execute the function here
// and provide the result back to the model.
}
}
বিশ্রাম
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"model": "gemini-3-flash-preview",
"input": "What is the northernmost city in the United States? What'\''s the weather like there today?",
"tools": [
{ "type": "google_search" },
{
"type": "function",
"name": "getWeather",
"description": "Get the weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
}
},
"required": ["location"]
}
}
]
}'
এটি কীভাবে কাজ করে
জেমিনি ৩ মডেলগুলো বিল্ট-ইন এবং কাস্টম টুলের সংমিশ্রণ সক্ষম করতে টুল কনটেক্সট সার্কুলেশন ব্যবহার করে। টুল কনটেক্সট সার্কুলেশনের মাধ্যমে বিল্ট-ইন টুলগুলোর কনটেক্সট সংরক্ষণ ও প্রকাশ করা যায় এবং একই ইন্টারঅ্যাকশনের মধ্যে কাস্টম টুলগুলোর সাথে তা শেয়ার করা সম্ভব হয়।
টুল সংমিশ্রণ সক্ষম করুন
- সংমিশ্রণ আচরণটি সক্রিয় করতে, আপনার ব্যবহার করতে চাওয়া বিল্ট-ইন টুলগুলোর সাথে
function_declarationsঅন্তর্ভুক্ত করুন।
এপিআই ধাপগুলি ফেরত দেয়
একটি ইন্টারঅ্যাকশন রেসপন্সে, এপিআই বিল্ট-ইন টুল কল এবং ফাংশন (কাস্টম টুল) কলের জন্য আলাদা ধাপ রিটার্ন করে:
- অন্তর্নির্মিত টুলের ধাপসমূহ : এপিআই এগুলি স্বয়ংক্রিয়ভাবে পরিচালনা করে এবং প্রতিটি টার্নের মধ্যে প্রাসঙ্গিকতা বজায় রাখে।
- ফাংশন কল করার ধাপসমূহ : এপিআই আপনার কাস্টম ফাংশনগুলোর জন্য
function_callধাপগুলো ফেরত দেয়। আপনি ফাংশনটি এক্সিকিউট করে তার ফলাফল প্রদান করেন।
ফেরত ধাপে গুরুত্বপূর্ণ ক্ষেত্রগুলি
ফেরত আসা ধাপগুলোর মধ্যে থাকা কিছু নির্দিষ্ট ফিল্ড টুলের প্রেক্ষাপট বজায় রাখতে এবং টুলের সংমিশ্রণ সক্ষম করতে অত্যন্ত গুরুত্বপূর্ণ:
-
id:function_callএবংfunction_responseধাপে পাওয়া যায়। এটি একটি অনন্য শনাক্তকারী যা একটি কলকে তার প্রতিক্রিয়ার সাথে সংযুক্ত করে। -
signature: জেমিনি ৩+ মডেলের ক্ষেত্রে এটিthoughtধাপগুলিতে, সেইসাথে সমস্ত টুল কল (যেমন,function_call) এবং ফলাফল (যেমন,function_response) ধাপে পাওয়া যায়। এই এনক্রিপ্টেড কনটেক্সটটি বিভিন্ন ইন্টারঅ্যাকশনের মধ্যে টুল কনটেক্সটের আদান-প্রদান সক্ষম করে।
এই ক্ষেত্রগুলি পরিচালনা করা:
- স্টেটফুল মোড (প্রস্তাবিত) : আপনি যখন
previous_interaction_idব্যবহার করেন, তখন সার্ভার স্বয়ংক্রিয়ভাবেidএবংsignatureউভয় ফিল্ড পরিচালনা করে। - স্টেটলেস মোড : কথোপকথনের ইতিহাস ম্যানুয়ালি পরিচালনা করার সময়, সত্যতা যাচাই করতে এবং প্রাসঙ্গিকতা বজায় রাখতে আপনাকে অবশ্যই পরবর্তী অনুরোধগুলিতে মডেলে
idএবংsignatureউভয় ফিল্ডই ফেরত পাঠাতে হবে। আপনি যদি সম্পূর্ণ রেসপন্স অবজেক্টটি ইতিহাসে ফেরত পাঠান, তাহলে অফিসিয়াল SDK-গুলো এটি স্বয়ংক্রিয়ভাবে করে থাকে।
টুল-নির্দিষ্ট ডেটা
কিছু অন্তর্নির্মিত টুল, টুলের প্রকারভেদের জন্য নির্দিষ্ট, ব্যবহারকারীর কাছে দৃশ্যমান ডেটা আর্গুমেন্ট ফেরত দেয়।
| সরঞ্জাম | ব্যবহারকারীর কাছে দৃশ্যমান টুল কল আর্গুমেন্ট (যদি থাকে) | ব্যবহারকারীর কাছে দৃশ্যমান টুলের প্রতিক্রিয়া (যদি থাকে) |
|---|---|---|
| গুগল অনুসন্ধান | queries | search_suggestions |
| গুগল_ম্যাপস | queries | placesgoogle_maps_widget_context_token |
| ইউআরএল_কন্টেক্সট | urlsব্রাউজ করার জন্য ইউআরএল | status : অবস্থা ব্রাউজ করুনretrieved_url ইউআরএল : ব্রাউজ করা ইউআরএল |
| ফাইল_সার্চ | কোনোটিই না | কোনোটিই না |
টোকেন এবং মূল্য নির্ধারণ
মনে রাখবেন যে, রিকোয়েস্টের মধ্যে থাকা বিল্ট-ইন টুল কলের অংশগুলো prompt_token_count ) গণনার অন্তর্ভুক্ত হয়। যেহেতু টুলের এই মধ্যবর্তী ধাপগুলো এখন দৃশ্যমান এবং আপনাকে ফেরত দেওয়া হয়, তাই এগুলো কথোপকথনের ইতিহাসের অংশ। এটি শুধুমাত্র রিকোয়েস্টের ক্ষেত্রেই প্রযোজ্য, রেসপন্সের ক্ষেত্রে নয়।
গুগল সার্চ টুল এই নিয়মের একটি ব্যতিক্রম। গুগল সার্চ ইতিমধ্যেই কোয়েরি পর্যায়ে তার নিজস্ব মূল্য নির্ধারণ মডেল প্রয়োগ করে, তাই টোকেনগুলির জন্য দ্বিগুণ চার্জ করা হয় না ( মূল্য নির্ধারণ পৃষ্ঠাটি দেখুন)।
আরও তথ্যের জন্য টোকেন পৃষ্ঠাটি পড়ুন।
সীমাবদ্ধতা
- টুল কনটেক্সট সার্কুলেশন সক্রিয় থাকলে ডিফল্টরূপে
validatedমোড ব্যবহৃত হবে (autoমোড সমর্থিত নয়)। -
google_searchমতো বিল্ট-ইন টুলগুলো অবস্থান এবং বর্তমান সময়ের তথ্যের উপর নির্ভর করে, তাই আপনারsystem_instructionবাfunction_declaration.descriptionএ যদি পরস্পরবিরোধী অবস্থান এবং সময়ের তথ্য থাকে, তাহলে টুল সমন্বয়ের বৈশিষ্ট্যটি ঠিকমতো কাজ নাও করতে পারে।
সমর্থিত সরঞ্জাম
সাধারণ টুল কনটেক্সট সার্কুলেশন সার্ভার-সাইড (বিল্ট-ইন) টুলগুলোর ক্ষেত্রে প্রযোজ্য। কোড এক্সিকিউশনও একটি সার্ভার-সাইড টুল, কিন্তু কনটেক্সট সার্কুলেশনের জন্য এর নিজস্ব বিল্ট-ইন সমাধান রয়েছে। কম্পিউটার ব্যবহার এবং ফাংশন কলিং হলো ক্লায়েন্ট-সাইড টুল, এবং এগুলোরও কনটেক্সট সার্কুলেশনের জন্য বিল্ট-ইন সমাধান রয়েছে।
| সরঞ্জাম | কার্যনির্বাহী পক্ষ | প্রসঙ্গ সঞ্চালন সমর্থন |
|---|---|---|
| গুগল অনুসন্ধান | সার্ভার-সাইড | সমর্থিত |
| গুগল ম্যাপস | সার্ভার-সাইড | সমর্থিত |
| ইউআরএল প্রসঙ্গ | সার্ভার-সাইড | সমর্থিত |
| ফাইল অনুসন্ধান | সার্ভার-সাইড | সমর্থিত |
| কোড এক্সিকিউশন | সার্ভার-সাইড | সমর্থিত (অন্তর্নির্মিত, code_execution এবং code_execution_result ধাপগুলো ব্যবহার করে) |
| কম্পিউটার ব্যবহার | ক্লায়েন্ট-সাইড | সমর্থিত (অন্তর্নির্মিত, function_call এবং function_response ধাপগুলো ব্যবহার করে) |
| কাস্টম ফাংশন | ক্লায়েন্ট-সাইড | সমর্থিত (অন্তর্নির্মিত, function_call এবং function_response ধাপগুলো ব্যবহার করে) |
এরপর কী?
- জেমিনি এপিআই-তে ফাংশন কলিং সম্পর্কে আরও জানুন।
- সমর্থিত সরঞ্জামগুলি অন্বেষণ করুন: