Gemini API ile işlev çağrısına giriş

Gemini API işlev çağırma özelliğini kullanarak modele özel işlev tanımları sağlayabilirsiniz. Model bu işlevleri doğrudan çağırmaz, bunun yerine bir işlev adını ve önerilen bağımsız değişkenleri belirten yapılandırılmış bir çıkış oluşturur. Ardından, harici bir API'yi çağırmak için işlev adını ve bağımsız değişkenlerini kullanabilir ve elde edilen API çıkışını modele yönelik başka bir sorguya dahil edebilirsiniz. Böylece model daha kapsamlı bir yanıt verebilir ve ek işlemler yapabilir.

İşlev çağrısı, kullanıcıların gerçek zamanlı bilgilerle ve veri tabanları, müşteri ilişkileri yönetimi sistemleri ve belge depoları gibi hizmetlerle etkileşim kurmasını sağlar. Bu özellik, modelin alakalı ve bağlama uygun yanıtlar verme becerisini de geliştirir. İşlev çağırma, harici sistemlerle etkileşime geçmek için en iyi yöntemdir. Kullanım alanınızda modelin hesaplama yapması gerekiyorsa ancak harici sistemler veya API'ler kullanılmıyorsa bunun yerine kod yürütme özelliğini kullanabilirsiniz.

İşlev çağırmayla ilgili çalışan bir örnek için "light bot" not defterine göz atın.

İşlev çağrısının işleyiş şekli

İşlev çağırma özelliğini, bir model isteminde işlev bildirimleri olarak adlandırılan programlama arayüzlerini açıklayan yapılandırılmış sorgu verileri ekleyerek kullanırsınız. İşlev bildirimleri, API işlevinin adını sağlar, işlevin amacını, desteklediği parametreleri ve bu parametrelerin açıklamalarını açıklar. Bir sorgudaki işlev bildirimlerinin listesini modele ilettiğinizde model, isteğe yanıt olarak belirtilen API'nin nasıl kullanılacağını belirlemek için işlev bildirimlerini ve sorgunun geri kalanını analiz eder.

Ardından model, kullanıcının sorusuna yanıt vermek için tanımlanan işlevlerden en az birinin nasıl çağrılacağını belirten bir OpenAPI uyumlu şemada bir nesne döndürür. Ardından, önerilen işlev çağrısı parametrelerini alıp gerçek API'yi çağırabilir, yanıt alabilir ve bu yanıtı kullanıcıya sağlayabilir ya da başka işlemler yapabilirsiniz. Modelin, tanımlanan işlevleri aslında çağırmadığını unutmayın. Bunun yerine, işlevi çağırmak için döndürülen şema nesnesi parametrelerini kullanırsınız. Gemini API, modelin tek bir isteğe göre birden fazla API işlevi çağrısı önerdiği paralel işlev çağrısını da destekler.

İşlev bildirimleri

Bir istemde işlev çağrısı uyguladığınızda bir veya daha fazla function declarations içeren bir tools nesnesi oluşturursunuz. JSON'u kullanarak, özellikle OpenAPI şeması biçiminin belirli bir alt kümesiyle işlevleri tanımlarsınız. Tek bir işlev beyanı aşağıdaki parametreleri içerebilir:

  • name (dize): API çağrısındaki işlevin benzersiz tanımlayıcısıdır.
  • description (dize): İşlevin amacı ve özellikleri hakkında kapsamlı bir açıklama.
  • parameters (nesne): İşlevin gerektirdiği giriş verilerini tanımlar.
    • type (dize): Genel veri türünü belirtir (ör. object).
    • properties (nesne): Her biri şu bilgileri içeren bağımsız parametreleri listeler:
      • type (dize): Parametrenin veri türü (ör. string, integer, boolean).
      • description (dize): Parametrenin amacının ve beklenen biçiminin net bir açıklaması.
    • required (dizi): İşlevin çalışması için zorunlu olan parametre adlarını listeleyen bir dize dizisi.

cURL komutlarını kullanan bir işlev beyanı için kod örnekleri için İşlev çağırma örnekleri bölümüne bakın. Gemini API SDK'larını kullanarak işlev tanımları oluşturma örnekleri için İşlev çağırma eğitimi bölümüne bakın.

İşlev bildirimleri için en iyi uygulamalar

