ফাংশন কলিং

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

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

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

আপনি যখন ফাংশন কলিং প্রয়োগ করেন, আপনি এক বা একাধিক ফাংশন ঘোষণা তৈরি করেন, তারপর মডেলে পাস করা একটি tools অবজেক্টে ফাংশন ঘোষণা যোগ করুন। প্রতিটি ফাংশন ঘোষণায় একটি ফাংশন সম্পর্কে তথ্য রয়েছে যা নিম্নলিখিতগুলি অন্তর্ভুক্ত করে:

  • ফাংশনের নাম
  • একটি OpenAPI সামঞ্জস্যপূর্ণ স্কিমা বিন্যাসে ফাংশন পরামিতি। একটি নির্বাচন উপসেট সমর্থিত. কার্ল ব্যবহার করার সময়, JSON ব্যবহার করে স্কিমা নির্দিষ্ট করা হয়।
  • ফাংশনের বিবরণ (ঐচ্ছিক)। সেরা ফলাফলের জন্য, আমরা আপনাকে একটি বিবরণ অন্তর্ভুক্ত করার পরামর্শ দিই।

এই নথিতে কার্ল উদাহরণ রয়েছে যা GenerativeModel ক্লাস এবং এর পদ্ধতিগুলির সাথে REST কল করে।

সমর্থিত মডেল

নিম্নলিখিত মডেল ফাংশন কলিং সমর্থন করে:

  • gemini-1.0-pro
  • gemini-1.0-pro-001
  • gemini-1.5-pro-latest

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

আপনি ফাংশন কলিং এর জন্য এক্সিকিউশন আচরণ সংজ্ঞায়িত করতে ফাংশন কলিং মোড ব্যবহার করতে পারেন। তিনটি মোড উপলব্ধ আছে:

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

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

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

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

ফাংশন কলিং সিআরএল নমুনা

যখন আপনি 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": "function",
    "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 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": "function",
    "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
  }
}
]
    

সেরা অনুশীলন

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

ফাংশন কী ক্ষেত্র

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

function_declarations (অ্যারে) :

  • এক বা একাধিক বস্তু রয়েছে, প্রতিটি একটি স্বতন্ত্র ফাংশন প্রতিনিধিত্ব করে।

প্রতিটি function_declarations অবজেক্টের মধ্যে:

  • name (স্ট্রিং) : API কলের মধ্যে ফাংশনের জন্য অনন্য শনাক্তকারী।
    • সর্বোত্তম অভ্যাস : স্পেস, পিরিয়ড ( . ), বা ড্যাশ ( - ) অক্ষর ছাড়া পরিষ্কার, বর্ণনামূলক নাম ব্যবহার করুন। পরিবর্তে, আন্ডারস্কোর ( _ ) অক্ষর বা উটের কেস ব্যবহার করুন।
  • description (স্ট্রিং) : ফাংশনের উদ্দেশ্য এবং ক্ষমতার একটি ব্যাপক ব্যাখ্যা।
    • সর্বোত্তম অনুশীলন : বিস্তারিত, পরিষ্কার এবং ফাংশনের বর্ণনায় নির্দিষ্ট হোন, প্রয়োজনে উদাহরণ প্রদান করুন। উদাহরণস্বরূপ, find theaters পরিবর্তে, find theaters based on location and optionally movie title that is currently playing in theaters. অত্যধিক বিস্তৃত বা অস্পষ্ট বর্ণনা এড়িয়ে চলুন.
  • parameters (অবজেক্ট) : ফাংশনের জন্য প্রয়োজনীয় ইনপুট ডেটা সংজ্ঞায়িত করে।
    • type (স্ট্রিং) : সামগ্রিক ডেটা টাইপ (যেমন, object ) নির্দিষ্ট করে।
    • properties (বস্তু) :
      • পৃথক পরামিতি তালিকাভুক্ত করে, প্রতিটির সাথে:
        • type (স্ট্রিং) : প্যারামিটারের ডেটা টাইপ (যেমন, string , integer , boolean )।
          • সর্বোত্তম অনুশীলন : মডেল হ্যালুসিনেশন কমাতে দৃঢ়ভাবে টাইপ করা প্যারামিটার ব্যবহার করুন। উদাহরণস্বরূপ, যদি প্যারামিটারের মানগুলি একটি সীমাবদ্ধ সেট থেকে হয়, তবে বর্ণনায় মানগুলি তালিকাভুক্ত করার পরিবর্তে একটি enum ক্ষেত্র ব্যবহার করুন (যেমন, "type": "enum", "values": ["now_playing", "upcoming"] ) . যদি প্যারামিটারের মান সর্বদা একটি পূর্ণসংখ্যা হয়, তাহলে number পরিবর্তে integer ধরণটি সেট করুন।
        • description (স্ট্রিং) : প্যারামিটারের উদ্দেশ্য এবং প্রত্যাশিত বিন্যাসের একটি স্পষ্ট ব্যাখ্যা।
          • সর্বোত্তম অনুশীলন : নির্দিষ্ট উদাহরণ এবং সীমাবদ্ধতা প্রদান করুন। উদাহরণস্বরূপ, the location to search পরিবর্তে, The city and state, eg San Francisco, CA or a zip code eg 95616
    • required (অ্যারে) :
      • ফাংশন পরিচালনার জন্য বাধ্যতামূলক প্যারামিটার নামের তালিকাভুক্ত স্ট্রিংগুলির একটি অ্যারে৷

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

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

  • মডেলের জন্য অতিরিক্ত প্রসঙ্গ। উদাহরণস্বরূপ, 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 আহ্বান

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