Sunucu istemi şablonlarını kullanmaya başlama


Bir modele gönderdiğiniz her istekte, istem ve isteğe bağlı olarak şema ve yapılandırmalar göndererek modelin yanıtını kontrol edersiniz. Firebase AI Logic kullanırken tüm bu bilgileri doğrudan istemci kodunuzdan gönderebilir veya sunucu istemi şablonlarını kullanarak sunucu tarafında belirtebilirsiniz.

Sunucu istemi şablonlarını kullanırken isteminizi, şemanızı ve yapılandırmalarınızı sunucu tarafında saklarsınız. Uygulamanız ise istemciden sunucuya yalnızca belirli bir şablona referans veren anahtarı (şablon kimliği) ve bu şablon için gerekli girişleri iletir.

Sunucu istemi şablonlarını kullanırken isteminizi ve yapılandırmalarınızı sunucu tarafında saklar ve uygulamanızın kod tabanında yalnızca bir anahtar (şablon kimliği) sağlarsınız. Bu yaklaşımın bazı avantajları şunlardır:

  • İsteminizin istemci tarafında açığa çıkmasını önleme

  • Yeni bir uygulama sürümü yayınlamadan isteminizi ve yapılandırmanızı güncelleme

Bu kılavuzda, sunucu istemi şablonlarını kullanmaya nasıl başlayacağınız açıklanmaktadır.

Üst düzey genel bakışa git Ayrıntılı talimatlara git

Desteklenen modeller ve özellikler



Üst düzey genel bakış

Sunucu istemi şablonlarını kullanmayla ilgili temel iş akışı şöyledir:

  1. Firebase konsolundaki rehberli kullanıcı arayüzünü kullanarak şablonu oluşturun.

  2. FirebaseKonsolun test deneyimini kullanarak şablonu gerçek bir istekte test edin.

  3. Uygulamanızdan şablona erişin.

Sunucu istemi şablonlarının temel biçimi

Firebase AI Logic için Firebase konsolu, şablonun içeriğini belirtmeniz için size rehberli bir kullanıcı arayüzü sunar.

Sunucu istemi şablonları, Dotprompt tabanlı bir sözdizimi ve biçim kullanır. Daha fazla bilgi için Şablon biçimi, söz dizimi ve örnekler başlıklı makaleye bakın.

Gemini modeline gönderilen örnek bir istek için en önemli bileşenler şunlardır:

---
model: 'gemini-2.5-flash'
---

{{role "system"}}
All output must be a clearly structured invoice document.
Use a tabular or clearly delineated list format for line items.

{{role "user"}}
Create an example customer invoice for a customer named {{customerName}}.
  • Üçlü tireler arasındaki üst bölümde model adı ve isteğe bağlı olarak, istekte göndermek istediğiniz model yapılandırması, giriş doğrulama veya şema yer alır. Anahtar/değer çiftleri olarak yazılır ve genellikle YAML frontmatter olarak adlandırılır.

  • Şablonun gövdesinde istem bulunur. Ayrıca isteğe bağlı olarak sistem talimatları ve giriş değerleri de içerebilir (Handlebars söz dizimi kullanılarak).

Şablonunuzu kodda kullanma

Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın.

Şablonu kodunuzda nasıl kullanacağınız aşağıda açıklanmıştır:

Swift


// ...

// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).templateGenerativeModel()

let customerName = "Jane"

do {
    let response = try await model.generateContent(
        // Specify your template ID
        templateID: "my-first-template-v1-0-0",
        // Provide the values for any input variables required by your template.
        inputs: [
            "customerName": customerName
        ]
    )
    if let text = response.text {
        print("Response Text: \(text)")
    }
} catch {
    print("An error occurred: \(error)")
}
print("\n")

Kotlin


// ...

// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.googleAI.templateGenerativeModel()

val customerName = "Jane"

val response = model.generateContent(
    // Specify your template ID
    "my-first-template-v1-0-0",
    // Provide the values for any input variables required by your template.
    mapOf(
        "customerName" to customerName
    )
)

val text = response.text
println(text)

Java


// ...

// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();

TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);

String customerName = "Jane";

Future response = model.generateContent(
    // Specify your template ID
    "my-first-template-v1-0-0",
    // Provide the values for any input variables required by your template.
    mapOf("customerName", customerName)
);
addCallback(response,
       new FutureCallback() {
           public void onSuccess(GenerateContentResponse result) {
             System.out.println(result.getText());
           }
           public void onFailure(Throwable t) {
             reportError(t);
           }
    }
executor);

Web


// ...

// Initialize the Gemini Developer API backend service
const ai = getAI(app, { backend: new GoogleAIBackend() });

// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);

const customerName = 'Jane';