İşlevlerinizi isteklerinize entegre ederken doğru şekilde tanımlamanız önemlidir. Her işlev, davranışına ve modelle etkileşimine yön veren belirli parametrelere dayanır. Aşağıdaki listede, functions_declarations dizisindeki tek bir işlevin parametrelerini tanımlama hakkında yol gösterici bilgiler verilmektedir.

  • name: Boşluk, nokta (.) veya kısa çizgi (-) karakteri içermeyen net ve açıklayıcı adlar kullanın. Bunun yerine alt çizgi (_) karakterlerini veya büyük/küçük harf kullanmayı tercih edin.

  • description: Gerekirse örnekler de vererek ayrıntılı, net ve spesifik işlev açıklamaları sağlayın. Örneğin, find theaters yerine find theaters based on location and optionally movie title that is currently playing in theaters. Aşırı geniş veya belirsiz açıklamalardan kaçının.

  • properties > type: Model halüsinasyonlarını azaltmak için güçlü şekilde yazılmış parametreler kullanın. Örneğin, parametre değerleri sonlu bir kümeden geliyorsa değerleri açıklamada listelemek yerine bir enum alanı kullanın (ör. "type": "enum", "values": ["now_playing", "upcoming"]). Parametre değeri her zaman tam sayıysa türü number yerine integer olarak ayarlayın.

  • properties > description: Somut örnekler ve kısıtlamalar sağlayın. Örneğin, the location to search yerine The city and state, e.g. San Francisco, CA or a zip code e.g. 95616 kullanın.

İşlev çağrısı kullanılırken uygulanabilecek diğer en iyi uygulamalar için En İyi Uygulamalar bölümüne bakın.

İşlev çağrısı modu

Özelliğin yürütme davranışını değiştirmek için işlev çağrısı mode parametresini kullanabilirsiniz. Üç mod vardır:

  • AUTO: Varsayılan model davranışı. Model, bir işlev çağrısını mı yoksa doğal dil yanıtını mı tahmin edeceğine karar verir.
  • ANY: Model, her zaman bir işlev çağrısı tahmin edecek şekilde kısıtlanmıştır. allowed_function_names belirtilmemişse model, mevcut tüm işlev beyanlarından seçim yapar. allowed_function_names sağlanırsa model, izin verilen işlevler arasından seçim yapar.
  • NONE: Model, işlev çağrısını tahmin etmez. Bu durumda model davranışı, herhangi bir işlev beyanı iletmemenizle aynıdır.

ANY modunun ("zorunlu işlev çağrısı") kullanımı yalnızca Gemini 1.5 Pro ve Gemini 1.5 Flash modellerinde desteklenir.

Ayrıca, sağlandığında modelin çağıracağı işlevleri sınırlayan bir allowed_function_names grubu da iletebilirsiniz. allowed_function_names değerini yalnızca mod ANY olduğunda eklemeniz gerekir. İşlev adları, işlev beyanı adlarıyla eşleşmelidir. Mod ANY olarak ayarlandığında ve allowed_function_names ayarlandığında model, sağlanan işlev adı grubundan bir işlev çağrısı tahmin eder.

Örnek istek'ten alınan aşağıdaki kod snippet'inde, mode değerinin ANY olarak nasıl ayarlanacağı ve izin verilen işlevlerin listesinin nasıl belirtileceği gösterilmektedir:

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

İşlev çağrısı örnekleri

Bu bölümde, cURL komutları kullanılarak işlev çağrısı için örnek istemler sağlanmaktadır. Örnekler arasında tek dönüş ve çoklu dönüş senaryoları ve farklı işlev çağırma modlarının etkinleştirilmesi yer alır.

Bu özellikle birlikte cURL komutları kullanılırken işlev ve parametre bilgileri tools öğesine dahil edilir. tools öğesindeki her işlev beyanı işlev adını içerir. Parametreleri, bir OpenAPI uyumlu şeması ve işlev açıklaması kullanarak belirtirsiniz.

Tek tur örneği

Tek tur, dil modelini bir kez çağırdığınız durumdur. İşlev çağırma özelliğinde, modele doğal dil sorgusu ve işlev listesi sağladığınızda tek dönüşlü bir kullanım alanı olabilir. Bu durumda model, hangi işlevin çağrılacağını ve çağrılacağı bağımsız değişkenleri tahmin etmek için işlev adını, parametrelerini ve açıklamasını içeren işlev tanımını kullanır.

Aşağıdaki curl örneği, bir filmin nerede oynatıldığıyla ilgili bilgileri döndüren bir işlevin açıklamasını iletme örneğidir. İstek, find_movies ve find_theaters gibi çeşitli işlev beyanları içerir.

Tek turlu işlev çağrısı örnek isteği

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"
            ]
          }
        }
      ]
    }
  ]
}'
    

