টেমপ্লেটের ফর্ম্যাট, সিনট্যাক্স ও উদাহরণ


Firebase AI Logic-এর জন্য, Firebase কনসোল আপনাকে টেমপ্লেটের কন্টেন্ট নির্দিষ্ট করার জন্য একটি নির্দেশিত UI প্রদান করে।

সার্ভার প্রম্পট টেমপ্লেটে Dotprompt-ভিত্তিক সিনট্যাক্স ও ফর্ম্যাট ব্যবহার করা হয়। এই পৃষ্ঠায়, আপনি টেমপ্লেট ফর্ম্যাট ও সিনট্যাক্সের বিস্তারিত বিবরণ এবং উদাহরণ দেখতে পাবেন।

Gemini মডেলের কাছে অনুরোধের উদাহরণের জন্য সবচেয়ে গুরুত্বপূর্ণ কম্পোনেন্টগুলি এখানে দেওয়া হল:

---
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}}.
  • ট্রিপল ড্যাশ চিহ্নের মধ্যে থাকা সবচেয়ে উপরের বিভাগে মডেলের নাম এবং ঐচ্ছিকভাবে কোনও মডেল কনফিগারেশন, ইনপুট ভ্যালিডেশন বা স্কিমা থাকে যা আপনি অনুরোধে পাঠাতে চান। এটি কী-ভ্যালু পেয়ার হিসেবে লেখা হয় এবং সাধারণত YAML ফ্রন্টম্যাটার বলা হয়।

  • টেমপ্লেটের বডিতে প্রম্পট থাকে। এছাড়াও, এটি ঐচ্ছিকভাবে সিস্টেম নির্দেশাবলী এবং ইনপুট ভ্যালু (Handlebars সিনট্যাক্স ব্যবহার করে) অন্তর্ভুক্ত করতে পারে।


এই পৃষ্ঠায় টেমপ্লেট ফর্ম্যাট ও সিনট্যাক্সের বিস্তারিত বিবরণ দেওয়া আছে, এর সাথে নিম্নলিখিত বিষয়গুলির উদাহরণও দেওয়া আছে:

এই পৃষ্ঠায় দেওয়া সব উদাহরণে এমন টেমপ্লেট দেখানো হয়েছে যেগুলি gemini-3.8-flash ব্যবহার করে, তবে আপনি Firebase AI Logic-এর সাথে কাজ করে এমন যেকোনও Gemini মডেল ব্যবহার করতে পারবেন (Gemini Live মডেল ছাড়া)।

হ্যালো পৃথিবী

সার্ভার প্রম্পট টেমপ্লেটের একটি ন্যূনতম উদাহরণ এখানে দেওয়া হল:

কনফিগারেশন (ফ্রন্টম্যাটার)

---
model: 'gemini-3.8-flash'
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

Write a story about a magic backpack.



উত্তর জেনারেশন কন্ট্রোল করা

আপনার ব্যবহারের ক্ষেত্র এবং আপনার প্রয়োজনীয় কন্ট্রোলের লেভেলের উপর নির্ভর করে, আপনি বিভিন্ন উপায়ে উত্তর জেনারেশন কন্ট্রোল করতে পারবেন।

মডেল কনফিগারেশন

মডেল কীভাবে উত্তর তৈরি করবে তা নিয়ন্ত্রণ করতে মডেল কনফিগারেশন সেট করুন। যেমন, উত্তরের বিভিন্নতা (candidateCount), সর্বাধিক আউটপুট টোকেন ইত্যাদি।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
model: 'gemini-3.8-flash'
config:
  candidateCount: 1
  maxOutputTokens: 200
  stopSequences: ["red"]
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

Write a story about a magic backpack.


কনফিগারেশন সম্পর্কে ভাবা

যেসব মডেল থিঙ্কিংয়ে সহায়তা করে সেগুলির জন্য থিঙ্কিং-সম্পর্কিত কনফিগারেশন নির্দিষ্ট করুন ।

কনফিগারেশন (ফ্রন্টম্যাটার)

  • Gemini 3.x ও তার পরের মডেল (থিঙ্কিং লেভেল)

    ---
    model: 'gemini-3.8-flash'
    config:
      thinkingConfig:
        thinkingLevel: medium
        includeThoughts: true
    ---
    
  • Gemini 2.5 মডেল (বাজেট সম্পর্কে চিন্তা করা)

    ---
    model: 'gemini-2.5-flash'
    config:
      thinkingConfig:
        thinkingBudget: 1024
        includeThoughts: true
    ---
    

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

