Gemini API এর সাথে ফাংশন কলিং এর ভূমিকা

Gemini API ফাংশন কলিং বৈশিষ্ট্য ব্যবহার করে, আপনি মডেলটিকে কাস্টম ফাংশন সংজ্ঞা প্রদান করতে পারেন। মডেলটি সরাসরি এই ফাংশনগুলিকে আহ্বান করে না, তবে এর পরিবর্তে কাঠামোগত আউটপুট তৈরি করে যা একটি ফাংশনের নাম এবং প্রস্তাবিত আর্গুমেন্ট নির্দিষ্ট করে। তারপরে আপনি একটি বহিরাগত API কল করার জন্য ফাংশনের নাম এবং আর্গুমেন্টগুলি ব্যবহার করতে পারেন, এবং আপনি মডেলটিতে আরও একটি ক্যোয়ারীতে ফলস্বরূপ API আউটপুট অন্তর্ভুক্ত করতে পারেন, মডেলটিকে আরও ব্যাপক প্রতিক্রিয়া প্রদান করতে এবং অতিরিক্ত পদক্ষেপ নিতে সক্ষম করে৷

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

ফাংশন কলিংয়ের একটি কার্যকরী উদাহরণের জন্য, "হালকা বট" নোটবুকটি দেখুন।

ফাংশন কলিং কিভাবে কাজ করে

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

মডেলটি তারপরে একটি OpenAPI সামঞ্জস্যপূর্ণ স্কিমাতে একটি বস্তু ফেরত দেয় যাতে ব্যবহারকারীর প্রশ্নের উত্তর দেওয়ার জন্য ঘোষিত ফাংশনগুলির এক বা একাধিক কল করতে হয়। তারপরে আপনি প্রস্তাবিত ফাংশন কল প্যারামিটারগুলি নিতে পারেন, প্রকৃত API কল করতে পারেন, একটি প্রতিক্রিয়া পেতে পারেন এবং ব্যবহারকারীকে সেই প্রতিক্রিয়া প্রদান করতে পারেন বা আরও পদক্ষেপ নিতে পারেন৷ নোট করুন যে মডেলটি আসলে ঘোষিত ফাংশনগুলিকে কল করে না। পরিবর্তে, আপনি ফাংশন কল করার জন্য ফিরে আসা স্কিমা অবজেক্ট প্যারামিটার ব্যবহার করুন। জেমিনি API সমান্তরাল ফাংশন কলিংকেও সমর্থন করে, যেখানে মডেলটি একক অনুরোধের ভিত্তিতে একাধিক API ফাংশন কলের সুপারিশ করে।

ফাংশন ঘোষণা

যখন আপনি একটি প্রম্পটে ফাংশন কলিং প্রয়োগ করেন, আপনি একটি tools অবজেক্ট তৈরি করেন, যাতে এক বা একাধিক function declarations থাকে। আপনি JSON ব্যবহার করে ফাংশন সংজ্ঞায়িত করেন, বিশেষত OpenAPI স্কিমা বিন্যাসের একটি নির্বাচিত উপসেটের সাথে। একটি একক ফাংশন ঘোষণা নিম্নলিখিত পরামিতি অন্তর্ভুক্ত করতে পারে:

  • name (স্ট্রিং): API কলের মধ্যে ফাংশনের জন্য অনন্য শনাক্তকারী।
  • description (স্ট্রিং): ফাংশনের উদ্দেশ্য এবং ক্ষমতার একটি ব্যাপক ব্যাখ্যা।
  • parameters (অবজেক্ট): ফাংশনের জন্য প্রয়োজনীয় ইনপুট ডেটা সংজ্ঞায়িত করে।
    • type (স্ট্রিং): সামগ্রিক ডেটা টাইপ নির্দিষ্ট করে, যেমন object
    • properties (অবজেক্ট): পৃথক পরামিতি তালিকাভুক্ত করে, প্রতিটির সাথে:
      • type (স্ট্রিং): প্যারামিটারের ডেটা টাইপ, যেমন string , integer , boolean
      • description (স্ট্রিং): প্যারামিটারের উদ্দেশ্য এবং প্রত্যাশিত বিন্যাসের একটি স্পষ্ট ব্যাখ্যা।
    • required (অ্যারে): ফাংশন পরিচালনা করার জন্য বাধ্যতামূলক প্যারামিটার নামের তালিকাভুক্ত স্ট্রিংগুলির একটি অ্যারে।

