সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করা শুরু করা


মডেলের কাছে করা প্রতিটি অনুরোধে, আপনি একটি প্রম্পট এবং মডেলের উত্তর নিয়ন্ত্রণ করার জন্য ঐচ্ছিকভাবে স্কিমা ও কনফিগারেশন পাঠান। Firebase AI Logic ব্যবহার করার সময়, আপনি এই সমস্ত তথ্য সরাসরি নিজের ক্লায়েন্ট কোড থেকে পাঠাতে পারেন অথবা আপনি সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করে এই তথ্য সার্ভার-সাইডে নির্দিষ্ট করতে পারেন।

সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করার সময়, আপনি নিজের প্রম্পট, স্কিমা ও কনফিগারেশন সার্ভার-সাইডে স্টোর করেন এবং আপনার অ্যাপের কোডবেস ক্লায়েন্ট থেকে সার্ভারে শুধুমাত্র একটি কী (টেমপ্লেট আইডি) পাস করে যা একটি নির্দিষ্ট টেমপ্লেটকে রেফার করে এবং সেই টেমপ্লেটের জন্য প্রয়োজনীয় ইনপুটও পাস করে। এই পদ্ধতির কিছু সুবিধা এখানে দেওয়া হল:

  • ক্লায়েন্ট-সাইডে আপনার প্রম্পট প্রকাশ করা থেকে সুরক্ষিত রাখা

  • নতুন অ্যাপ ভার্সন রিলিজ না করেই আপনার প্রম্পট ও কনফিগারেশন আপডেট করা

এই নির্দেশিকা থেকে আপনি সার্ভার প্রম্পট টেমপ্লেট ব্যবহার শুরু করার পদ্ধতি সম্পর্কে জানতে পারবেন।

হাই-লেভেল ওভারভিউতে যান বিস্তারিত নির্দেশাবলীতে যান

কাজ করে এমন মডেল ও ক্ষমতা



এক নজরে

সার্ভার প্রম্পট টেমপ্লেট ব্যবহারের প্রাথমিক ওয়ার্কফ্লো এখানে দেওয়া হল:

  1. Firebase কনসোলে নির্দেশিত UI ব্যবহার করে টেমপ্লেট তৈরি করুন।

  2. Firebase কনসোলে টেস্টিং অভিজ্ঞতা ব্যবহার করে আসল অনুরোধে টেমপ্লেটটি পরীক্ষা করুন।

  3. templateGenerativeModel ব্যবহার করে আপনার অ্যাপের কোড থেকে টেমপ্লেট অ্যাক্সেস করুন।

সার্ভার প্রম্পট টেমপ্লেটের প্রাথমিক ফর্ম্যাট

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 API প্রদানকারীর আইকনে ক্লিক করুন।

নিচে দেওয়া ক্লায়েন্ট কোডের উদাহরণ থেকে আপনার কোডে কীভাবে টেমপ্লেট ব্যবহার করতে হয় তা জানতে পারবেন:

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.ai(backend = GenerativeBackend.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 = result.response;
const text = response.text();

Dart


// ...

// Initialize the Gemini Developer API backend service.
// Create a `TemplateGenerativeModel` instance.
var _model = FirebaseAI.googleAI().templateGenerativeModel()

var customerName = 'Jane';

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

var text = response?.text;
print(text);

Unity


// ...

// Initialize the Gemini Developer API backend service.
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());

// Create a `TemplateGenerativeModel` instance.
var model = firebaseAI.GetTemplateGenerativeModel();

var customerName = "Jane";

try
{
   var response = await model.GenerateContentAsync(
      // Specify your template ID.
      "my-first-template-v1-0-0",
      // Provide the values for any input variables required by your template.
      new Dictionary<string, object> {
         { "customerName", customerName },
      }
   );
   Debug.Log($"Response Text: {response.Text}");
}
catch (Exception e) {
  Debug.LogError($"An error occurred: {e.Message}");
}



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

এই বিভাগে, সার্ভার প্রম্পট টেমপ্লেট তৈরি, পরীক্ষা ও ব্যবহার করার বিস্তারিত নির্দেশাবলী দেওয়া হয়েছে।

