ফাংশন কলিং আপনার জন্য জেনারেটিভ মডেল থেকে স্ট্রাকচার্ড ডেটা আউটপুট পেতে সহজ করে তোলে। তারপরে আপনি এই আউটপুটগুলি ব্যবহার করে অন্যান্য API কল করতে এবং মডেলে প্রাসঙ্গিক প্রতিক্রিয়া ডেটা ফেরত দিতে পারেন। অন্য কথায়, ফাংশন কলিং আপনাকে জেনারেটিভ মডেলগুলিকে বাহ্যিক সিস্টেমের সাথে সংযুক্ত করতে সাহায্য করে যাতে তৈরি করা সামগ্রীতে সর্বাধিক আপ-টু-ডেট এবং সঠিক তথ্য অন্তর্ভুক্ত থাকে।
আপনি ফাংশন বর্ণনা সহ মিথুন মডেল প্রদান করতে পারেন. এগুলি এমন ফাংশন যা আপনি আপনার অ্যাপের ভাষায় লেখেন (অর্থাৎ, এগুলি Google ক্লাউড ফাংশন নয়)৷ মডেলটি আপনাকে একটি ফাংশন কল করতে এবং মডেলটিকে আপনার প্রশ্ন পরিচালনা করতে সহায়তা করার জন্য ফলাফলটি ফেরত পাঠাতে বলতে পারে।
আপনি যদি ইতিমধ্যে না করে থাকেন, আরও জানতে ফাংশন কলিংয়ের ভূমিকা দেখুন।
আলো নিয়ন্ত্রণের জন্য উদাহরণ API
কল্পনা করুন যে আপনার কাছে একটি অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API) সহ একটি মৌলিক আলো নিয়ন্ত্রণ ব্যবস্থা রয়েছে এবং আপনি ব্যবহারকারীদের সাধারণ পাঠ্য অনুরোধের মাধ্যমে আলো নিয়ন্ত্রণ করার অনুমতি দিতে চান। আপনি ব্যবহারকারীদের কাছ থেকে আলো পরিবর্তনের অনুরোধগুলি ব্যাখ্যা করতে এবং আলোর মান সেট করতে API কলগুলিতে অনুবাদ করতে ফাংশন কলিং বৈশিষ্ট্যটি ব্যবহার করতে পারেন। এই কাল্পনিক আলো নিয়ন্ত্রণ ব্যবস্থা আপনাকে আলোর উজ্জ্বলতা নিয়ন্ত্রণ করতে দেয় এবং এর রঙের তাপমাত্রা, দুটি পৃথক পরামিতি হিসাবে সংজ্ঞায়িত করা হয়:
প্যারামিটার | টাইপ | প্রয়োজন | বর্ণনা |
---|---|---|---|
brightness | সংখ্যা | হ্যাঁ | 0 থেকে 100 পর্যন্ত আলোর স্তর। শূন্য বন্ধ এবং 100 হল সম্পূর্ণ উজ্জ্বলতা। |
colorTemperature | স্ট্রিং | হ্যাঁ | আলোর ফিক্সচারের রঙের তাপমাত্রা যা daylight , cool বা warm হতে পারে। |
সরলতার জন্য, এই কাল্পনিক আলো ব্যবস্থায় শুধুমাত্র একটি আলো রয়েছে, তাই ব্যবহারকারীকে একটি ঘর বা অবস্থান নির্দিষ্ট করতে হবে না। দিনের আলোর রঙের তাপমাত্রা ব্যবহার করে আলোর মাত্রা 50% এ পরিবর্তন করতে আপনি আলোক নিয়ন্ত্রণ API এ পাঠাতে পারেন এমন JSON অনুরোধের উদাহরণ এখানে রয়েছে:
{
"brightness": "50",
"colorTemperature": "daylight"
}
এই টিউটোরিয়ালটি আপনাকে দেখায় কিভাবে Gemini API-এর জন্য একটি ফাংশন কল সেট আপ করতে হয় যাতে ব্যবহারকারীদের আলোর অনুরোধগুলি ব্যাখ্যা করতে হয় এবং আলোর উজ্জ্বলতা এবং রঙের তাপমাত্রার মান নিয়ন্ত্রণ করতে API সেটিংসে তাদের ম্যাপ করতে হয়।
আপনি শুরু করার আগে: আপনার প্রকল্প এবং API কী সেট আপ করুন
Gemini API কল করার আগে, আপনাকে আপনার প্রকল্প সেট আপ করতে হবে এবং আপনার API কী কনফিগার করতে হবে।
আপনার API কী পান এবং সুরক্ষিত করুন
Gemini API কল করার জন্য আপনার একটি API কী প্রয়োজন। আপনার যদি ইতিমধ্যে একটি না থাকে তবে Google AI স্টুডিওতে একটি কী তৈরি করুন৷
এটি দৃঢ়ভাবে সুপারিশ করা হয় যে আপনি আপনার সংস্করণ নিয়ন্ত্রণ সিস্টেমে একটি API কী চেক করবেন না ৷
Google ক্লাউড সিক্রেট ম্যানেজার- এর মতো গোপন স্টোরে আপনার API কী সংরক্ষণ করা উচিত।
এই টিউটোরিয়ালটি অনুমান করে যে আপনি একটি প্রক্রিয়া পরিবেশ পরিবর্তনশীল হিসাবে আপনার API কী অ্যাক্সেস করছেন। আপনি যদি একটি Flutter অ্যাপ তৈরি করেন, তাহলে আপনি String.fromEnvironment
ব্যবহার করতে পারেন এবং এপিআই কী দিয়ে কম্পাইল করতে flutter run
flutter build
করতে --dart-define=API_KEY=$API_KEY
পাস করতে পারেন কারণ অ্যাপটি চালানোর সময় প্রক্রিয়া পরিবেশ ভিন্ন হবে। .
SDK প্যাকেজ আমদানি করুন এবং আপনার API কী কনফিগার করুন
আপনার নিজের অ্যাপ্লিকেশনে Gemini API ব্যবহার করতে, আপনাকে আপনার ডার্ট বা ফ্লাটার অ্যাপে google_generative_ai
প্যাকেজ add
হবে:
ডার্ট
dart pub add google_generative_ai
ফ্লাটার
flutter pub add google_generative_ai
একটি API ফাংশন সংজ্ঞায়িত করুন
একটি API অনুরোধ করে এমন একটি ফাংশন তৈরি করুন। এই ফাংশনটি আপনার অ্যাপ্লিকেশনের কোডের মধ্যে সংজ্ঞায়িত করা উচিত, তবে আপনার অ্যাপ্লিকেশনের বাইরে পরিষেবা বা API কল করতে পারে৷ Gemini API এই ফাংশনটিকে সরাসরি কল করে না , তাই আপনি আপনার অ্যাপ্লিকেশন কোডের মাধ্যমে কীভাবে এবং কখন এই ফাংশনটি কার্যকর করা হবে তা নিয়ন্ত্রণ করতে পারেন। প্রদর্শনের উদ্দেশ্যে, এই টিউটোরিয়ালটি একটি মক API ফাংশন সংজ্ঞায়িত করে যা শুধুমাত্র অনুরোধকৃত আলোর মানগুলি প্রদান করে:
Future<Map<String, Object?>> setLightValues(
Map<String, Object?> arguments,
) async =>
// This mock API returns the requested lighting values
{
'brightness': arguments['brightness'],
'colorTemperature': arguments['colorTemp'],
};
ফাংশন ঘোষণা তৈরি করুন
ফাংশন ঘোষণা তৈরি করুন যা আপনি জেনারেটিভ মডেলে পাস করবেন। আপনি যখন মডেলের দ্বারা ব্যবহারের জন্য একটি ফাংশন ঘোষণা করেন, তখন আপনার ফাংশন এবং প্যারামিটারের বিবরণে যতটা সম্ভব বিস্তারিত অন্তর্ভুক্ত করা উচিত। কোন ফাংশন নির্বাচন করতে হবে এবং ফাংশন কলের পরামিতিগুলির জন্য কীভাবে মান প্রদান করতে হবে তা নির্ধারণ করতে জেনারেটিভ মডেল এই তথ্য ব্যবহার করে। নিম্নলিখিত কোড দেখায় কিভাবে আলো নিয়ন্ত্রণ ফাংশন ঘোষণা করতে হয়:
final lightControlTool = FunctionDeclaration(
'setLightValues',
'Set the brightness and color temperature of a room light.',
Schema(SchemaType.object, properties: {
'brightness': Schema(SchemaType.number,
description: 'Light level from 0 to 100. '
'Zero is off and 100 is full brightness.'),
'colorTemperature': Schema(SchemaType.string,
description: 'Color temperature of the light fixture, '
'which can be `daylight`, `cool` or `warm`.'),
}, requiredProperties: [
'brightness',
'colorTemperature'
]));
মডেল ইনিশিয়ালাইজেশনের সময় ফাংশন ঘোষণা করুন
আপনি যখন একটি মডেলের সাথে ফাংশন কলিং ব্যবহার করতে চান, আপনি মডেল অবজেক্ট শুরু করার সময় আপনাকে অবশ্যই আপনার ফাংশন ঘোষণা প্রদান করতে হবে। আপনি মডেলের tools
প্যারামিটার সেট করে ফাংশন ঘোষণা করেন। Dart SDK এছাড়াও generateContent
বা generateContentStream
API-এর আর্গুমেন্ট হিসাবে ফাংশন ঘোষণাকে সমর্থন করে।
final model = GenerativeModel(
model: 'gemini-1.5-flash',
apiKey: apiKey,
// Specify the function declaration.
tools: [
Tool(functionDeclarations: [lightControlTool])
],
);
একটি ফাংশন কল তৈরি করুন
একবার আপনি আপনার ফাংশন ঘোষণার সাথে মডেলটি শুরু করলে, আপনি সংজ্ঞায়িত ফাংশন সহ মডেলটিকে অনুরোধ করতে পারেন। আপনার চ্যাট প্রম্পটিং ( sendMessage()
) ব্যবহার করে ফাংশন কলিং ব্যবহার করা উচিত, যেহেতু ফাংশন কলিং সাধারণত পূর্ববর্তী প্রম্পট এবং প্রতিক্রিয়াগুলির প্রসঙ্গ থাকার ফলে উপকৃত হয়।
final chat = model.startChat(); final prompt =
'Dim the lights so the room feels cozy and warm.';
// Send the message to the generative model.
var response = await chat.sendMessage(Content.text(prompt));
final functionCalls = response.functionCalls.toList();
// When the model response with a function call, invoke the function.
if (functionCalls.isNotEmpty) {
final functionCall = functionCalls.first;
final result = switch (functionCall.name) {
// Forward arguments to the hypothetical API.
'setLightValues' => await setLightValues(functionCall.args),
// Throw an exception if the model attempted to call a function that was
// not declared.
_ => throw UnimplementedError(
'Function not implemented: ${functionCall.name}')
};
// Send the response to the model so that it can use the result to generate
// text for the user.
response = await chat
.sendMessage(Content.functionResponse(functionCall.name, result));
}
// When the model responds with non-null text content, print it.
if (response.text case final text?) {
print(text);
}