Bu curl örneğinin yanıtı aşağıdakine benzer olabilir.

Tek dönüşlü işlev çağıran curl örnek yanıtı

[{
  "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
  }
}]
    

HERHANGİ modunu kullanan tek dönüş örneği

Aşağıdaki curl örneği, tek dönüş örneğine benzer ancak modu ANY olarak ayarlar:

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

ANY modu (istek) kullanılarak tek seferlik işlev çağrısı

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"
    },
  }
}'
    

Yanıt aşağıdakine benzer olabilir:

ANY modunu (yanıt) kullanarak tek dönüşlü işlev çağırma

{
  "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"
      }
    ]
  }
}
    

HER modu ve izin verilen işlevleri kullanan tek dönüşlü örnek

Aşağıdaki curl örneği, tek turlu örneğe benzer ancak modu ANY olarak ayarlar ve izin verilen işlevlerin listesini içerir:

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

ANY modunu ve izin verilen işlevleri kullanarak tek seferlik işlev çağırma (istek)

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"]
    },
  }
}'
    

Model, izin verilen işlevler listesinde olmadığı için find_movies işlevini tahmin edemez ve bunun yerine farklı bir işlevi tahmin eder. Yanıt aşağıdakine benzer olabilir:

ANY modunu ve izin verilen işlevleri kullanan tek dönüşlü işlev çağırma (yanıt)

{
  "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"
      }
    ]
  }
}
    

Çok turlu örnekler

Aşağıdakileri yaparak çok turlu işlev çağırma senaryosu uygulayabilirsiniz:

  1. Dil modelini çağırarak işlev çağrısı yanıtı alın. Bu ilk tur.
  2. İlk turdan gelen işlev çağrısı yanıtını ve bu işlevi çağırarak aldığınız işlev yanıtını kullanarak dil modelini çağırın. Bu ikinci tur.

İkinci turda gelen yanıt, sorgunuzu ilk turda yanıtlamak için sonuçları özetler veya sorgunuzla ilgili daha fazla bilgi edinmek için kullanabileceğiniz ikinci bir işlev çağrısı içerir.

Bu konu, çok turlu iki curl örneği içerir:

Önceki bir turda verilen yanıtı kullanma

Aşağıdaki curl örneği, yanıt almak için önceki tek dönüşlü örnek tarafından döndürülen işlevi ve bağımsız değişkenleri çağırır. Tek dönüşlü örnek tarafından döndürülen yöntem ve parametreler bu JSON'dadır.

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

Çok turlu işlev çağrısı yapan curl örnek isteği

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"]
      }
    }]
  }]
}'
    

Bu curl örneğinin yanıtı, find_theaters yönteminin çağrılmasının sonucunu içerir. Yanıt aşağıdakine benzer olabilir:

Çok turlu işlev çağırma curl örnek yanıtı

{
  "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
  }
}
    

Modeli birden fazla kez çağırma

Aşağıdaki cURL örneği, bir işlevi çağırmak için üretken yapay zeka modelini birden çok kez çağırır. Model, işlevi her çağrığında istekteki farklı bir kullanıcı sorgusunu yanıtlamak için farklı bir işlev kullanabilir.

Çok turlu işlev çağıran curl örnek isteği

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"]
      }
    }]
  }]
}'
    

Çok turlu işlev çağırma curl örnek yanıtı

[{
  "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
  }
}
]
    

En iyi uygulamalar

İşlev çağrılarınızın doğruluğunu ve güvenilirliğini artırmak için bu en iyi uygulamalardan yararlanın.

Kullanıcı istemi

En iyi sonuçlar için kullanıcı sorgusunun başına aşağıdaki ayrıntıları ekleyin:

  • Model için ek bağlam. Örneğin, You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • İşlevlerin nasıl ve ne zaman kullanılacağıyla ilgili ayrıntılar veya talimatlar. Örneğin, Don't make assumptions on showtimes. Always use a future date for showtimes.
  • Kullanıcı sorguları belirsizse netleştirici sorular sorma talimatları. Örneğin, Ask clarifying questions if not enough information is available to complete the request.

Örnekleme parametreleri

Sıcaklık parametresi için 0 veya başka bir düşük değer kullanın. Bu, modele daha güvenilir sonuçlar üretmesini söyler ve halüsinasyonları azaltır.

API çağrısı

Model, bir sipariş gönderecek, veritabanını güncelleyecek veya başka önemli sonuçlara yol açacak bir işlevin çağrılmasını öneriyorsa işlev çağrısını yürütmeden önce kullanıcıyla doğrulayın.