শুরু করার আগে

  • আপনি আগে থেকে না করে থাকলে, শুরু করার নির্দেশিকা সম্পূর্ণ করুন, যা আপনার Firebase প্রোজেক্ট কীভাবে সেট-আপ করবেন, Firebase-এর সাথে আপনার অ্যাপ কানেক্ট করবেন, SDK যোগ করবেন, আপনার বেছে নেওয়া Gemini API প্রদানকারীর জন্য ব্যাকএন্ড পরিষেবা চালু করবেন এবং একটি GenerativeModel ইনস্ট্যান্স তৈরি করবেন তা বর্ণনা করে।

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

  • আপনি Agent Platform Gemini API (formerly Vertex AI) এবং আপনার ব্যবহারের ক্ষেত্রে লোকেশন-ভিত্তিক বিধিনিষেধ ব্যবহার করলে, আমরা টেমপ্লেটের জন্য উন্নত ওয়ার্কফ্লো কাজ করে।

ধাপ ১: সার্ভার প্রম্পট টেমপ্লেট তৈরি করুন

বেশিরভাগ ব্যবহারের ক্ষেত্রে, আপনি Firebase কনসোলে সার্ভার প্রম্পট টেমপ্লেট তৈরি ও ম্যানেজ করেন।

  1. Firebase কনসোলে, AI পরিষেবা > AI লজিক > প্রম্পট টেমপ্লেট ট্যাব বিকল্পে যান।

  2. নতুন টেমপ্লেট তৈরি করুন বিকল্পে ক্লিক করুন এবং একটি স্টার্টার টেমপ্লেট বিকল্প বেছে নিন।

    • এইসব স্টার্টার টেমপ্লেট কিছু সাধারণ ব্যবহারের ক্ষেত্রে ফর্ম্যাট ও সিনট্যাক্স প্রদান করে। আপনি যে বিকল্পই বেছে নিন না কেন, আপনার প্রয়োজন অনুযায়ী টেমপ্লেটটি সম্পূর্ণভাবে পরিবর্তন করতে পারবেন।

    • এই 'শুরু করা যাক' গাইড ধরে নেয় যে আপনি Input + System Instructions বিকল্প বেছে নিয়েছেন।

  3. টেমপ্লেটের শনাক্তকারী লিখুন:

    • টেমপ্লেটের নাম: এটি টেমপ্লেটের ডিসপ্লে নাম (যেমন, My First Template)। এটি শুধুমাত্র Firebase ইন্টারফেসের মধ্যে দেখা যায়, যেমন Firebase কনসোল।

    • টেমপ্লেট আইডি: এটি আপনার Firebase প্রোজেক্টের মধ্যে টেমপ্লেটের একটি অনন্য আইডি হতে হবে (যেমন, my-first-template-v1-0-0)। আপনার অ্যাপ থেকে করা অনুরোধে এই আইডিটি রেফারেন্স হিসেবে ব্যবহার করবেন।

      • আমরা আপনার টেমপ্লেট আইডির জন্য ভার্সনিং সিস্টেম ব্যবহার করার সাজেস্ট করি।

      • টেমপ্লেট আইডিতে সর্বাধিক ৬৩টি অক্ষর থাকতে পারে এবং এতে ছোট হাতের অক্ষর, সংখ্যা ও হাইফেন থাকতে পারে।

  4. প্রয়োজন অনুযায়ী টেমপ্লেটের কনফিগারেশন (ফ্রন্টম্যাটার) বিভাগ পরিবর্তন করুন।

    • এই বিভাগে কমপক্ষে একটি মডেলের নাম থাকতে হবে, যেমন:

      ---
      model: 'gemini-3.8-flash'
      ---
      
    • এছাড়াও, আপনি ঐচ্ছিকভাবে মডেলের কনফিগারেশন এবং যেকোনও ইনপুট & আউটপুট কন্ট্রোল ইত্যাদি নির্দিষ্ট করতে পারেন। আরও বিবরণ ও বিকল্পের জন্য, টেমপ্লেট ফর্ম্যাট, সিনট্যাক্স ও উদাহরণ দেখুন।

  5. প্রয়োজন অনুযায়ী টেমপ্লেটের প্রম্পট ও (প্রযোজ্য হিসেবে) সিস্টেম নির্দেশাবলী বিভাগ পরিবর্তন করুন।

    • এই বিভাগে মডেলকে পাঠানোর জন্য টেক্সট প্রম্পট অবশ্যই থাকতে হবে।

      Write a story about a magic backpack.
      
    • এছাড়াও, আপনি আরও জটিল প্রম্পট তৈরি করতে পারেন, যেমন নিম্নলিখিত বিকল্প। আরও বিবরণ ও বিকল্পের জন্য, টেমপ্লেট ফর্ম্যাট, সিনট্যাক্স ও উদাহরণ দেখুন।

      • (ঐচ্ছিক এবং প্রযোজ্য হলে) {{role "system"}} সিনট্যাক্স ব্যবহার করে সিস্টেম নির্দেশাবলী এবং {{role "user"}} সিনট্যাক্স ব্যবহার করে টেক্সট প্রম্পট নির্দিষ্ট করুন।

      • (ঐচ্ছিক) Handlebars সিনট্যাক্স (যেমন {{customerName}}) ব্যবহার করে ইনপুট ভেরিয়েবল নির্দিষ্ট করুন। আপনি টেমপ্লেটে একটি ডিফল্ট ভ্যালু প্রদান করতে পারেন, কিন্তু এই ইনপুট ভেরিয়েবলের ভ্যালু সাধারণত অনুরোধে পাস করা হয়।

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

