İşlev çağrısı için Gemini API'yi kullanma


İşlev çağrısı, üretken modeller. Ardından bu çıkışları kullanarak diğer API'leri çağırabilir ve yanıt verilerini modele uygun hale getirmemize yardımcı olur. Başka bir deyişle, işlev çağrısı üretken modelleri harici sistemlere bağlarsınız. Böylece, en güncel ve doğru bilgileri içerir.

Gemini modellerine işlevlerin açıklamalarını sağlayabilirsiniz. Bunlar: uygulamanızın dilinde yazdığınız işlevler (yani Cloud Functions). Model, sizden bir işlevi çağırmanızı ve sonuç; modelin sorgunuzu ele almasına yardımcı olur.

Şunları yapabilirsiniz: işlev çağrısı hakkında daha fazla bilgi inceleyebilirsiniz.

Başlamadan önce

Henüz yapmadıysanız Firebase için Vertex AI SDK'ları başlangıç kılavuzu Aşağıdakilerin tümünü yaptığınızdan emin olun:

  • Aşağıdakiler dahil olmak üzere yeni veya mevcut bir Firebase projesi oluşturun: Fiyatlandırma planını Blaze edin ve gerekli API'leri etkinleştirin.

  • Uygulamanızı kaydetme ve Firebase yapılandırmasını uygulamanıza ekleyin.

  • SDK'yı ekleyip Vertex AI hizmetini ve üretken modeli ilk kullanıma hazırlama dokunun.

Uygulamanızı Firebase'e bağladıktan, SDK'yı ekledikten ve Vertex AI hizmetine ve üretken modele yönelik Gemini API'yi çağırmaya hazırsınız.

İşlev çağrısı oluşturma

Bu eğitimde, modelin varsayımsal bir para birimiyle etkileşime girmesini Exchange API'si şu parametreleri destekler:

Parametre Tür Zorunlu Açıklama
currencyFrom dize evet Para birimi dönüştürülecek
currencyTo dize evet Dönüştürülecek para birimi

Örnek API isteği

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

Örnek API yanıtı

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

1. Adım: API isteğini gönderen işlevi oluşturun

Henüz yapmadıysanız API isteği.

Gerçek bir API göndermek yerine, bu eğitimde gösterildiği gibi kodu gömülü değerleri, gerçek bir sorguyla aynı biçimde API döndürülür.

func makeAPIRequest(currencyFrom: String,
                    currencyTo: String) -> JSONObject {
  // This hypothetical API returns a JSON such as:
  // {"base":"USD","rates":{"SEK": 10.99}}
  return [
    "base": .string(currencyFrom),
    "rates": .object([currencyTo: .number(10.99)]),
  ]
}

2. Adım: Bir işlev bildirimi oluşturun

Üretken modele ileteceğiniz işlev bildirimini oluşturun (bu eğiticinin sonraki adımı).

İşlev ve parametre açıklamalarına mümkün olduğunca fazla ayrıntı ekleyin. Üretken model hangi işlevin seçileceğini belirlemek için bu bilgilerden yararlanır. ve işlev çağrısındaki parametreler için nasıl değer sağlanacağını ele alacağız.

let getExchangeRate = FunctionDeclaration(
  name: "getExchangeRate",
  description: "Get the exchange rate for currencies between countries",
  parameters: [
    "currencyFrom": Schema(
      type: .string,
      description: "The currency to convert from."
    ),
    "currencyTo": Schema(
      type: .string,
      description: "The currency to convert to."
    ),
  ],
  requiredParameters: ["currencyFrom", "currencyTo"]
)

3. Adım: Modeli başlatırken işlev bildirimini belirtin

Üretken modeli şu şekilde başlatırken işlev bildirimini belirtin: modelin tools parametresini ayarlayarak:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model
// Use a model that supports function calling, like a Gemini 1.5 model
let model = vertex.generativeModel(
  modelName: "gemini-1.5-flash",
  // Specify the function declaration.
  tools: [Tool(functionDeclarations: [getExchangeRate])]
)

Gemini modeli seçme hakkında bilgi edinin. ve isteğe bağlı olarak bir konum ve uygulamanıza uygun olmalıdır.

4. Adım: Bir işlev çağrısı oluşturun

Artık tanımlı işlevle modele istem girebilirsiniz.

İşlev çağrısını kullanmanın önerilen yolu sohbet arayüzüdür çünkü işlev çağrıları, sohbetin çok dönüşlü yapısına çok uygundur.

let chat = model.startChat()

let prompt = "How much is 50 US dollars worth in Swedish krona?"

// Send the message to the generative model
let response1 = try await chat.sendMessage(prompt)

// Check if the model responded with a function call
guard let functionCall = response1.functionCalls.first else {
  fatalError("Model did not respond with a function call.")
}
// Print an error if the returned function was not declared
guard functionCall.name == "getExchangeRate" else {
  fatalError("Unexpected function called: \(functionCall.name)")
}
// Verify that the names and types of the parameters match the declaration
guard case let .string(currencyFrom) = functionCall.args["currencyFrom"] else {
  fatalError("Missing argument: currencyFrom")
}
guard case let .string(currencyTo) = functionCall.args["currencyTo"] else {
  fatalError("Missing argument: currencyTo")
}

// Call the hypothetical API
let apiResponse = makeAPIRequest(currencyFrom: currencyFrom, currencyTo: currencyTo)

// Send the API response back to the model so it can generate a text response that can be
// displayed to the user.
let response = try await chat.sendMessage([ModelContent(
  role: "function",
  parts: [.functionResponse(FunctionResponse(
    name: functionCall.name,
    response: apiResponse
  ))]
)])

// Log the text response.
guard let modelResponse = response.text else {
  fatalError("Model did not respond with text.")
}
print(modelResponse)

Başka ne yapabilirsiniz?

Gemini API'nin diğer özelliklerini deneyin

İçerik üretme işlemini nasıl kontrol edeceğinizi öğrenin

ziyaret edin. Ayrıca, model yapılandırmalarınızı ve istemlerinizi görmek için Vertex AI Studio

Gemini modelleri hakkında daha fazla bilgi

Şu konu hakkında bilgi edinin: çeşitli kullanım alanları için kullanılabilecek modeller ve kotalar ve fiyatlandırma hakkında daha fazla bilgi edinin.


Geri bildirimde bulunma ve Firebase için Vertex AI deneyiminiz hakkında