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


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 API মডেল ছাড়া)।

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

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

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

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

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

Write a story about a magic backpack.



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

আপনার ব্যবহারের ধরন এবং আপনার প্রয়োজনীয় নিয়ন্ত্রণের লেভেলের উপর নির্ভর করে আপনি বিভিন্ন উপায়ে উত্তর তৈরি করা নিয়ন্ত্রণ করতে পারেন।

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

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

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

---
model: 'gemini-3.8-flash'
config:
  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 মডেলে পাঠানো মাল্টিমোডাল প্রম্পটে একাধিক ধরনের ইনপুট থাকতে পারে, যার মধ্যে ফাইল (যেমন, ছবি, পিডিএফ, প্লেন-টেক্সট ফাইল, অডিও ও ভিডিওর সাথে টেক্সট) অন্তর্ভুক্ত।

  • {{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 প্রদান করলে আপনি কীভাবে 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-এর সাথে গ্রাউন্ডিং

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