CURL কমান্ড ব্যবহার করে ফাংশন ঘোষণার কোড উদাহরণের জন্য, ফাংশন কলিং উদাহরণ দেখুন। Gemini API SDK ব্যবহার করে ফাংশন ঘোষণা তৈরি করার উদাহরণের জন্য, ফাংশন কলিং টিউটোরিয়াল দেখুন।

ফাংশন ঘোষণার জন্য সর্বোত্তম অনুশীলন

আপনার অনুরোধগুলির সাথে একীভূত করার সময় আপনার ফাংশনগুলিকে সঠিকভাবে সংজ্ঞায়িত করা অপরিহার্য। প্রতিটি ফাংশন নির্দিষ্ট পরামিতিগুলির উপর নির্ভর করে যা মডেলের সাথে তার আচরণ এবং মিথস্ক্রিয়া নির্দেশ করে। নিম্নলিখিত তালিকা একটি functions_declarations অ্যারেতে একটি পৃথক ফাংশনের পরামিতি সংজ্ঞায়িত করার জন্য নির্দেশিকা প্রদান করে।

  • name : স্পেস, পিরিয়ড ( . ), বা ড্যাশ ( - ) অক্ষর ছাড়া পরিষ্কার, বর্ণনামূলক নাম ব্যবহার করুন। পরিবর্তে, আন্ডারস্কোর ( _ ) অক্ষর বা উটের কেস ব্যবহার করুন।

  • description : প্রয়োজনে উদাহরণ প্রদান করে বিস্তারিত, পরিষ্কার এবং নির্দিষ্ট ফাংশনের বর্ণনা দিন। উদাহরণস্বরূপ, find theaters পরিবর্তে, find theaters based on location and optionally movie title that is currently playing in theaters. অত্যধিক বিস্তৃত বা অস্পষ্ট বর্ণনা এড়িয়ে চলুন.

  • properties > type : মডেল হ্যালুসিনেশন কমাতে দৃঢ়ভাবে টাইপ করা পরামিতি ব্যবহার করুন। উদাহরণস্বরূপ, যদি প্যারামিটারের মানগুলি একটি সীমাবদ্ধ সেট থেকে হয়, তবে বর্ণনায় মানগুলি তালিকাভুক্ত করার পরিবর্তে একটি enum ক্ষেত্র ব্যবহার করুন (যেমন, "type": "enum", "values": ["now_playing", "upcoming"] ) . যদি প্যারামিটারের মান সর্বদা একটি পূর্ণসংখ্যা হয়, তাহলে number পরিবর্তে integer ধরণটি সেট করুন।

  • properties > description : কংক্রিট উদাহরণ এবং সীমাবদ্ধতা প্রদান করুন। উদাহরণস্বরূপ, the location to search পরিবর্তে, The city and state, eg San Francisco, CA or a zip code eg 95616

ফাংশন কলিং ব্যবহার করার সময় আরও সেরা অনুশীলনের জন্য, সেরা অনুশীলন বিভাগটি দেখুন।

ফাংশন কলিং মোড