const result = await model.generateContent(
  // Specify your template ID
  'my-first-template-v1-0-0',
  // Provide the values for any input variables required by your template
  {
    customerName: customerName,
  }
);

const response = response.result;
const text = response.text();

Dart

Flutter eklentisi yakında sunucu istemi şablonlarını destekleyecek.

Unity

Unity paketi yakında sunucu istemi şablonlarını destekleyecek.



Ayrıntılı talimatlar

Bu bölümde, sunucu istemi şablonları oluşturma, test etme ve kullanmayla ilgili ayrıntılı talimatlar verilmektedir.

Başlamadan önce

  • Henüz yapmadıysanız Firebase projenizi ayarlama, uygulamanızı Firebase'e bağlama, SDK'yı ekleme, seçtiğiniz Gemini API sağlayıcısı için arka uç hizmetini başlatma ve GenerativeModel örneği oluşturma işlemlerinin nasıl yapılacağını açıklayan başlangıç kılavuzunu tamamlayın.

  • Sunucu istemi şablonları oluşturmak ve yönetmek için gerekli izinlere sahip olduğunuzdan emin olun. Varsayılan olarak bu izinlerin tümü sahip rolüne dahildir.

  • Vertex AI Gemini API kullanıyorsanız ve kullanım alanınız konum tabanlı kısıtlamalar gerektiriyorsa şablonlar için gelişmiş iş akışlarını destekliyoruz.

1. adım: Sunucu istemi şablonu oluşturun

Çoğu kullanım alanında, sunucu istemi şablonlarını Firebase konsolunda oluşturup yönetirsiniz.

  1. Firebase konsolunda Firebase AI Logic İstem şablonları sekmesine gidin.

  2. Yeni şablon oluştur'u tıklayın ve bir başlangıç şablonu seçeneği belirleyin.

    • Bu başlangıç şablonları, bazı yaygın kullanım alanları için biçim ve söz dizimi sağlar. Hangi seçeneği belirlerseniz belirleyin, şablonu ihtiyaçlarınıza göre tamamen değiştirebilirsiniz.

    • Bu başlangıç kılavuzunda, Input + System Instructions seçeneğini belirlediğiniz varsayılmaktadır.

  3. Şablonun tanımlayıcılarını girin:

    • Şablon adı: Bu, şablonun görünen adıdır (örneğin, My First Template). Yalnızca Firebase konsolu gibi Firebase arayüzlerinde görünür.

    • Şablon kimliği: Bu, Firebase projenizdeki şablonun benzersiz kimliği olmalıdır (örneğin, my-first-template-v1-0-0). Bu kimliğe uygulamanızdan gelen istekte referans vereceksiniz.

  4. Gerekirse şablonun Configuration (frontmatter) (Yapılandırma) bölümünü değiştirin.

    • Bu bölümde en azından şu şekilde bir model adı yer almalıdır:

      ---
      model: 'gemini-2.5-flash'
      ---
      
    • İsteğe bağlı olarak modelin yapılandırmasını ve giriş/çıkış kontrollerini de belirtebilirsiniz. Daha fazla ayrıntı ve seçenek için Şablon biçimi, söz dizimi ve örnekler başlıklı makaleyi inceleyin.

  5. Şablondaki İstem ve (geçerli olduğu durumlarda) sistem talimatları bölümünü gerektiği şekilde değiştirin.

    • Bu bölümde, modele gönderilecek metin istemi en azından yer almalıdır.

      Write a story about a magic backpack.
      
    • Aşağıdaki seçenekler gibi daha karmaşık istemler de oluşturabilirsiniz. Daha fazla ayrıntı ve seçenek için Şablon biçimi, söz dizimi ve örnekleri başlıklı makaleyi inceleyin.

      • (İsteğe bağlı ve geçerli olduğu durumlarda) {{role "system"}} söz dizimini kullanarak sistem talimatlarını, {{role "user"}} söz dizimini kullanarak da metin istemini belirtin.

      • (İsteğe bağlı) Handlebars söz dizimini (ör. {{customerName}}) kullanarak giriş değişkenlerini belirtin. Şablonda varsayılan bir değer sağlayabilirsiniz ancak bu giriş değişkeninin değeri genellikle istekte iletilir.

      {{role "system"}}
      All output must be a clearly structured invoice document.
      Use a tabular or clearly delineated list format for line items.
      
      {{role "user"}}
      Create an example customer invoice for a customer named {{customerName}}.
      

2. adım: Şablonunuzu Firebase konsolunda test edin

