ফাংশন কলিং আপনার জন্য জেনারেটিভ মডেল থেকে স্ট্রাকচার্ড ডেটা আউটপুট পেতে সহজ করে তোলে। তারপরে আপনি এই আউটপুটগুলি ব্যবহার করে অন্যান্য 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 কী চেক করবেন না ৷
আপনার API কী-এর জন্য একটি গোপন স্টোর ব্যবহার করা উচিত, যেমন Google ক্লাউড সিক্রেট ম্যানেজার ।
আরেকটি বিকল্প বিকল্প হল এটি একটি GenerativeAI-Info.plist
ফাইলে সংরক্ষণ করা, এবং তারপর .plist
ফাইল থেকে API কী পড়ুন। আপনার অ্যাপের রুট ফোল্ডারে এই .plist
ফাইলটি রাখা নিশ্চিত করুন এবং সংস্করণ নিয়ন্ত্রণ থেকে বাদ দিন। নিম্নলিখিত কোডটি দেখায় কিভাবে একটি .plist
ফাইল থেকে একটি API কী পুনরুদ্ধার করতে হয়:
enum APIKey {
// Fetch the API key from `GenerativeAI-Info.plist`
static var `default`: String {
guard let filePath = Bundle.main.path(forResource: "GenerativeAI-Info", ofType: "plist")
else {
fatalError("Couldn't find file 'GenerativeAI-Info.plist'.")
}
let plist = NSDictionary(contentsOfFile: filePath)
guard let value = plist?.object(forKey: "API_KEY") as? String else {
fatalError("Couldn't find key 'API_KEY' in 'GenerativeAI-Info.plist'.")
}
if value.starts(with: "_") {
fatalError(
"Follow the instructions at https://ai.google.dev/tutorials/setup to get an API key."
)
}
return value
}
}
একটি .plist
ফাইলে কীভাবে আপনার API কী সংরক্ষণ করবেন তা শিখতে আপনি সুইফ্ট জেনারেটিভ এআই নমুনা অ্যাপটি পর্যালোচনা করতে পারেন। এই টিউটোরিয়ালটি অনুমান করে যে আপনি এই অন-ডিমান্ড রিসোর্স .plist
ফাইল থেকে আপনার API কী অ্যাক্সেস করছেন।
SDK প্যাকেজ আমদানি করুন এবং আপনার API কী কনফিগার করুন
আপনার নিজের সুইফট অ্যাপে Gemini API ব্যবহার করতে, আপনার Xcode অ্যাপ্লিকেশন ডেভেলপমেন্ট প্রকল্পে GoogleGenerativeAI
প্যাকেজ যোগ করুন:
Xcode-এ, প্রজেক্ট নেভিগেটরে আপনার প্রোজেক্টে ডান-ক্লিক করুন।
প্রসঙ্গ মেনু থেকে প্যাকেজ যোগ করুন নির্বাচন করুন।
প্যাকেজ যুক্ত করুন ডায়ালগে, অনুসন্ধান বারে প্যাকেজ URL পেস্ট করুন:
https://github.com/google/generative-ai-swift
আপনার প্রোজেক্টে Xcode
GoogleGenerativeAI
প্যাকেজ যোগ করতে প্যাকেজ যোগ করুন ক্লিক করুন।
একটি API ফাংশন সংজ্ঞায়িত করুন
একটি API অনুরোধ করে এমন একটি ফাংশন তৈরি করুন। এই ফাংশনটি আপনার অ্যাপ্লিকেশনের কোডের মধ্যে সংজ্ঞায়িত করা উচিত, তবে আপনার অ্যাপ্লিকেশনের বাইরে পরিষেবা বা API কল করতে পারে৷ Gemini API এই ফাংশনটিকে সরাসরি কল করে না , তাই আপনি আপনার অ্যাপ্লিকেশন কোডের মাধ্যমে কীভাবে এবং কখন এই ফাংশনটি কার্যকর করা হবে তা নিয়ন্ত্রণ করতে পারেন। প্রদর্শনের উদ্দেশ্যে, এই টিউটোরিয়ালটি একটি মক API ফাংশন সংজ্ঞায়িত করে যা শুধুমাত্র অনুরোধকৃত আলোর মানগুলি প্রদান করে:
func setLightValues(brightness: String,
colorTemp: String) -> JSONObject {
// This mock API returns the requested lighting values
return [
"brightness": .string(brightness),
"colorTemperature": .string(colorTemp)
]
}
ফাংশন ঘোষণা তৈরি করুন
ফাংশন ঘোষণা তৈরি করুন যা আপনি জেনারেটিভ মডেলে পাস করবেন। আপনি যখন মডেলের দ্বারা ব্যবহারের জন্য একটি ফাংশন ঘোষণা করেন, তখন আপনার ফাংশন এবং প্যারামিটারের বিবরণে যতটা সম্ভব বিস্তারিত অন্তর্ভুক্ত করা উচিত। কোন ফাংশন নির্বাচন করতে হবে এবং ফাংশন কলের পরামিতিগুলির জন্য কীভাবে মান প্রদান করতে হবে তা নির্ধারণ করতে জেনারেটিভ মডেল এই তথ্য ব্যবহার করে। নিম্নলিখিত কোড দেখায় কিভাবে আলো নিয়ন্ত্রণ ফাংশন ঘোষণা করতে হয়:
let controlLightFunctionDeclaration = FunctionDeclaration(
name: "controlLight",
description: "Set the brightness and color temperature of a room light.",
parameters: [
"brightness": Schema(
type: .string,
description: "Light level from 0 to 100. Zero is off and 100 is full brightness."
),
"colorTemperature": Schema(
type: .string,
description: "Color temperature of the light fixture which can be `daylight`, `cool` or `warm`."
),
],
requiredParameters: ["brightness", "colorTemperature"]
)
মডেল ইনিশিয়ালাইজেশনের সময় ফাংশন ঘোষণা করুন
আপনি যখন একটি মডেলের সাথে ফাংশন কলিং ব্যবহার করতে চান, আপনি মডেল অবজেক্ট শুরু করার সময় আপনাকে অবশ্যই আপনার ফাংশন ঘোষণা প্রদান করতে হবে। আপনি মডেলের tools
প্যারামিটার সেট করে ফাংশন ঘোষণা করেন:
// Use a model that supports function calling, like a Gemini 1.5 model
let generativeModel = GenerativeModel(
name: "gemini-1.5-flash",
apiKey: apiKey,
// Specify the function declaration.
tools: [Tool(functionDeclarations: [controlLightFunctionDeclaration])]
)
একটি ফাংশন কল তৈরি করুন
একবার আপনি আপনার ফাংশন ঘোষণার সাথে মডেলটি শুরু করলে, আপনি সংজ্ঞায়িত ফাংশন সহ মডেলটিকে অনুরোধ করতে পারেন। আপনার চ্যাট প্রম্পটিং ( sendMessage()
) ব্যবহার করে ফাংশন কলিং ব্যবহার করা উচিত, যেহেতু ফাংশন কলিং সাধারণত পূর্ববর্তী প্রম্পট এবং প্রতিক্রিয়াগুলির প্রসঙ্গ থাকার ফলে উপকৃত হয়।
let chat = generativeModel.startChat()
let prompt = "Dim the lights so the room feels cozy and warm."
// Send the message to the generative model
let response1 = try await chat.sendMessage(prompt)
// Check if the model responded with a function call
guard let functionCall = response1.functionCalls.first else {
fatalError("Model did not respond with a function call.")
}
// Print an error if the returned function was not declared
guard functionCall.name == "controlLight" else {
fatalError("Unexpected function called: \(functionCall.name)")
}
// Verify that the names and types of the parameters match the declaration
guard case let .string(brightness) = functionCall.args["brightness"] else {
fatalError("Missing argument: brightness")
}
guard case let .string(colorTemp) = functionCall.args["colorTemperature"] else {
fatalError("Missing argument: colorTemperature")
}
// Call the hypothetical API
let apiResponse = setLightValues(brightness: brightness, colorTemperature: colorTemp)
// Send the API response back to the model so it can generate a text response that can be
// displayed to the user.
let response = try await chat.sendMessage([ModelContent(
role: "function",
parts: [.functionResponse(FunctionResponse(
name: functionCall.name,
response: apiResponse
))]
)])
// Log the text response.
guard let modelResponse = response.text else {
fatalError("Model did not respond with text.")
}
print(modelResponse)