Solve x^2 + 4x + 4 = 0


নিরাপত্তা সেটিংস

ক্ষতিকর হিসেবে বিবেচিত হতে পারে এমন উত্তর পাওয়ার সম্ভাবনা অ্যাডজাস্ট করতে নিরাপত্তা সেটিংস ব্যবহার করুন।

কনফিগারেশন (ফ্রন্টম্যাটার)

একটি নিরাপত্তা সেটিংস সহ উদাহরণ:

---
model: 'gemini-3.8-flash'
config:
  safetySettings:
    - category: HARM_CATEGORY_HARASSMENT
      threshold: BLOCK_ONLY_HIGH
---

একাধিক নিরাপত্তা সেটিংস সহ উদাহরণ:

---
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
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

Write a story about a magic backpack.


সিস্টেম নির্দেশাবলী

মডেলের আচরণকে পরিচালিত করতে সিস্টেম নির্দেশাবলী সেট করুন। আপনি প্রম্পটের অংশ হিসেবে সেগুলি অন্তর্ভুক্ত করেন:

  • {{role "system"}} সিনট্যাক্স ব্যবহার করে সিস্টেম নির্দেশাবলী নির্দিষ্ট করুন।

  • {{role "user"}} সিনট্যাক্স ব্যবহার করে টেক্সট প্রম্পট নির্দিষ্ট করুন।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
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.



ইনপুট ভেরিয়েবল

কিছু প্রম্পট স্ট্যাটিক হয়, কিন্তু প্রম্পটের অংশ হিসেবে আপনাকে প্রায়ই ব্যবহারকারীর থেকে পাওয়া কিছু ডেটা অন্তর্ভুক্ত করতে হয়।

আপনি প্রম্পটে ডায়নামিক ইনপুট ভেরিয়েবল যোগ করতে পারেন, এর জন্য হ্যান্ডেলবার এক্সপ্রেশন ব্যবহার করতে হবে, যা {{ }} ট্যাগের মধ্যে থাকে। এর ফর্ম্যাট হল {{variableName}} অথবা {{object.propertyName}} (যেমন, Hello, {{name}} from {{address.city}})।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
model: 'gemini-3.8-flash'
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

Create an example customer invoice for a customer named {{customerName}}.

আপনি টেমপ্লেটে একটি ডিফল্ট ভ্যালু দিতে পারেন, তবে ইনপুট ভেরিয়েবলের ভ্যালু সাধারণত ক্লায়েন্ট অনুরোধের অংশ হিসেবে দেয়।



কন্ট্রোল ফ্লো (লুপ ও কন্ডিশনাল)