আপনি বৈশিষ্ট্যটির সম্পাদন আচরণ পরিবর্তন করতে ফাংশন কলিং mode প্যারামিটার ব্যবহার করতে পারেন। তিনটি মোড উপলব্ধ আছে:

  • AUTO : ডিফল্ট মডেল আচরণ। মডেলটি একটি ফাংশন কল বা একটি প্রাকৃতিক ভাষা প্রতিক্রিয়া ভবিষ্যদ্বাণী করার সিদ্ধান্ত নেয়।
  • ANY : মডেলটি সবসময় একটি ফাংশন কলের পূর্বাভাস দিতে বাধ্য। allowed_function_names প্রদান করা না হলে, মডেলটি উপলব্ধ সমস্ত ফাংশন ঘোষণা থেকে বেছে নেয়। allowed_function_names প্রদান করা হলে, অনুমোদিত ফাংশনগুলির সেট থেকে মডেলটি বেছে নেয়।
  • NONE : মডেলটি একটি ফাংশন কলের পূর্বাভাস দেবে না। এই ক্ষেত্রে, মডেল আচরণ একই রকম যদি আপনি কোনো ফাংশন ঘোষণা পাস না করেন।

ANY মোডের ব্যবহার ("ফোর্সড ফাংশন কলিং") শুধুমাত্র Gemini 1.5 Pro এবং Gemini 1.5 Flash মডেলের জন্য সমর্থিত৷

আপনি allowed_function_names একটি সেটও পাস করতে পারেন যা প্রদান করা হলে, মডেলটি যে ফাংশনগুলিকে কল করবে তা সীমিত করে। আপনার শুধুমাত্র allowed_function_names অন্তর্ভুক্ত করা উচিত যখন মোডটি ANY হয়। ফাংশনের নাম ফাংশন ঘোষণার নামের সাথে মিলিত হওয়া উচিত। মোড ANY এ সেট করা এবং allowed_function_names সেট করা হলে, মডেলটি প্রদত্ত ফাংশন নামের সেট থেকে একটি ফাংশন কলের পূর্বাভাস দেবে।

একটি উদাহরণ অনুরোধ থেকে নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে mode ANY সেট করতে হয় এবং অনুমোদিত ফাংশনগুলির একটি তালিকা নির্দিষ্ট করতে হয়:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

ফাংশন কলিং উদাহরণ

এই বিভাগটি cURL কমান্ড ব্যবহার করে ফাংশন কল করার জন্য উদাহরণ প্রম্পট প্রদান করে। উদাহরণগুলির মধ্যে রয়েছে একক পালা এবং একাধিক-পালা পরিস্থিতি, এবং বিভিন্ন ফাংশন কলিং মোড সক্ষম করা।

এই বৈশিষ্ট্যের সাথে cURL কমান্ড ব্যবহার করার সময়, ফাংশন এবং প্যারামিটার তথ্য tools উপাদানে অন্তর্ভুক্ত করা হয়। tools এলিমেন্টের প্রতিটি ফাংশনের ঘোষণায় ফাংশনের নাম থাকে এবং আপনি একটি OpenAPI সামঞ্জস্যপূর্ণ স্কিমা এবং একটি ফাংশনের বিবরণ ব্যবহার করে প্যারামিটারগুলি নির্দিষ্ট করেন।

একক পালা উদাহরণ

আপনি যখন ভাষা মডেলকে একবার কল করেন তখন একক পালা হয়। ফাংশন কলিং এর সাথে, আপনি মডেলটিকে একটি প্রাকৃতিক ভাষা ক্যোয়ারী এবং ফাংশনগুলির একটি তালিকা প্রদান করার সময় একটি একক-পালা ব্যবহারের ক্ষেত্রে হতে পারে৷ এই ক্ষেত্রে, মডেলটি ফাংশন ঘোষণা ব্যবহার করে, যার মধ্যে ফাংশনের নাম, পরামিতি এবং বিবরণ রয়েছে, কোন ফাংশনকে কল করতে হবে এবং আর্গুমেন্টগুলিকে কল করতে হবে তা অনুমান করতে।

নিচের কার্ল নমুনাটি একটি ফাংশনের বর্ণনায় পাস করার একটি উদাহরণ যা একটি চলচ্চিত্র কোথায় চলছে সে সম্পর্কে তথ্য প্রদান করে। অনুরোধে বেশ কিছু ফাংশন ঘোষণা অন্তর্ভুক্ত করা হয়েছে, যেমন find_movies এবং find_theaters