ধাপ ২: Firebase কনসোলে আপনার টেমপ্লেট পরীক্ষা করুন

Firebase কনসোল আপনার টেমপ্লেটের জন্য একটি টেস্টিং অভিজ্ঞতা প্রদান করে। এই অভিজ্ঞতা আপনাকে বুঝতে সাহায্য করে যে আপনার টেমপ্লেট ব্যবহার করা হলে কী হবে – অনুরোধের ফর্ম্যাট এবং আসল অনুরোধের আউটপুট, দুটিই।

  1. আপনার টেমপ্লেট পরীক্ষা করে দেখতে টেমপ্লেট সেভ করুন বিকল্পে ক্লিক করুন।

    আপনি পরে যেকোনও সময় টেমপ্লেট এডিট করতে বা এমনকি মুছে দিতে পারবেন। আপনি পরে শুধু টেমপ্লেট আইডি পরিবর্তন করতে পারবেন না।

  2. আপনার প্রম্পটে ইনপুট ভেরিয়েবল ব্যবহার করা হলে, ইনপুট টেস্ট করুন ফিল্ডে টেস্ট ভ্যালু অন্তর্ভুক্ত করুন। এই উদাহরণের জন্য:

      {
        "customerName": "Jane"
      }
    
  3. আপনার Firebase প্রোজেক্টে একাধিক Gemini API পরিষেবা প্রদানকারী চালু করা থাকলে, টেস্ট অনুরোধের জন্য কোনটি ব্যবহার করবেন তা বেছে নিতে পারবেন। কনসোলে এই বিকল্পটি দেখা গেলে, Gemini Developer API অথবা Agent Platform Gemini API (আগে Vertex AI নামে পরিচিত ছিল) বিকল্প বেছে নিন।

    মনে রাখবেন, এই বেছে নেওয়ার বিকল্পটি শুধুমাত্র Firebase কনসোল টেস্টিং অভিজ্ঞতার মাধ্যমে জমা দেওয়া অনুরোধের ক্ষেত্রে প্রযোজ্য। আপনার অ্যাপ থেকে আসা আসল অনুরোধে, আপনি নিজের বেছে নেওয়া Gemini API পরিষেবা প্রদানকারীর নাম উল্লেখ করবেন, ঠিক যেভাবে অন্য কোনও অনুরোধের ক্ষেত্রে করেন।

  4. ফর্ম্যাট করা পরীক্ষার অনুরোধ তৈরি করুন বোতামে ক্লিক করুন।

    স্ক্রিনের ডানদিকে দেখানো ফর্ম্যাট করা পরীক্ষার অনুরোধ পর্যালোচনা করুন এবং আপনার টেমপ্লেটের যেকোনও ফিল্ডে পরিবর্তন করুন।

  5. ফর্ম্যাট করা পরীক্ষার অনুরোধে সন্তুষ্ট হলে, প্রম্পট পরীক্ষা রান করুন বোতামে ক্লিক করুন।

    স্ক্রিনের ডানদিকে ফলাফল হিসেবে পাওয়া টেস্টের উত্তর পর্যালোচনা করুন এবং আপনার টেমপ্লেটের যেকোনও ফিল্ডে পরিবর্তন করুন।

    উপর নির্ভর করে।

  6. আপনার অ্যাপের কোড থেকে টেমপ্লেট অ্যাক্সেস করার জন্য প্রস্তুত হলে, টেমপ্লেট লক করুন টেমপ্লেটের উপরে ডানদিকের কোণে থাকা লক আইকনে ক্লিক করে।

  7. এডিটিং অভিজ্ঞতা থেকে বেরিয়ে আসতে বন্ধ করুন বিকল্পে ক্লিক করুন।

