Gemma ile işlev çağırma

Gemma gibi üretken yapay zeka (AI) modelini kullanırken görevleri tamamlamak veya soruları yanıtlamak için programlama arayüzlerini çalıştırmak üzere modeli kullanabilirsiniz. Bir programlama arayüzü tanımlayarak bir modele talimat vermek ve ardından bu arayüzü kullanan bir istek göndermek işlev çağırma olarak adlandırılır.

Gemma, araca özel bir jeton döndürmez. Çerçeveniz, çıkışın yapısının istenen işlev çıkışı spesifikasyonunuzla eşleşip eşleşmediğini kontrol ederek bir araç çağrısını algılamalıdır.

İşlev çağrısını çeşitli uygulamalarda kullanabilirsiniz:

  • Programlama API'si için doğal dil arayüzü oluşturun. Böylece programlama bilmeyen kullanıcılar programatik arayüzü kodlama olmadan kullanabilir.
  • Yapay zeka temsilcisi iş akışının bir parçası olarak programlama çağrıları oluşturun.

İşlev çağrısı Gemma 3'te desteklenir ancak işlev çağrısı tekniği Gemma'nın önceki sürümleriyle kullanılabilir. Bu kılavuzda, işlev çağrısı kullanan Gemma istemlerinin nasıl oluşturulacağıyla ilgili talimatlar verilmektedir. En iyi performans için Gemma3 27B'yi, dengeli performans ve gecikme için ise Gemma3 12B'yi öneririz.

Programlama işlevlerini çağırma

Çıkış biçimini belirten ve kullanılabilir işlevleri tanımlayan talimatlar sağlayan bir istem oluşturarak Gemma ile işlev çağırmayı kullanabilirsiniz.

Kullanıcı istemi dahil edildiğinde model, belirttiğiniz çıkış biçimiyle eşleşen bir dize olan bir işlev çağrısı döndürür. Bu, tanımlanan işlevleri çağırmak için model çerçeveniz tarafından ayrıştırılacak bir istek anlamına gelir.

Aşağıdaki istem örneğinde, işlev çağrısı söz dizimi ve modelden bir işlev çağrısı çıkışının yanı sıra bir işlev tanımı bloğu gösterilmektedir. Aşağıdaki örnek istem, ürün kataloğu için bir programlama arayüzüyle kullanılmalıdır:

You have access to functions. If you decide to invoke any of the function(s),
 you MUST put it in the format of
[func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)]

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

Bu istem aşağıdaki yanıtı vermelidir:

[get_product_name_by_PID(PID="807ZPKBL9V")]

Bu örnekte Python stilinde bir işlev çağrısı çıkışı kullanılmaktadır. Alternatif olarak, aşağıdaki örnekte gösterildiği gibi JSON stilinde bir çıkış biçimi de belirtebilirsiniz:

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

Bu istem aşağıdaki yanıtı vermelidir:

{"name": "get_product_name_by_PID", "parameters": {"PID": "807ZPKBL9V"}}

İşlev çağrısı isteğinin bileşenleri

Gemma modelleriyle işlev çağrısı kullanırken model isteminiz şu sırayı ve yapıyı izlemelidir:

  1. İşlev çağrısı kurulumu
  2. İşlev tanımları

Aşağıdaki bölümlerde bu istem bileşenlerinin her biri hakkında daha fazla bilgi verilmektedir.

İşlev çağrısı ayarları

İşlev çağırma isteğinin setup (kurulum) bölümü, modelin beklenen genel davranışını belirler. Bu bölümde, modelin davranışıyla ilgili ek genel talimatlar ekleyebilirsiniz (ör. çıktının print veya console.log işlevi kullanılarak gösterilmesi gerektiğini belirtme). Kod söz dizimini belirtmek için Markdown stilinde tek tırnak işareti (func_name) kullanın.

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function

Bu talimatlar mümkün olduğunca net ve kısa olmalıdır. En önemli talimatlara öncelik verin ve çok fazla genel talimat verme konusunda dikkatli olun. Gemma modelleri, özellikle daha düşük parametre sayısına sahip model sürümlerini kullandığınızda çok ayrıntılı veya net bir şekilde ifade edilmeyen talimatları yoksayabilir.

İşlev tanımı

İstemin tanım bölümünde işlev adı, parametreler ve her biri için bir açıklama da dahil olmak üzere çıkış sağlanır. Fonksiyonları gösterilen biçimde tanımlayabilirsiniz. İşlev beyanı bloğunda tek veya birden fazla işlev tanımlanabilir.

[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  },
  {
    "name": "get_product_price_by_PID",
    "description": "Finds the price of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]

Sonraki adımlar

Gemma modellerini dağıtma ve çalıştırma yöntemlerine göz atın: