Firebase AI Logic için Firebase konsolu, şablonun içeriğini belirtmeniz için size rehberlik eden bir kullanıcı arayüzü sağlar.
Sunucu istemi şablonları, Dotprompt tabanlı bir sözdizimi ve biçim kullanır. Bu sayfada, şablon biçimi ve söz dizimiyle ilgili ayrıntılı açıklamaların yanı sıra örnekler de bulabilirsiniz.
Aşağıda, Gemini modeline gönderilen örnek bir istek için en önemli bileşenler verilmiştir:
---
model: 'gemini-3.8-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 yer alır. Ayrıca, sistem talimatlarını ve giriş değerlerini (Handlebars söz dizimini kullanarak) isteğe bağlı olarak içerebilir.
Bu sayfada, şablon biçimi ve söz dizimi ile ilgili ayrıntılı açıklamaların yanı sıra aşağıdakilerle ilgili örnekler verilmektedir:
Bu sayfadaki tüm örneklerde gemini-3.8-flash kullanan şablonlar gösterilmektedir ancak Firebase AI Logic tarafından desteklenen tüm Gemini modellerini (Gemini Live modelleri hariç) kullanabilirsiniz.
Hello world
Aşağıda, sunucu istemi şablonunun en basit örneği verilmiştir:
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
---
İstem ve (geçerliyse) sistem talimatları
Write a story about a magic backpack.
Yanıt oluşturmayı kontrol etme
Kullanım alanınıza ve ihtiyaç duyduğunuz kontrol düzeyine bağlı olarak yanıt oluşturma sürecini çeşitli şekillerde kontrol edebilirsiniz.
Model yapılandırması
Modelin nasıl yanıt oluşturacağını kontrol etmek için model yapılandırması ayarlayın. Örneğin, yanıt varyasyonlarının sayısı (candidateCount), maksimum çıkış parçası vb.
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
config:
candidateCount: 1
maxOutputTokens: 200
stopSequences: ["red"]
---
İstem ve (geçerliyse) sistem talimatları
Write a story about a magic backpack.
Düşünme yapılandırması
Düşünmeyi destekleyen modeller için düşünmeyle ilgili bir yapılandırma belirtin.
Yapılandırma (ön sayfa)
Gemini 3.x ve sonraki modeller (düşünme düzeyleri)
--- model: 'gemini-3.8-flash' config: thinkingConfig: thinkingLevel: medium includeThoughts: true ---Gemini 2.5 model (düşünme bütçeleri)
--- model: 'gemini-2.5-flash' config: thinkingConfig: thinkingBudget: 1024 includeThoughts: true ---
İstem ve (geçerliyse) sistem talimatları
Solve x^2 + 4x + 4 = 0
Güvenlik ayarları
Zararlı olarak değerlendirilebilecek yanıtlar alma olasılığını ayarlamak için güvenlik ayarlarını kullanın.
Yapılandırma (ön sayfa)
Bir güvenlik ayarı içeren örnek:
---
model: 'gemini-3.8-flash'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
---
Birden fazla güvenlik ayarı içeren örnek:
---
model: 'gemini-3.8-flash'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
- category: HARM_CATEGORY_HATE_SPEECH
threshold: BLOCK_MEDIUM_AND_ABOVE
---
İstem ve (geçerliyse) sistem talimatları
Write a story about a magic backpack.
Sistem talimatları
Modelin davranışını yönlendirmek için sistem talimatları ayarlayın. Bu bilgileri isteme dahil edebilirsiniz:
{{role "system"}}söz dizimini kullanarak sistem talimatlarını belirtin.{{role "user"}}söz dizimini kullanarak metin istemini belirtin.
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
---
İstem ve (geçerliyse) sistem talimatları
{{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.
Giriş değişkenleri
Bazı istemler statiktir ancak genellikle isteme kullanıcıdan alınan bazı verileri eklemeniz gerekir.
{{ }} etiketleri içinde yer alan Handlebars ifadelerini kullanarak isteme dinamik giriş değişkenleri ekleyebilirsiniz. Bu ifadeler {{variableName}} veya {{object.propertyName}} biçimindedir (örneğin, Hello, {{name}} from {{address.city}}).
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
---
İstem ve (geçerliyse) sistem talimatları
Create an example customer invoice for a customer named {{customerName}}.
Şablonda varsayılan bir değer sağlayabilirsiniz ancak giriş değişkeninin değeri genellikle istek kapsamında istemci tarafından sağlanır.
Kontrol akışları (döngüler ve koşullar)
Daha karmaşık istemler yazmak için koşullu bloklar (ör. #if, else ve #unless) ve yineleme (#each) kullanabilirsiniz.
Özel bir @ önekiyle değişken olarak ek bağlamsal bilgiler sağlayabilirsiniz:
@first:#eachbloğunun ilk öğesi üzerinde yineleme yapılırken doğru (true) olur.@last:#eachbloğunun son öğesi üzerinde yineleme yapılırken true değerini döndürür.@index: Geçerli öğenin (sıfır tabanlı) dizin konumunu verir.
Tüm yerleşik mantıksal yardımcılar hakkında bilgi edinmek için Handlebars belgelerine bakın.
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
---
İstem ve (geçerliyse) sistem talimatları
Create an example customer invoice for a customer named {{customerName}}.
Include entries for each of the following products
{{#each productNames}}
{{#if @first}}
Include line items for the following purchases
{{/if}}
- {{this}}
{{/each}}
{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}
Koşullu ifadelerin yalnızca değişken referansı kabul ettiğini, herhangi bir ifade türünü kabul etmediğini unutmayın. Örneğin:
- Aşağıdaki işlemler yapılabilir:
{{#if isVipCustomer}} ... {{/if}} - Aşağıdaki işlemler çalışmaz:
{{#if customer.type == 'vip'}} ... {{/if}}
Değişken bir boole değeri ise koşullu ifade beklendiği gibi çalışır. Değişken bir boolean değilse koşullu ifade aslında bir "is-not-null" kontrolüdür. Bu, isteğe bağlı girişleri işlemek için yararlı olabilir. Örneğin:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
Giriş doğrulaması ve şeması
İstemciden gelen verileriniz varsa istem enjeksiyonu saldırılarına karşı korunmanıza yardımcı olması ve istekte iletilen verilerin beklentilerinizi karşılamasını sağlamak için giriş şemasını kullanmanızı önemle tavsiye ederiz.
Müşteri değer sağlamazsa varsayılan değerler sağlayabilirsiniz.
Şema,
string,integer,number,booleanveobjectgibi skaler türleri destekler. Nesneler, diziler ve numaralandırmalar, alan adından sonra parantez içinde gösterilir.?ile isteğe bağlı olarak belirtmediğiniz sürece tüm özellikler zorunlu kabul edilir. Bir özellik isteğe bağlı olarak işaretlendiğinde, LLM'lerin bir alanı atlamak yerine boş değer döndürmesi için daha fazla esneklik sağlamak amacıyla boş değer atanabilir hale de getirilir.
Giriş şeması sağlama ile ilgili temel bir örneği burada bulabilirsiniz. Daha gelişmiş bir şemayı hemen aşağıda bulabilirsiniz.
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
input:
default:
isVipCustomer: false
schema:
customerName: string, the customers name # string, number, and boolean types are defined like this
productNames?(array, list of products to include in the invoice): string # optional fields are marked with a ?
isVipCustomer?: boolean, whether or not the customer is a VIP
---
İstem ve (geçerliyse) sistem talimatları
Create an example customer invoice for a customer named {{customerName}}.
Include entries for each of the following products
{{#each productNames}}
{{#if @first}}
Include line items for the following purchases
{{/if}}
- {{this}}
{{/each}}
{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}
Çıkış şeması
Modelin yapılandırılmış JSON çıkışı oluşturmasını istiyorsanız çıkış şeması belirtebilirsiniz. format: json değerini belirterek modeli, her zaman belirtilen şemayı izleyen bir JSON yanıtı döndürmeye zorlarsınız.
Şema,
string,integer,number,booleanveobjectgibi skaler türleri destekler. Nesneler, diziler ve numaralandırmalar, alan adından sonra parantez içinde gösterilir.?ile isteğe bağlı olarak belirtmediğiniz sürece tüm özellikler zorunlu kabul edilir. Bir özellik isteğe bağlı olarak işaretlendiğinde, LLM'lerin bir alanı atlamak yerine boş değer döndürmesi için daha fazla esneklik sağlamak amacıyla boş değer atanabilir hale de getirilir.
Yapılandırılmış JSON çıkışı oluşturmayla ilgili temel bir örneği burada bulabilirsiniz. Daha gelişmiş bir şemayı hemen aşağıda bulabilirsiniz.
Yapılandırma (ön sayfa)
---
model: gemini-3.8-flash
output:
format: json
schema:
invoiceId: string
invoiceFile(object, an invoice file):
url?: string
contents: string
mimeType: string
---
İstem ve (geçerliyse) sistem talimatları
Create an example customer invoice.
Çok formatlı giriş
Gemini modeline gönderilen çok formatlı istemler, dosyalar (ör. resimlerle birlikte metin, PDF'ler, düz metin dosyaları, ses ve video) dahil olmak üzere birden fazla giriş türü içerebilir.
{{media url}}söz dizimini kullanarak URL'siyle bir dosya sağlayın.{{media type="mime_type" data="contents"}}söz dizimine sahip satır içi bir dosya sağlayın.
Temel örnek (çok formatlı giriş)
Çok formatlı giriş sağlama ile ilgili temel bir örneği burada bulabilirsiniz. Daha karmaşık bir örneği hemen aşağıda bulabilirsiniz.
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
---
İstem ve (geçerliyse) sistem talimatları
Describe this image
{{media type="mimeType" data="imageData"}}
Karmaşık örnek (çok formatlı giriş)
Çok formatlı giriş sağlama konusunda daha karmaşık bir örnek aşağıda verilmiştir.
Yapılandırma (ön sayfa)
---
model: gemini-3.8-flash
input:
schema:
image_urls?(array, urls of external images): string
inline_images?(array, inline image data):
type: object
properties:
mime_type: string
contents: string # inline data must be base64-encoded
---
İstem ve (geçerliyse) sistem talimatları
{{role "system"}}
Use the following image as the basis for comparisons
{{media url="http://example.com/reference_img.bmp"}}
{{role "user"}}
What do the following images have in common?
{{#each image_urls}}
{{media url="this"}}
{{/each}}
{{#each inline_images}}
{{media type="mime_type" data="contents"}}
{{/each}}
Araç kullanımı
Sunucu istemi şablonları aşağıdaki araçları destekler.
Kullanıcılarınızın modele istek için ek bilgiler sağlamasını istiyorsanız sunucu istemi şablonunda giriş doğrulama ile birlikte giriş değişkenlerini kullanın.
İşlev çağırma
Sunucu istemi şablonlarını kullanarak işlev çağrısı yapma ile ilgili kılavuzun tamamını inceleyin.
Kod yürütme
Kod yürütme aracı, modelin Python kodu oluşturup çalıştırmasını sağlar.
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
tools:
- codeExecution
---
İstem ve (geçerliyse) sistem talimatları
What is the sum of the first 50 prime numbers?
Generate and run code for the calculation, and make sure you get all 50.
URL bağlamı
URL bağlamı aracı, URL biçiminde modele ek bağlam sağlamanıza olanak tanır. Bu örnekte, kullanıcı tarafından sağlanan URL'ler için giriş doğrulamasını nasıl belirtebileceğiniz de gösterilmektedir.
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
input:
schema:
url1:
type: string
pattern: '^https?://[\w.-]+\.[a-z]{2,}\S*$'
maxLength: 100
url2:
type: string
pattern: '^https?://[\w.-]+\.[a-z]{2,}\S*$'
maxLength: 100
tools:
- urlContext
---
İstem ve (geçerliyse) sistem talimatları
Compare the ingredients and cooking times from the recipes at {{url1}} and {{url2}}
Google Search ile temellendirme
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
tools:
- googleSearch
---
İstem ve (geçerliyse) sistem talimatları
Who won the Euro 2024?
Google Maps ile temellendirme
googleMaps aracını kullanmak için şablonun ön kısmındaki tools nesnesinde listeleyin. Aşağıdaki örnekte bazı ek isteğe bağlı yapılandırmalar gösterilmektedir:
İstemci tarafı kodundan giriş değişkenlerine izin verin ve bu girişin (bu örnekte
question) giriş doğrulamasını ve şemasını gerçekleştirin.googleMapskullanarak istemci tarafı kodunuzda bir konumun koordinatlarını ve/veya bir dil kodu sağlayarakgoogleMapsaracını yapılandırın.TemplateToolConfig
Örnek şablonun altında, bu isteğe bağlı yapılandırmalarla çalışmaya yönelik istemci tarafı kod örneklerini gösteren bir genişletilebilir bölüm bulunur.
Yapılandırma (ön sayfa)
---
model: 'gemini-3.8-flash'
tools:
- googleMaps
input:
schema:
question: string
---
İstem ve (geçerliyse) sistem talimatları
{{role "system"}}
You are a helpful tour guide. Use the Google Maps tool with the provided coordinates to answer the user's question based on their location.
{{role "user"}}
{{question}}