Gemini API ব্যবহার করে, আপনি একাধিক বাঁক জুড়ে ফ্রিফর্ম কথোপকথন তৈরি করতে পারেন। Firebase SDK-এর Vertex AI কথোপকথনের অবস্থা পরিচালনা করে প্রক্রিয়াটিকে সহজ করে, তাই generateContent()
(বা generateContentStream()
) এর বিপরীতে, আপনাকে কথোপকথনের ইতিহাস নিজেকে সংরক্ষণ করতে হবে না।
ঐচ্ছিকভাবে Gemini API- এর একটি বিকল্প " Google AI " সংস্করণ নিয়ে পরীক্ষা করুন৷
Google AI স্টুডিও এবং Google AI ক্লায়েন্ট SDK ব্যবহার করে বিনামূল্যে অ্যাক্সেস পান (সীমার মধ্যে এবং যেখানে উপলব্ধ)। এই SDKগুলি শুধুমাত্র মোবাইল এবং ওয়েব অ্যাপে প্রোটোটাইপ করার জন্য ব্যবহার করা উচিত৷একটি Gemini API কীভাবে কাজ করে সে সম্পর্কে আপনি পরিচিত হওয়ার পরে, Firebase SDK-এ আমাদের Vertex AI- তে স্থানান্তর করুন (এই ডকুমেন্টেশন), যেটিতে মোবাইল এবং ওয়েব অ্যাপের জন্য গুরুত্বপূর্ণ অনেক অতিরিক্ত বৈশিষ্ট্য রয়েছে, যেমন Firebase App Check ব্যবহার করে API-কে অপব্যবহার থেকে রক্ষা করা এবং অনুরোধে বড় মিডিয়া ফাইলগুলির জন্য সমর্থন।
ঐচ্ছিকভাবে Vertex AI Gemini API সার্ভার-সাইডে কল করুন (যেমন Python, Node.js, বা Go)
Gemini API-এর Firebase Extensions সার্ভার-সাইড Vertex AI SDKs , Genkit বা Firebase এক্সটেনশনগুলি ব্যবহার করুন।
আপনি শুরু করার আগে
যদি আপনি ইতিমধ্যে না করে থাকেন, শুরু করার নির্দেশিকাটি সম্পূর্ণ করুন, যা বর্ণনা করে যে কীভাবে আপনার ফায়ারবেস প্রকল্প সেট আপ করবেন, আপনার অ্যাপকে ফায়ারবেসের সাথে সংযুক্ত করবেন, SDK যোগ করবেন, Vertex AI পরিষেবা শুরু করবেন এবং একটি GenerativeModel
উদাহরণ তৈরি করবেন।
একটি চ্যাট প্রম্পট অনুরোধ পাঠান
একটি মাল্টি-টার্ন কথোপকথন তৈরি করতে (চ্যাটের মতো), startChat()
কল করে চ্যাট শুরু করে শুরু করুন। তারপর একটি নতুন ব্যবহারকারীর বার্তা পাঠাতে sendMessage()
ব্যবহার করুন, যা চ্যাট ইতিহাসে বার্তা এবং প্রতিক্রিয়াও যুক্ত করবে।
কথোপকথনে বিষয়বস্তুর সাথে যুক্ত role
জন্য দুটি সম্ভাব্য বিকল্প রয়েছে:
user
: ভূমিকা যা প্রম্পট প্রদান করে। এই মানটিsendMessage()
এ কলের জন্য ডিফল্ট, এবং ভিন্ন ভূমিকা পাস করা হলে ফাংশনটি একটি ব্যতিক্রম থ্রো করে।model
: ভূমিকা যা প্রতিক্রিয়া প্রদান করে। বিদ্যমানhistory
সহstartChat()
কল করার সময় এই ভূমিকাটি ব্যবহার করা যেতে পারে।
সুইফট
আপনি একটি নতুন ব্যবহারকারী বার্তা পাঠাতে startChat()
এবং sendMessage()
কল করতে পারেন:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To generate text output, call sendMessage and pass in the message
let response = try await chat.sendMessage("How many paws are in my house?")
print(response.text ?? "No text in response.")
Kotlin
আপনি একটি নতুন ব্যবহারকারী বার্তা পাঠাতে startChat()
এবং sendMessage()
কল করতে পারেন:
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
val generativeModel = Firebase.vertexAI.generativeModel("gemini-2.0-flash")
// Initialize the chat
val chat = generativeModel.startChat(
history = listOf(
content(role = "user") { text("Hello, I have 2 dogs in my house.") },
content(role = "model") { text("Great to meet you. What would you like to know?") }
)
)
val response = chat.sendMessage("How many paws are in my house?")
print(response.text)
Java
আপনি একটি নতুন ব্যবহারকারী বার্তা পাঠাতে startChat()
এবং sendMessage()
কল করতে পারেন:
ListenableFuture
প্রদান করে। // Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
GenerativeModel gm = FirebaseVertexAI.getInstance()
.generativeModel("gemini-2.0-flash");
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
// (optional) Create previous chat history for context
Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText("Hello, I have 2 dogs in my house.");
Content userContent = userContentBuilder.build();
Content.Builder modelContentBuilder = new Content.Builder();
modelContentBuilder.setRole("model");
modelContentBuilder.addText("Great to meet you. What would you like to know?");
Content modelContent = userContentBuilder.build();
List<Content> history = Arrays.asList(userContent, modelContent);
// Initialize the chat
ChatFutures chat = model.startChat(history);
// Create a new user message
Content.Builder messageBuilder = new Content.Builder();
messageBuilder.setRole("user");
messageBuilder.addText("How many paws are in my house?");
Content message = messageBuilder.build();
// Send the message
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(message);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
আপনি একটি নতুন ব্যবহারকারী বার্তা পাঠাতে startChat()
এবং sendMessage()
কল করতে পারেন:
import { initializeApp } from "firebase/app";
import { getVertexAI, getGenerativeModel } from "firebase/vertexai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Vertex AI service
const vertexAI = getVertexAI(firebaseApp);
// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(vertexAI, { model: "gemini-2.0-flash" });
async function run() {
const chat = model.startChat({
history: [
{
role: "user",
parts: [{ text: "Hello, I have 2 dogs in my house." }],
},
{
role: "model",
parts: [{ text: "Great to meet you. What would you like to know?" }],
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "How many paws are in my house?";
const result = await chat.sendMessage(msg);
const response = await result.response;
const text = response.text();
console.log(text);
}
run();
Dart
আপনি একটি নতুন ব্যবহারকারী বার্তা পাঠাতে startChat()
এবং sendMessage()
কল করতে পারেন:
import 'package:firebase_vertexai/firebase_vertexai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
final model =
FirebaseVertexAI.instance.generativeModel(model: 'gemini-2.0-flash');
final chat = model.startChat();
// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];
final response = await chat.sendMessage(prompt);
print(response.text);
আপনার ব্যবহারের ক্ষেত্রে এবং অ্যাপের জন্য উপযুক্ত একটি মডেল এবং ঐচ্ছিকভাবে একটি অবস্থান কীভাবে চয়ন করবেন তা শিখুন।
প্রতিক্রিয়া স্ট্রিম
এই নমুনা চেষ্টা করার আগে নিশ্চিত করুন যে আপনি এই গাইডের শুরু করার আগে বিভাগটি সম্পূর্ণ করেছেন।
আপনি মডেল জেনারেশন থেকে সম্পূর্ণ ফলাফলের জন্য অপেক্ষা না করে দ্রুত মিথস্ক্রিয়া অর্জন করতে পারেন এবং পরিবর্তে আংশিক ফলাফল পরিচালনা করতে স্ট্রিমিং ব্যবহার করতে পারেন। প্রতিক্রিয়া স্ট্রিম করতে, sendMessageStream()
কল করুন।
সুইফট
আপনি মডেল থেকে প্রতিক্রিয়া স্ট্রিম করতে startChat()
এবং sendMessageStream()
কল করতে পারেন:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To stream generated text output, call sendMessageStream and pass in the message
let contentStream = try chat.sendMessageStream("How many paws are in my house?")
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
Kotlin
আপনি মডেল থেকে প্রতিক্রিয়া স্ট্রিম করতে startChat()
এবং sendMessageStream()
কল করতে পারেন:
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
val generativeModel = Firebase.vertexAI.generativeModel("gemini-2.0-flash")
// Initialize the chat
val chat = generativeModel.startChat(
history = listOf(
content(role = "user") { text("Hello, I have 2 dogs in my house.") },
content(role = "model") { text("Great to meet you. What would you like to know?") }
)
)
chat.sendMessageStream("How many paws are in my house?").collect { chunk ->
print(chunk.text)
}
Java
আপনি মডেল থেকে প্রতিক্রিয়া স্ট্রিম করতে startChat()
এবং sendMessageStream()
কল করতে পারেন:
Publisher
টাইপ ফেরত দেয়। // Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
GenerativeModel gm = FirebaseVertexAI.getInstance()
.generativeModel("gemini-2.0-flash");
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
// (optional) Create previous chat history for context
Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText("Hello, I have 2 dogs in my house.");
Content userContent = userContentBuilder.build();
Content.Builder modelContentBuilder = new Content.Builder();
modelContentBuilder.setRole("model");
modelContentBuilder.addText("Great to meet you. What would you like to know?");
Content modelContent = userContentBuilder.build();
List<Content> history = Arrays.asList(userContent, modelContent);
// Initialize the chat
ChatFutures chat = model.startChat(history);
// Create a new user message
Content.Builder messageBuilder = new Content.Builder();
messageBuilder.setRole("user");
messageBuilder.addText("How many paws are in my house?");
Content message = messageBuilder.build();
// Send the message
Publisher<GenerateContentResponse> streamingResponse =
chat.sendMessageStream(message);
final String[] fullResponse = {""};
streamingResponse.subscribe(new Subscriber<GenerateContentResponse>() {
@Override
public void onNext(GenerateContentResponse generateContentResponse) {
String chunk = generateContentResponse.getText();
fullResponse[0] += chunk;
}
@Override
public void onComplete() {
System.out.println(fullResponse[0]);
}
// ... other methods omitted for brevity
});
Web
আপনি মডেল থেকে প্রতিক্রিয়া স্ট্রিম করতে startChat()
এবং sendMessageStream()
কল করতে পারেন:
import { initializeApp } from "firebase/app";
import { getVertexAI, getGenerativeModel } from "firebase/vertexai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Vertex AI service
const vertexAI = getVertexAI(firebaseApp);
// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(vertexAI, { model: "gemini-2.0-flash" });
async function run() {
const chat = model.startChat({
history: [
{
role: "user",
parts: [{ text: "Hello, I have 2 dogs in my house." }],
},
{
role: "model",
parts: [{ text: "Great to meet you. What would you like to know?" }],
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "How many paws are in my house?";
const result = await chat.sendMessageStream(msg);
let text = '';
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
text += chunkText;
}
}
run();
Dart
আপনি মডেল থেকে প্রতিক্রিয়া স্ট্রিম করতে startChat()
এবং sendMessageStream()
কল করতে পারেন:
import 'package:firebase_vertexai/firebase_vertexai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Vertex AI service and create a `GenerativeModel` instance
// Specify a model that supports your use case
final model =
FirebaseVertexAI.instance.generativeModel(model: 'gemini-2.0-flash');
final chat = model.startChat();
// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];
final response = await chat.sendMessageStream(prompt);
await for (final chunk in response) {
print(chunk.text);
}
আপনি আর কি করতে পারেন?
- মডেলে দীর্ঘ প্রম্পট পাঠানোর আগে কীভাবে টোকেন গণনা করবেন তা শিখুন।
- Cloud Storage for Firebase সেট আপ করুন যাতে আপনি আপনার মাল্টিমোডাল অনুরোধগুলিতে বড় ফাইলগুলি অন্তর্ভুক্ত করতে পারেন এবং প্রম্পটে ফাইলগুলি সরবরাহ করার জন্য আরও পরিচালিত সমাধান পেতে পারেন৷ ফাইলগুলিতে ছবি, পিডিএফ, ভিডিও এবং অডিও অন্তর্ভুক্ত থাকতে পারে।
- জেমিনি API কে অননুমোদিত ক্লায়েন্টদের অপব্যবহার থেকে রক্ষা করতে Firebase App Check সেট আপ সহ উত্পাদনের জন্য প্রস্তুতির বিষয়ে চিন্তা করা শুরু করুন৷ এছাড়াও, উত্পাদন চেকলিস্ট পর্যালোচনা করতে ভুলবেন না।
অন্যান্য ক্ষমতা ব্যবহার করে দেখুন
- শুধুমাত্র পাঠ্য প্রম্পট থেকে পাঠ্য তৈরি করুন।
- ছবি , পিডিএফ , ভিডিও এবং অডিওর মতো বিভিন্ন ধরনের ফাইল প্রম্পট করে পাঠ্য তৈরি করুন।
- টেক্সট এবং মাল্টিমোডাল প্রম্পট উভয় থেকে কাঠামোগত আউটপুট (যেমন JSON) তৈরি করুন।
- টেক্সট প্রম্পট থেকে ছবি তৈরি করুন।
- বাহ্যিক সিস্টেম এবং তথ্যের সাথে জেনারেটিভ মডেল সংযোগ করতে ফাংশন কলিং ব্যবহার করুন।
বিষয়বস্তু তৈরি নিয়ন্ত্রণ কিভাবে শিখুন
- সর্বোত্তম অনুশীলন, কৌশল এবং উদাহরণ প্রম্পট সহ প্রম্পট ডিজাইন বুঝুন ।
- তাপমাত্রা এবং সর্বোচ্চ আউটপুট টোকেন ( মিথুনের জন্য) বা আকৃতির অনুপাত এবং ব্যক্তি তৈরির ( ইমেজেনের জন্য) মত মডেল প্যারামিটারগুলি কনফিগার করুন ।
- ক্ষতিকারক বলে বিবেচিত প্রতিক্রিয়া পাওয়ার সম্ভাবনা সামঞ্জস্য করতে নিরাপত্তা সেটিংস ব্যবহার করুন ।
সমর্থিত মডেল সম্পর্কে আরও জানুন
বিভিন্ন ব্যবহারের ক্ষেত্রে উপলব্ধ মডেল এবং তাদের কোটা এবং মূল্য সম্পর্কে জানুন।Firebase-এ Vertex AI-এর সাথে আপনার অভিজ্ঞতা সম্পর্কে মতামত দিন