আরও জটিল প্রম্পট লিখতে, আপনি কন্ডিশনাল ব্লক (যেমন #if , else এবং #unless) ও ইটারেশন (#each) ব্যবহার করতে পারেন।

আপনি বিশেষ @ প্রিফিক্স সহ ভেরিয়েবল হিসেবে অতিরিক্ত প্রাসঙ্গিক তথ্য প্রদান করতে পারেন:

  • @first: #each ব্লকের প্রথম আইটেম পুনরাবৃত্তি করার সময় true হয়।
  • @last: #each ব্লকের শেষ আইটেম পুনরাবৃত্তি করার সময় true হয়।
  • @index: বর্তমান এলিমেন্টের (জিরো-বেসড) ইন্ডেক্স পজিশন দেয়।

বিল্ট-ইন লজিক্যাল হেল্পার সম্পর্কে জানতে Handlebars ডকুমেন্টেশন দেখুন।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
model: 'gemini-3.8-flash'
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

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

মনে রাখবেন, কন্ডিশনাল শুধুমাত্র ভেরিয়েবল রেফারেন্স গ্রহণ করে, কোনও ধরনের এক্সপ্রেশন নয়, যেমন:

  • নিম্নলিখিত কাজগুলি করে: {{#if isVipCustomer}} ... {{/if}}
  • নিম্নলিখিত কাজ করে না: {{#if customer.type == 'vip'}} ... {{/if}}

ভেরিয়েবলটি বুলিয়ান হলে, কন্ডিশনালটি আপনার প্রত্যাশা অনুযায়ী কাজ করবে। ভেরিয়েবলটি বুলিয়ান না হলে, কন্ডিশনালটি কার্যকরভাবে একটি "is-not-null" চেক। বিকল্প ইনপুট ম্যানেজ করার জন্য এটি কাজে লাগতে পারে, যেমন:

{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}



ইনপুট যাচাইকরণ ও স্কিমা

ক্লায়েন্টের থেকে পাওয়া ডেটা থাকলে, আমরা প্রম্পট ইনজেকশন থেকে রক্ষা করতে এবং অনুরোধে প্রেরিত ডেটা আপনার প্রত্যাশা পূরণ করে কিনা তা নিশ্চিত করতে ইনপুট স্কিমা ব্যবহার করার জন্য জোরালো সাজেশন দিই।

  • ক্লায়েন্ট কোনও ভ্যালু না দিলে আপনি ডিফল্ট ভ্যালু দিতে পারেন।

  • স্কিমাতে স্কেলার টাইপ string, integer, number, boolean এবং object কাজ করে। ফিল্ড নামের পরে বন্ধনী দিয়ে অবজেক্ট, অ্যারে ও এনুম বোঝানো হয়।

  • আপনি ? ব্যবহার করে কোনও প্রপার্টিকে ঐচ্ছিক হিসেবে চিহ্নিত না করলে, সব প্রপার্টিকে প্রয়োজনীয় হিসেবে বিবেচনা করা হয়। কোনও প্রপার্টিকে ঐচ্ছিক হিসেবে চিহ্নিত করা হলে, সেটিকে নাল হিসেবেও সেট করা হয়, যাতে LLM ফিল্ড বাদ দেওয়ার পরিবর্তে নাল ভ্যালু রিটার্ন করতে পারে।

ইনপুট স্কিমা প্রদান করার জন্য এখানে একটি প্রাথমিক উদাহরণ দেওয়া হল। আপনি ঠিক নিচে আরও উন্নত স্কিমা দেখতে পাবেন।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
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
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

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



আউটপুট স্কিমা

আপনি যদি চান যে মডেলটি স্ট্রাকচার্ড JSON আউটপুট জেনারেট করুক, তাহলে আপনি একটি আউটপুট স্কিমা নির্দিষ্ট করতে পারেন। format: json নির্দিষ্ট করার মাধ্যমে, আপনি মডেলকে এমন JSON উত্তর দিতে বাধ্য করছেন যা নির্দিষ্ট স্কিমা মেনে চলে।

  • স্কিমাতে স্কেলার টাইপ string, integer, number, boolean এবং object কাজ করে। ফিল্ড নামের পরে বন্ধনী দিয়ে অবজেক্ট, অ্যারে ও এনুম বোঝানো হয়।

  • আপনি ? ব্যবহার করে কোনও প্রপার্টিকে ঐচ্ছিক হিসেবে চিহ্নিত না করলে, সব প্রপার্টিকে প্রয়োজনীয় হিসেবে বিবেচনা করা হয়। কোনও প্রপার্টিকে ঐচ্ছিক হিসেবে চিহ্নিত করা হলে, সেটিকে নাল হিসেবেও সেট করা হয়, যাতে LLM ফিল্ড বাদ দেওয়ার পরিবর্তে নাল ভ্যালু রিটার্ন করতে পারে।

স্ট্রাকচার্ড JSON আউটপুট তৈরি করার জন্য এখানে একটি প্রাথমিক উদাহরণ দেওয়া হল। আপনি ঠিক নিচে আরও উন্নত স্কিমা দেখতে পাবেন।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
model: gemini-3.8-flash
output:
  format: json
  schema:
    invoiceId: string
    invoiceFile(object, an invoice file):
      url?: string
      contents: string
      mimeType: string
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

Create an example customer invoice.



মাল্টিমোডাল ইনপুট

Gemini মডেলে পাঠানো মাল্টিমোডাল প্রম্পটে একাধিক ধরনের ইনপুট থাকতে পারে, যার মধ্যে ফাইল (যেমন, ছবির সাথে টেক্সট, PDF, সাধারণ টেক্সট ফাইল, অডিও ও ভিডিও) পড়ে।

  • {{media url}} সিনট্যাক্স সহ URL ব্যবহার করে ফাইল প্রদান করুন।

  • {{media type="mime_type" data="contents"}} সিনট্যাক্স সহ ইনলাইন ফাইল দিন।

প্রাথমিক উদাহরণ (মাল্টিমোডাল ইনপুট)

মাল্টিমোডাল ইনপুট দেওয়ার জন্য এখানে একটি প্রাথমিক উদাহরণ দেওয়া হল। নিচে আরও জটিল উদাহরণ দেখতে পাবেন।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
model: 'gemini-3.8-flash'
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

Describe this image

{{media type="mimeType" data="imageData"}}

জটিল উদাহরণ (মাল্টিমোডাল ইনপুট)

মাল্টিমোডাল ইনপুট দেওয়ার জন্য এখানে একটি আরও জটিল উদাহরণ দেওয়া হল।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
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
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

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



টুলের ব্যবহার

সার্ভার প্রম্পট টেমপ্লেটে নিম্নলিখিত টুল কাজ করে।

আপনি যদি চান যে আপনার ব্যবহারকারীরা মডেলের কাছে করা অনুরোধের জন্য কোনও অতিরিক্ত তথ্য প্রদান করুক, তাহলে সার্ভার প্রম্পট টেমপ্লেটের মধ্যে ইনপুট ভেরিয়েবল ব্যবহার করুন, সাথে ইনপুট ভ্যালিডেশন ব্যবহার করুন।

ফাংশন কলিং

সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করে ফাংশন কলিং সংক্রান্ত সম্পূর্ণ গাইড দেখুন।

কোড এক্সিকিউশন

কোড এক্সিকিউশন টুল মডেলকে Python কোড জেনারেট ও রান করতে সাহায্য করে।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
model: 'gemini-3.8-flash'
tools:
  - codeExecution
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

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 কন্টেক্সট

URL প্রসঙ্গ টুল আপনাকে URL-এর মাধ্যমে মডেলকে অতিরিক্ত প্রসঙ্গ প্রদান করতে দেয়। এই উদাহরণে আরও দেখানো হয়েছে যে ব্যবহারকারী URL প্রদান করলে আপনি কীভাবে সেটির ইনপুট যাচাইকরণ নির্দিষ্ট করতে পারেন।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
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
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

Compare the ingredients and cooking times from the recipes at {{url1}} and {{url2}}

গ্রাউন্ডিং উইথ Google Search টুল মডেলকে রিয়েল-টাইম, সর্বজনীনভাবে উপলভ্য ওয়েব কন্টেন্টের সাথে কানেক্ট করে।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
model: 'gemini-3.8-flash'
tools:
  - googleSearch
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

Who won the Euro 2024?

Google Maps-এর সাথে গ্রাউন্ডিং

গ্রাউন্ডিং উইথ Google Maps টুল লোকেশন-অ্যাওয়ার ফাংশনালিটির জন্য মডেলকে জিওস্পেশিয়াল ডেটা প্রদান করে।

googleMaps টুল ব্যবহার করতে, টেমপ্লেটের ফ্রন্টম্যাটারের tools অবজেক্টে এটি তালিকাভুক্ত করুন। নিচে দেওয়া উদাহরণে কিছু অতিরিক্ত ঐচ্ছিক কনফিগারেশন দেখানো হয়েছে:

  • ক্লায়েন্ট-সাইড কোড থেকে ইনপুট ভেরিয়েবল-এর অনুমতি দিন এবং সেই ইনপুটের ইনপুট ভ্যালিডেশন ও স্কিমা পারফর্ম করুন (এই উদাহরণে, একটি question)।

  • TemplateToolConfig ব্যবহার করে আপনার ক্লায়েন্ট-সাইড কোডে কোনও লোকেশনের কোঅর্ডিনেট এবং/অথবা একটি ভাষা কোড প্রদান করে googleMaps টুল কনফিগার করুন।

নিচে দেওয়া টেমপ্লেটের উদাহরণে, একটি এক্সপ্যান্ড করা যায় এমন অংশ খুঁজে পাবেন যা এইসব ঐচ্ছিক কনফিগারেশনের সাথে কাজ করার জন্য ক্লায়েন্ট-সাইড কোড স্যাম্পেল দেখায়।

কনফিগারেশন (ফ্রন্টম্যাটার)

---
model: 'gemini-3.8-flash'
tools:
  - googleMaps
input:
  schema:
    question: string
---

প্রম্পট ও (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী

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