মডেলের কাছে করা প্রতিটি অনুরোধে, আপনি একটি প্রম্পট এবং মডেলের উত্তর নিয়ন্ত্রণ করার জন্য ঐচ্ছিকভাবে স্কিমা ও কনফিগারেশন পাঠান। Firebase AI Logic ব্যবহার করার সময়, আপনি এই সব তথ্য সরাসরি আপনার ক্লায়েন্ট কোড থেকে পাঠাতে পারেন অথবা সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করে সার্ভার-সাইডে এই তথ্য নির্দিষ্ট করতে পারেন।
সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করার সময়, আপনি সার্ভার-সাইডে আপনার প্রম্পট, স্কিমা ও কনফিগারেশন স্টোর করেন এবং আপনার অ্যাপের কোডবেস ক্লায়েন্ট থেকে সার্ভারে শুধু একটি 'কী' (টেমপ্লেট আইডি) পাস করে যা নির্দিষ্ট টেমপ্লেট এবং সেই টেমপ্লেটের জন্য প্রয়োজনীয় ইনপুটকে রেফার করে। এই পদ্ধতির কিছু সুবিধা এখানে দেওয়া হল:
ক্লায়েন্ট-সাইডে আপনার প্রম্পট প্রকাশ করা থেকে সুরক্ষিত রাখা
নতুন অ্যাপ ভার্সন রিলিজ না করেই আপনার প্রম্পট ও কনফিগারেশন আপডেট করা
সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করা কীভাবে শুরু করবেন তা এই নির্দেশিকায় বর্ণনা করা হয়েছে।
হাই-লেভেল ওভারভিউতে যান বিস্তারিত নির্দেশাবলীতে যান
যেসব মডেলে কাজ করে এবং যা যা করা যায়
Firebase AI Logic-এ কাজ করে এমন যেকোনও Gemini মডেলের সাথে সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করুন, Gemini Live API মডেল ছাড়া।
এখনও কাজ করে না এমন ফিচারের তালিকা পর্যালোচনা করুন।
এক নজরে
সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করার জন্য এখানে প্রাথমিক ওয়ার্কফ্লো দেওয়া হল:
Firebase কনসোলে গাইডেড UI ব্যবহার করে টেমপ্লেট তৈরি করুন।
Firebase কনসোলে টেস্টিং অভিজ্ঞতা ব্যবহার করে আসল অনুরোধে টেমপ্লেটটি পরীক্ষা করুন।
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.
templateId: 'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template.
templateVariables: {
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 কনসোলে সার্ভার প্রম্পট টেমপ্লেট তৈরি ও ম্যানেজ করেন।
Firebase কনসোলে, AI পরিষেবা > AI লজিক > প্রম্পট টেমপ্লেট ট্যাবে যান।
নতুন টেমপ্লেট তৈরি করুন বিকল্পে ক্লিক করুন এবং একটি স্টার্টার টেমপ্লেট বিকল্প বেছে নিন।
এইসব স্টার্টার টেমপ্লেট কিছু সাধারণ ব্যবহারের ক্ষেত্রে ফর্ম্যাট ও সিনট্যাক্স প্রদান করে। আপনি যে বিকল্পই বেছে নিন না কেন, আপনার প্রয়োজন মেটাতে টেমপ্লেটটি সম্পূর্ণভাবে পরিবর্তন করতে পারবেন।
এই 'শুরু করা যাক' গাইড ধরে নেয় যে আপনি
Input + System Instructionsবিকল্প বেছে নিয়েছেন।
টেমপ্লেটের শনাক্তকারী লিখুন:
টেমপ্লেটের নাম: এটি টেমপ্লেটের ডিসপ্লে নাম (যেমন,
My First Template)। এটি শুধুমাত্র Firebase ইন্টারফেসের মধ্যে দেখা যায়, যেমন Firebase কনসোল।টেমপ্লেট আইডি: এটি আপনার Firebase প্রোজেক্টের মধ্যে টেমপ্লেটের জন্য একটি অনন্য আইডি হতে হবে (যেমন,
)। আপনি আপনার অ্যাপ থেকে অনুরোধে এই আইডিটি উল্লেখ করবেন।my-first-template-v1-0-0আমরা আপনার টেমপ্লেট আইডির জন্য ভার্সনিং সিস্টেম ব্যবহার করার সাজেস্ট করি।
টেমপ্লেট আইডিতে সর্বাধিক ৬৩টি অক্ষর থাকতে পারে এবং এতে ছোট হাতের অক্ষর, সংখ্যা ও হাইফেন থাকতে পারে।
প্রয়োজন অনুযায়ী টেমপ্লেটের কনফিগারেশন (ফ্রন্টম্যাটার) বিভাগ পরিবর্তন করুন।
এই বিভাগে কমপক্ষে একটি মডেলের নাম থাকতে হবে, যেমন:
--- model: 'gemini-3.8-flash' ---এছাড়াও, আপনি চাইলে মডেলের কনফিগারেশন এবং যেকোনও ইনপুট ও আউটপুট কন্ট্রোল ইত্যাদি নির্দিষ্ট করতে পারেন। আরও বিবরণ ও বিকল্পের জন্য, টেমপ্লেট ফর্ম্যাট, সিনট্যাক্স ও উদাহরণ দেখুন।
প্রয়োজন অনুযায়ী, টেমপ্লেটের প্রম্পট এবং (প্রযোজ্য হলে) সিস্টেম নির্দেশাবলী বিভাগ পরিবর্তন করুন।
এই বিভাগে মডেলকে পাঠানোর জন্য অন্তত টেক্সট প্রম্পট অন্তর্ভুক্ত করতে হবে।
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 কনসোল আপনার টেমপ্লেটের জন্য একটি টেস্টিং অভিজ্ঞতা প্রদান করে। এই অভিজ্ঞতা আপনাকে বুঝতে সাহায্য করে যে আপনার টেমপ্লেট ব্যবহার করা হলে কী হবে – অনুরোধের ফর্ম্যাট এবং আসল অনুরোধের আউটপুট, দুটিই।
টেমপ্লেট সেভ করুন বিকল্পে ক্লিক করুন যাতে আপনি টেমপ্লেট পরীক্ষা করতে পারেন।
আপনি পরে যেকোনও সময় টেমপ্লেট এডিট করতে বা মুছে দিতে পারবেন। আপনি পরে শুধুমাত্র টেমপ্লেট আইডির ভ্যালু পরিবর্তন করতে পারবেন না।
আপনার প্রম্পট ইনপুট ভেরিয়েবল ব্যবহার করলে, টেস্ট ইনপুট ফিল্ডে টেস্ট ভ্যালু যোগ করুন। এই উদাহরণের জন্য:
{ "customerName": "Jane" }আপনার Firebase প্রোজেক্টে একাধিক Gemini API পরিষেবা প্রদানকারী চালু করা থাকলে, টেস্ট অনুরোধের জন্য কোনটি ব্যবহার করবেন তা বেছে নিতে পারবেন। কনসোলে এই বিকল্পটি দেখা গেলে,
Gemini Developer APIঅথবাAgent Platform Gemini API(আগে Vertex AI নামে পরিচিত ছিল) বিকল্প বেছে নিন।মনে রাখবেন যে এই বিকল্পটি শুধুমাত্র Firebase কনসোল টেস্টিং অভিজ্ঞতার মাধ্যমে জমা দেওয়া অনুরোধের ক্ষেত্রে প্রযোজ্য। আপনার অ্যাপ থেকে করা আসল অনুরোধে, আপনি নিজের বেছে নেওয়া Gemini API প্রদানকারীকে উল্লেখ করেন, ঠিক যেমনটি আপনি যেকোনও অনুরোধের জন্য করেন।
ফর্ম্যাট করা পরীক্ষার অনুরোধ তৈরি করুন বোতামে ক্লিক করুন।
স্ক্রিনের ডানদিকে ফর্ম্যাট করা টেস্ট অনুরোধ পর্যালোচনা করুন এবং আপনার টেমপ্লেটের যেকোনও ফিল্ডে ইটারেট করুন।
ফর্ম্যাট করা পরীক্ষার অনুরোধে সন্তুষ্ট হলে, প্রম্পট পরীক্ষা রান করুন বোতামে ক্লিক করুন।
স্ক্রিনের ডানদিকে ফলাফল হিসেবে পাওয়া টেস্টের উত্তর পর্যালোচনা করুন এবং আপনার টেমপ্লেটের যেকোনও ফিল্ডে পরিবর্তন করুন।
আপনার অ্যাপের কোড থেকে টেমপ্লেট অ্যাক্সেস করার জন্য আপনি প্রস্তুত থাকলে, টেমপ্লেটের উপরে ডানদিকের কোণে
লক আইকনে ক্লিক করে টেমপ্লেট লক করুন।এডিটিং অভিজ্ঞতা থেকে বেরিয়ে আসতে বন্ধ করুন বিকল্পে ক্লিক করুন।
ধাপ ৩: আপনার কোড থেকে টেমপ্লেট অ্যাক্সেস করুন
|
এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট কন্টেন্ট ও কোড দেখতে আপনার 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.
templateId: 'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template.
templateVariables: {
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}");
}
এরপরে কী?
সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করার জন্য পেশাদার পদ্ধতি ও বিবেচ্য বিষয় সম্পর্কে জানুন।
টেমপ্লেট ফর্ম্যাট ও সিনট্যাক্স এবং উদাহরণ সম্পর্কে বিস্তারিত জানুন।
এডিট, লক ও ভার্সন কন্ট্রোল সহ টেমপ্লেট ম্যানেজ করা সম্পর্কে জানুন।
উন্নত ওয়ার্কফ্লো সম্পর্কে জানুন, যেমন আমাদের REST API ব্যবহার করে প্রোগ্রাম্যাটিকভাবে টেমপ্লেট নিয়ে কাজ করা বা নির্দিষ্ট লোকেশনে আপনার টেমপ্লেট ডেপ্লয় করা।