একক পালা ফাংশন কলিং উদাহরণ অনুরোধ

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "Which theaters in Mountain View show Barbie movie?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ]
}'
    

এই কার্ল উদাহরণের প্রতিক্রিয়া নিম্নলিখিত অনুরূপ হতে পারে.

একক-টার্ন ফাংশন কলিং কার্ল উদাহরণ প্রতিক্রিয়া

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "movie": "Barbie",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "totalTokenCount": 9
  }
}]
    

যে কোনো মোড ব্যবহার করে একক-পালা উদাহরণ

নিম্নলিখিত কার্ল উদাহরণটি একক-পালা উদাহরণের অনুরূপ, তবে এটি মোডটিকে ANY -এ সেট করে:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY"
  },
}

যেকোনও মোড ব্যবহার করে সিঙ্গল-টার্ন ফাংশন কলিং (অনুরোধ)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY"
    },
  }
}'
    

প্রতিক্রিয়া নিম্নলিখিত অনুরূপ হতে পারে:

যেকোনও মোড ব্যবহার করে সিঙ্গল-টার্ন ফাংশন কলিং (প্রতিক্রিয়া)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "",
                "location": "North Seattle, WA"
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

যেকোনো মোড এবং অনুমোদিত ফাংশন ব্যবহার করে একক-পালা উদাহরণ

নিম্নলিখিত কার্ল উদাহরণটি একক-পালা উদাহরণের অনুরূপ, তবে এটি মোডটিকে ANY তে সেট করে এবং অনুমোদিত ফাংশনগুলির একটি তালিকা অন্তর্ভুক্ত করে:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

যেকোনও মোড এবং অনুমোদিত ফাংশন ব্যবহার করে সিঙ্গল-টার্ন ফাংশন কলিং (অনুরোধ)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY",
      "allowed_function_names": ["find_theaters", "get_showtimes"]
    },
  }
}'
    

মডেলটি find_movies ফাংশনের ভবিষ্যদ্বাণী করতে পারে না, কারণ এটি অনুমোদিত ফাংশনের তালিকায় নেই, তাই এটি পরিবর্তে একটি ভিন্ন ফাংশনের পূর্বাভাস দেয়। প্রতিক্রিয়া নিম্নলিখিত অনুরূপ হতে পারে:

যেকোনও মোড এবং অনুমোদিত ফাংশন ব্যবহার করে সিঙ্গল-টার্ন ফাংশন কলিং (প্রতিক্রিয়া)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "location": "North Seattle, WA",
                "movie": null
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

মাল্টি-টার্ন উদাহরণ

আপনি নিম্নলিখিতগুলি করে একটি মাল্টি-টার্ন ফাংশন কলিং দৃশ্যকল্প বাস্তবায়ন করতে পারেন:

  1. ভাষা মডেল কল করে একটি ফাংশন কল প্রতিক্রিয়া পান. এই প্রথম পালা.
  2. প্রথম পালা থেকে ফাংশন কল রেসপন্স ব্যবহার করে ল্যাঙ্গুয়েজ মডেলে কল করুন এবং সেই ফাংশন কল করার ফলে আপনি যে ফাংশন রেসপন্স পাবেন। এবার দ্বিতীয় পালা।

দ্বিতীয় পালা থেকে প্রতিক্রিয়া হয় প্রথম বারে আপনার প্রশ্নের উত্তর দেওয়ার জন্য ফলাফলগুলিকে সংক্ষিপ্ত করে, অথবা একটি দ্বিতীয় ফাংশন কল রয়েছে যা আপনি আপনার প্রশ্নের জন্য আরও তথ্য পেতে ব্যবহার করতে পারেন৷

এই বিষয়ে দুটি মাল্টি-টার্ন কার্ল উদাহরণ রয়েছে:

একটি পূর্ববর্তী পালা থেকে একটি প্রতিক্রিয়া ব্যবহার করুন

