টিউটোরিয়াল: Gemini API এর সাথে ফাংশন কলিং


ফাংশন কলিং আপনার জন্য জেনারেটিভ মডেল থেকে স্ট্রাকচার্ড ডেটা আউটপুট পেতে সহজ করে তোলে। তারপরে আপনি এই আউটপুটগুলি ব্যবহার করে অন্যান্য API কল করতে এবং মডেলে প্রাসঙ্গিক প্রতিক্রিয়া ডেটা ফেরত দিতে পারেন। অন্য কথায়, ফাংশন কলিং আপনাকে জেনারেটিভ মডেলগুলিকে বাহ্যিক সিস্টেমের সাথে সংযুক্ত করতে সাহায্য করে যাতে তৈরি করা সামগ্রীতে সর্বাধিক আপ-টু-ডেট এবং সঠিক তথ্য অন্তর্ভুক্ত থাকে।

আপনি ফাংশন বর্ণনা সহ মিথুন মডেল প্রদান করতে পারেন. এগুলি এমন ফাংশন যা আপনি আপনার অ্যাপের ভাষায় লেখেন (অর্থাৎ, এগুলি Google ক্লাউড ফাংশন নয়)৷ মডেলটি আপনাকে একটি ফাংশন কল করতে এবং মডেলটিকে আপনার প্রশ্ন পরিচালনা করতে সহায়তা করার জন্য ফলাফলটি ফেরত পাঠাতে বলতে পারে।

আপনি যদি ইতিমধ্যে না করে থাকেন, আরও জানতে ফাংশন কলিংয়ের ভূমিকা দেখুন।

আপনার প্রকল্প সেট আপ করুন

Gemini API কল করার আগে, আপনাকে আপনার প্রকল্প সেট আপ করতে হবে, যার মধ্যে আপনার API কী সেট আপ করা, SDK প্যাকেজ ইনস্টল করা এবং মডেলটি শুরু করা অন্তর্ভুক্ত রয়েছে।

একটি ফাংশন কল সেট আপ করুন

এই টিউটোরিয়ালের জন্য, আপনার কাছে মডেলটি একটি অনুমানমূলক মুদ্রা বিনিময় API এর সাথে ইন্টারঅ্যাক্ট করতে হবে যা নিম্নলিখিত পরামিতিগুলিকে সমর্থন করে:

প্যারামিটার টাইপ প্রয়োজন বর্ণনা
currencyFrom স্ট্রিং হ্যাঁ থেকে রূপান্তরিত মুদ্রা
currencyTo স্ট্রিং হ্যাঁ কারেন্সিতে রূপান্তর করতে হবে

উদাহরণ API অনুরোধ

{
  "currencyFrom": "USD",
  "currencyTo": "SEK"
}

উদাহরণ API প্রতিক্রিয়া

{
  "base": "USD",
  "rates": {"SEK": 0.091}
}

ধাপ 1 : API অনুরোধ করে এমন ফাংশন তৈরি করুন

যদি আপনি ইতিমধ্যেই না করে থাকেন তবে একটি API অনুরোধ করে এমন ফাংশন তৈরি করে শুরু করুন।

এই টিউটোরিয়ালে প্রদর্শনের উদ্দেশ্যে, একটি প্রকৃত API অনুরোধ পাঠানোর পরিবর্তে, আপনি একই বিন্যাসে হার্ডকোড করা মানগুলি ফিরিয়ে দেবেন যা একটি প্রকৃত API ফেরত দেবে।

async function makeApiRequest(currencyFrom, currencyTo) {
  // This hypothetical API returns a JSON such as:
  // {"base":"USD","rates":{"SEK": 0.091}}
  return {
    base: currencyFrom,
    rates: { [currencyTo]: 0.091 },
  };
}

ধাপ 2 : একটি ফাংশন ঘোষণা তৈরি করুন

ফাংশন ঘোষণা তৈরি করুন যা আপনি জেনারেটিভ মডেলে পাস করবেন (এই টিউটোরিয়ালের পরবর্তী ধাপ)।

ফাংশন এবং পরামিতি বর্ণনায় যতটা সম্ভব বিস্তারিত অন্তর্ভুক্ত করুন। কোন ফাংশন নির্বাচন করতে হবে এবং ফাংশন কলের পরামিতিগুলির জন্য কীভাবে মান প্রদান করতে হবে তা নির্ধারণ করতে জেনারেটিভ মডেল এই তথ্য ব্যবহার করে।

// Function declaration, to pass to the model.
const getExchangeRateFunctionDeclaration = {
  name: "getExchangeRate",
  parameters: {
    type: "OBJECT",
    description: "Get the exchange rate for currencies between countries",
    properties: {
      currencyFrom: {
        type: "STRING",
        description: "The currency to convert from.",
      },
      currencyTo: {
        type: "STRING",
        description: "The currency to convert to.",
      },
    },
    required: ["currencyTo", "currencyFrom"],
  },
};

// Executable function code. Put it in a map keyed by the function name
// so that you can call it once you get the name string from the model.
const functions = {
  getExchangeRate: ({ currencyFrom, currencyTo }) => {
    return makeApiRequest( currencyFrom, currencyTo)
  }
};

ধাপ 3 : মডেল ইনিশিয়ালাইজেশনের সময় ফাংশন ঘোষণা নির্দিষ্ট করুন

মডেলের tools প্যারামিটার সেট করে জেনারেটিভ মডেল শুরু করার সময় ফাংশন ঘোষণা নির্দিষ্ট করুন:

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

// ...

const generativeModel = genAI.getGenerativeModel({
  // Use a model that supports function calling, like Gemini 1.0 Pro.
  // See "Supported models" in the "Introduction to function calling" page.
  model: "gemini-1.0-pro",

  // Specify the function declaration.
  tools: {
    functionDeclarations: [getExchangeRateFunctionDeclaration],
  },
});

ধাপ 4 : একটি ফাংশন কল জেনারেট করুন

এখন আপনি সংজ্ঞায়িত ফাংশন সহ মডেলটি প্রম্পট করতে পারেন।

ফাংশন কলিং ব্যবহার করার প্রস্তাবিত উপায় হল চ্যাট ইন্টারফেসের মাধ্যমে, যেহেতু ফাংশন কলগুলি চ্যাটের মাল্টি-টার্ন স্ট্রাকচারে সুন্দরভাবে ফিট করে।

const chat = generativeModel.startChat();
const prompt = "How much is 50 US dollars worth in Swedish krona?";

// Send the message to the model.
const result = await chat.sendMessage(prompt);

// For simplicity, this uses the first function call found.
const call = result.response.functionCalls()[0];

if (call) {
  // Call the executable function named in the function call
  // with the arguments specified in the function call and
  // let it call the hypothetical API.
  const apiResponse = await functions[call.name](call.args);

  // Send the API response back to the model so it can generate
  // a text response that can be displayed to the user.
  const result2 = await chat.sendMessage([{functionResponse: {
    name: 'getExchangeRate',
    response: apiResponse
  }}]);

  // Log the text response.
  console.log(result2.response.text());
}