Firebase konsolu, şablonunuz için bir test deneyimi sunar. Bu deneyim, şablonunuz kullanıldığında ne olacağını görmenizi sağlar. Hem isteğin biçimini hem de gerçek bir isteğin çıktısını görebilirsiniz.

  1. Şablonunuzu test edebilmek için Şablonu kaydet'i tıklayın.

    Şablonu daha sonra istediğiniz zaman düzenleyebilir veya silebilirsiniz. Daha sonra değiştiremeyeceğiniz tek değer şablon kimliğidir.

  2. İsteminizde giriş değişkenleri kullanılıyorsa Test girişi alanına test değerleri ekleyin. Bu örnekte:

      {
        "customerName": "Jane"
      }
    
  3. Firebase projenizde birden fazla Gemini API sağlayıcı etkinse test isteği için hangisini kullanacağınızı seçebilirsiniz. Bu seçenek konsolda gösteriliyorsa Gemini Developer API veya Vertex AI Gemini API simgesini seçin.

    Bu seçimin yalnızca Firebase konsol test deneyimi üzerinden gönderilen istekler için geçerli olduğunu unutmayın. Uygulamanızdan gelen gerçek istekte, seçtiğiniz Gemini API sağlayıcıyı diğer isteklerde olduğu gibi belirtirsiniz.

  4. Biçimlendirilmiş test isteği oluştur düğmesini tıklayın.

    Ekranın sağ tarafındaki sonuç Biçimlendirilmiş test isteği'ni inceleyin ve şablonunuzun alanlarında yineleme yapın.

  5. Biçimlendirilmiş test isteğinden memnun olduğunuzda İstem testini çalıştır düğmesini tıklayın.

    Ekranın sağ tarafındaki Test yanıtı'nı inceleyin ve şablonunuzun alanlarında yineleme yapın.

  6. Şablona uygulamanızın kodundan erişmeye hazırsanız şablonun sağ üst köşesindeki kilit simgesini tıklayarak şablonu kilitleyin.

  7. Düzenleme deneyiminden çıkmak için Kapat'ı tıklayın.

3. adım: Şablonunuza kodunuzdan erişin

Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın.

Bir sunucu istemi şablonu kullanan istek, aşağıdaki ayarlamalarla diğer isteklere benzer:

  • templateGenerativeModel (veya gerekirse templateImagenModel) kullanın.
  • Şablon kimliğini sağlayın.
  • Şablonunuzun gerektirdiği tüm değişken girişlerinin değerlerini sağlayın.

Şablonunuzu oluşturduktan veya güncelledikten sonra, kodunuzdan erişmeden önce şablonun Firebase sunucularına yayılması için birkaç dakika beklemeniz gerekebilir.

Swift

İsteğinizde şablon kullanmak için templateGenerativeModel örneği (veya templateImagenModel) oluşturun.


// ...

// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).templateGenerativeModel()

let customerName = "Jane"

do {
    let response = try await model.generateContent(
        // Specify your template ID
        templateID: "my-first-template-v1-0-0",
        // Provide the values for any input variables required by your template.
        inputs: [
            "customerName": customerName
        ]
    )
    if let text = response.text {
        print("Response Text: \(text)")
    }
} catch {
    print("An error occurred: \(error)")
}
print("\n")

Kotlin

İsteğinizde şablon kullanmak için templateGenerativeModel örneği (veya templateImagenModel) oluşturun.


// ...

// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.googleAI.templateGenerativeModel()

val customerName = "Jane"

val response = model.generateContent(
    // Specify your template ID
    "my-first-template-v1-0-0",
    // Provide the values for any input variables required by your template.
    mapOf(
        "customerName" to customerName
    )
)

val text = response.text
println(text)

Java

İsteğinizde şablon kullanmak için templateGenerativeModel örneği (veya templateImagenModel) oluşturun.


// ...

// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();

TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);

String customerName = "Jane";

Future response = model.generateContent(
    // Specify your template ID
    "my-first-template-v1-0-0",
    // Provide the values for any input variables required by your template.
    mapOf("customerName", customerName)
);
addCallback(response,
       new FutureCallback() {
           public void onSuccess(GenerateContentResponse result) {
             System.out.println(result.getText());
           }
           public void onFailure(Throwable t) {
             reportError(t);
           }
    }
executor);

Web

İsteğinizde şablon kullanmak için templateGenerativeModel örneği (veya templateImagenModel) oluşturun.


// ...

// Initialize the Gemini Developer API backend service
const ai = getAI(app, { backend: new GoogleAIBackend() });

// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);

const customerName = 'Jane';

const result = await model.generateContent(
  // Specify your template ID
  'my-first-template-v1-0-0',
  // Provide the values for any input variables required by your template
  {
    customerName: customerName,
  }
);

const response = response.result;
const text = response.text();

Dart

Flutter eklentisi yakında sunucu istemi şablonlarını destekleyecek.

Unity

Unity paketi yakında sunucu istemi şablonlarını destekleyecek.



Sırada ne var?