ধাপ ৩: আপনার কোড থেকে টেমপ্লেট অ্যাক্সেস করুন

এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট কন্টেন্ট ও কোড দেখতে আপনার Gemini API প্রদানকারীর আইকনে ক্লিক করুন।

সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করে করা অনুরোধ অন্যান্য অনুরোধের মতোই দেখতে হয়, তবে নিচে উল্লেখ করা পরিবর্তনগুলি করতে হয়:

  • templateGenerativeModel ব্যবহার করুন।
  • টেমপ্লেট আইডি দিন।
  • আপনার টেমপ্লেটের জন্য প্রয়োজনীয় যেকোনও ভেরিয়েবল ইনপুটের ভ্যালু দিন।

মনে রাখবেন, আপনার টেমপ্লেট তৈরি বা আপডেট করার পরে, আপনার কোড থেকে এটি অ্যাক্সেস করার আগে, Firebase সার্ভার জুড়ে টেমপ্লেটটি প্রোপাগেট করার জন্য আপনাকে কয়েক মিনিট অপেক্ষা করতে হতে পারে।

Swift

আপনার অনুরোধে টেমপ্লেট ব্যবহার করতে templateGenerativeModel ইনস্ট্যান্স তৈরি করুন।


// ...

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

আপনার অনুরোধে টেমপ্লেট ব্যবহার করতে templateGenerativeModel ইনস্ট্যান্স তৈরি করুন।


// ...

// Initialize the Gemini Developer API backend service.
// Create a `TemplateGenerativeModel` instance.
val model = Firebase.ai(backend = GenerativeBackend.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

আপনার অনুরোধে টেমপ্লেট ব্যবহার করতে templateGenerativeModel ইনস্ট্যান্স তৈরি করুন।


// ...

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

আপনার অনুরোধে টেমপ্লেট ব্যবহার করতে templateGenerativeModel ইনস্ট্যান্স তৈরি করুন।


// ...

// 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 = result.response;
const text = response.text();

Dart

Flutter প্লাগ-ইন শীঘ্রই সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করতে পারবে!

আপনার অনুরোধে টেমপ্লেট ব্যবহার করতে templateGenerativeModel ইনস্ট্যান্স তৈরি করুন।


// ...

// Initialize the Gemini Developer API backend service.
// Create a `TemplateGenerativeModel` instance.
var _model = FirebaseAI.googleAI().templateGenerativeModel()

var customerName = 'Jane';

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

var text = response?.text;
print(text);

Unity

আপনার অনুরোধে টেমপ্লেট ব্যবহার করতে templateGenerativeModel ইনস্ট্যান্স তৈরি করুন।


// ...

// Initialize the Gemini Developer API backend service.
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());

// Create a `TemplateGenerativeModel` instance.
var model = firebaseAI.GetTemplateGenerativeModel();

var customerName = "Jane";

try
{
   var response = await model.GenerateContentAsync(
      // Specify your template ID.
      "my-first-template-v1-0-0",
      // Provide the values for any input variables required by your template.
      new Dictionary<string, object> {
         { "customerName", customerName },
      }
   );
   Debug.Log($"Response Text: {response.Text}");
}
catch (Exception e) {
  Debug.LogError($"An error occurred: {e.Message}");
}



এরপরে কী?