নিম্নলিখিত কার্ল নমুনা একটি প্রতিক্রিয়া পেতে পূর্ববর্তী একক-টার্ন উদাহরণ দ্বারা ফিরে ফাংশন এবং আর্গুমেন্ট কল. সিঙ্গেল-টার্ন উদাহরণ দ্বারা প্রত্যাবর্তিত পদ্ধতি এবং পরামিতিগুলি এই JSON-এ রয়েছে৷

"functionCall": {
  "name": "find_theaters",
  "args": {
    "movie": "Barbie",
    "location": "Mountain View, CA"
  }
}

মাল্টি-টার্ন ফাংশন কলিং কার্ল উদাহরণ অনুরোধ

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "user",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

এই কার্ল উদাহরণের প্রতিক্রিয়াতে find_theaters পদ্ধতিতে কল করার ফলাফল অন্তর্ভুক্ত রয়েছে। প্রতিক্রিয়া নিম্নলিখিত অনুরূপ হতে পারে:

মাল্টি-টার্ন ফাংশন কলিং কার্ল উদাহরণ প্রতিক্রিয়া

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "candidatesTokenCount": 27,
    "totalTokenCount": 36
  }
}
    

মডেলটিকে একাধিকবার কল করুন

নিম্নলিখিত cURL উদাহরণটি একটি ফাংশন কল করার জন্য জেনারেটিভ এআই মডেলটিকে একাধিকবার কল করে। প্রতিবার মডেলটি ফাংশনটিকে কল করলে, অনুরোধে একটি ভিন্ন ব্যবহারকারীর প্রশ্নের উত্তর দিতে এটি একটি ভিন্ন ফাংশন ব্যবহার করতে পারে।

মাল্টি-টার্ন ফাংশন কলিং কার্ল উদাহরণ অনুরোধ

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "user",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  },
  {
    "role": "model",
    "parts": [{
      "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
    }]
  },{
    "role": "user",
    "parts": [{
      "text": "Can we recommend some comedy movies on show in Mountain View?"
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

মাল্টি-টার্ন ফাংশন কলিং কার্ল উদাহরণ প্রতিক্রিয়া

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "comedy",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 48,
    "totalTokenCount": 48
  }
}
]
    

সর্বোত্তম অনুশীলন

আপনার ফাংশন কলগুলির নির্ভুলতা এবং নির্ভরযোগ্যতা উন্নত করতে এই সেরা অনুশীলনগুলি অনুসরণ করুন৷

ব্যবহারকারী প্রম্পট

সর্বোত্তম ফলাফলের জন্য, নিম্নলিখিত বিশদ বিবরণ সহ ব্যবহারকারীর ক্যোয়ারীটি আগে রাখুন:

  • মডেলের জন্য অতিরিক্ত প্রসঙ্গ। উদাহরণস্বরূপ, You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • কিভাবে এবং কখন ফাংশন ব্যবহার করতে হবে তার বিস্তারিত বা নির্দেশাবলী। উদাহরণস্বরূপ, Don't make assumptions on showtimes. Always use a future date for showtimes.
  • ব্যবহারকারীর প্রশ্নগুলি অস্পষ্ট হলে স্পষ্ট প্রশ্ন জিজ্ঞাসা করার নির্দেশাবলী। উদাহরণস্বরূপ, Ask clarifying questions if not enough information is available to complete the request.

নমুনা পরামিতি

তাপমাত্রার প্যারামিটারের জন্য, 0 বা অন্য কম মান ব্যবহার করুন। এটি মডেলটিকে আরও আত্মবিশ্বাসী ফলাফল তৈরি করার নির্দেশ দেয় এবং হ্যালুসিনেশন কমায়।

API আহ্বান

যদি মডেলটি এমন একটি ফাংশনের আহ্বানের প্রস্তাব দেয় যা একটি অর্ডার পাঠাবে, একটি ডাটাবেস আপডেট করবে বা অন্যথায় উল্লেখযোগ্য পরিণতি হবে, তাহলে এটি কার্যকর করার আগে ব্যবহারকারীর সাথে ফাংশন কলটি যাচাই করুন৷