ফায়ারবেসে ভার্টেক্স AI

আপনার অ্যাপ থেকে সরাসরি জেমিনি API এবং মডেলের জেমিনি পরিবার অ্যাক্সেস করতে, আমরা Android এর জন্য Firebase SDK-তে Vertex AI ব্যবহার করার পরামর্শ দিই। এই SDK হল বৃহত্তর ফায়ারবেস প্ল্যাটফর্মের অংশ যা আপনাকে ফুল-স্ট্যাক অ্যাপ তৈরি এবং চালাতে সাহায্য করে।

Firebase ইন্টিগ্রেশন আর্কিটেকচারে Vertex AI
চিত্র 1. ফায়ারবেস ইন্টিগ্রেশন আর্কিটেকচারে ভার্টেক্স এআই।

Google AI ক্লায়েন্ট SDK থেকে স্থানান্তর করুন৷

Firebase SDK-তে Vertex AI Google AI ক্লায়েন্ট SDK- এর মতোই, কিন্তু Firebase SDK-তে Vertex AI উৎপাদন ব্যবহারের ক্ষেত্রে গুরুত্বপূর্ণ নিরাপত্তা বিকল্প এবং অন্যান্য বৈশিষ্ট্যগুলি অফার করে ৷ উদাহরণস্বরূপ, Firebase এ Vertex AI ব্যবহার করার সময় আপনি নিম্নলিখিতগুলিও ব্যবহার করতে পারেন:

  • অননুমোদিত ক্লায়েন্টদের অপব্যবহার থেকে Gemini API রক্ষা করতে Firebase অ্যাপ চেক করুন

  • আপনার অ্যাপের একটি নতুন সংস্করণ প্রকাশ করার প্রয়োজন ছাড়াই ক্লাউডে (উদাহরণস্বরূপ, মডেলের নাম) আপনার অ্যাপের জন্য গতিশীলভাবে সেট এবং মান পরিবর্তন করতে Firebase রিমোট কনফিগ

  • Firebase-এর জন্য ক্লাউড স্টোরেজ জেমিনি API-তে আপনার অনুরোধে বড় মিডিয়া ফাইলগুলি অন্তর্ভুক্ত করতে।

আপনি যদি ইতিমধ্যেই আপনার অ্যাপে Google AI ক্লায়েন্ট SDK সংহত করে থাকেন, তাহলে আপনি Firebase-এ Vertex AI-তে স্থানান্তর করতে পারেন।

শুরু হচ্ছে

আপনার অ্যাপ থেকে সরাসরি Gemini API-এর সাথে ইন্টারঅ্যাক্ট করার আগে, আপনাকে প্রথমে কিছু জিনিস করতে হবে, যার মধ্যে প্রম্পটিংয়ের সাথে পরিচিত হওয়া এবং SDK ব্যবহার করার জন্য Firebase এবং আপনার অ্যাপ সেট আপ করা সহ।

প্রম্পট সঙ্গে পরীক্ষা

আপনি Vertex AI স্টুডিওতে প্রম্পট নিয়ে পরীক্ষা করতে পারেন। ভার্টেক্স এআই স্টুডিও প্রম্পট ডিজাইন এবং প্রোটোটাইপিংয়ের জন্য একটি আইডিই। এটি আপনাকে পাঠ্য এবং চিত্র সহ প্রম্পট পরীক্ষা করার জন্য ফাইলগুলি আপলোড করতে এবং পরে এটিকে পুনরায় দেখার জন্য একটি প্রম্পট সংরক্ষণ করতে দেয়।

আপনার ব্যবহারের ক্ষেত্রে সঠিক প্রম্পট তৈরি করা বিজ্ঞানের চেয়ে বেশি শিল্প, যা পরীক্ষাকে সমালোচনামূলক করে তোলে। আপনি Firebase ডকুমেন্টেশনে প্রম্পটিং সম্পর্কে আরও জানতে পারেন।

একটি Firebase প্রকল্প সেট আপ করুন এবং আপনার অ্যাপটিকে Firebase-এর সাথে সংযুক্ত করুন

একবার আপনি আপনার অ্যাপ থেকে Gemini API কল করার জন্য প্রস্তুত হয়ে গেলে, আপনার অ্যাপে Firebase এবং SDK সেট আপ করার জন্য Firebase-এ Vertex AI- তে দেওয়া নির্দেশাবলী অনুসরণ করুন। শুরু করার নির্দেশিকা আপনাকে এই নির্দেশিকায় নিম্নলিখিত সমস্ত কাজ করতে সাহায্য করবে।

  1. একটি নতুন বা বিদ্যমান ফায়ারবেস প্রজেক্ট সেট আপ করুন, যার মধ্যে পে-অ্যাজ-ইউ-গো ব্লেজ প্রাইসিং প্ল্যান ব্যবহার করা এবং প্রয়োজনীয় এপিআই সক্ষম করা।

  2. আপনার অ্যাপটি রেজিস্টার করা এবং আপনার অ্যাপে আপনার Firebase কনফিগার ফাইল ( google-services.json ) যোগ করা সহ আপনার অ্যাপকে Firebase-এ সংযুক্ত করুন।

Gradle নির্ভরতা যোগ করুন

আপনার অ্যাপ মডিউলে নিম্নলিখিত গ্রেডেল নির্ভরতা যোগ করুন:

কোটলিন

dependencies {
  ...
  implementation("com.google.firebase:firebase-vertexai:16.0.2")
}

জাভা

dependencies {

   [...]

   implementation("com.google.firebase:firebase-vertexai:16.0.2")

   // Required to use `ListenableFuture` from Guava Android for one-shot generation
   implementation("com.google.guava:guava:31.0.1-android")

   // Required to use `Publisher` from Reactive Streams for streaming operations
   implementation("org.reactivestreams:reactive-streams:1.0.4")
}

Vertex AI পরিষেবা এবং জেনারেটিভ মডেল শুরু করুন

একটি GenerativeModel ইনস্ট্যান্টিয়েট করে এবং মডেলের নাম নির্দিষ্ট করে শুরু করুন:

কোটলিন

val generativeModel = Firebase.vertexAI.generativeModel("gemini-1.5-flash")

জাভা

GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel("gemini-1.5-flash");

Firebase ডকুমেন্টেশনে, আপনি Firebase-এ Vertex AI-এর সাথে ব্যবহারের জন্য উপলব্ধ মডেলগুলি সম্পর্কে আরও জানতে পারেন৷ আপনি মডেল প্যারামিটার কনফিগার করার বিষয়েও শিখতে পারেন।

আপনার অ্যাপ থেকে Gemini API এর সাথে ইন্টারঅ্যাক্ট করুন

এখন যেহেতু আপনি SDK ব্যবহার করার জন্য Firebase এবং আপনার অ্যাপ সেট আপ করেছেন, আপনি আপনার অ্যাপ থেকে Gemini API-এর সাথে ইন্টারঅ্যাক্ট করতে প্রস্তুত।

পাঠ্য তৈরি করুন

একটি পাঠ্য প্রতিক্রিয়া তৈরি করতে, আপনার প্রম্পটের সাথে generateContent() কল করুন।

কোটলিন

// Note: `generateContent()` is a `suspend` function, which integrates well
// with existing Kotlin code.

scope.launch {
  val response = model.generateContent("Write a story about the green robot")
}

জাভা

// In Java, create a `GenerativeModelFutures` from the `GenerativeModel`.
// Note that `generateContent()` returns a `ListenableFuture`. Learn more:
// https://developer.android.com/develop/background-work/background-tasks/asynchronous/listenablefuture

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Content prompt = new Content.Builder()
    .addText("Write a story about a green robot.")
    .build();

ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

ছবি এবং অন্যান্য মিডিয়া থেকে পাঠ্য তৈরি করুন

আপনি একটি প্রম্পট থেকে পাঠ্য তৈরি করতে পারেন যাতে পাঠ্য প্লাস ছবি বা অন্যান্য মিডিয়া অন্তর্ভুক্ত থাকে। যখন আপনি generateContent() কল করেন, আপনি মিডিয়াটিকে ইনলাইন ডেটা হিসাবে পাস করতে পারেন (নিচের উদাহরণে দেখানো হয়েছে)। বিকল্পভাবে, আপনি Firebase URL-এর জন্য ক্লাউড স্টোরেজ ব্যবহার করে একটি অনুরোধে বড় মিডিয়া ফাইল অন্তর্ভুক্ত করতে পারেন।

কোটলিন

scope.launch {
  val response = model.generateContent(
    content {
      image(bitmap)
      text("what is the object in the picture?")
    }
  )
}

জাভা

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sparky);

Content prompt = new Content.Builder()
        .addImage(bitmap)
        .addText("What developer tool is this mascot from?")
        .build();

ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

বহু পালা চ্যাট

আপনি মাল্টি-টার্ন কথোপকথন সমর্থন করতে পারেন। startChat() ফাংশন দিয়ে একটি চ্যাট শুরু করুন। আপনি ঐচ্ছিকভাবে একটি বার্তা ইতিহাস প্রদান করতে পারেন. তারপর চ্যাট বার্তা পাঠাতে sendMessage() ফাংশন কল করুন।

কোটলিন

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?") }
    )
)

scope.launch {
   val response = chat.sendMessage("How many paws are in my house?")
}

জাভা

// (Optional) create message history
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();

Publisher<GenerateContentResponse> streamingResponse =
        chat.sendMessageStream(message);

StringBuilder outputContent = new StringBuilder();

streamingResponse.subscribe(new Subscriber<GenerateContentResponse>() {
    @Override
    public void onNext(GenerateContentResponse generateContentResponse) {
        String chunk = generateContentResponse.getText();
        outputContent.append(chunk);
    }

    @Override
    public void onComplete() {
        // ...
    }

    @Override
    public void onError(Throwable t) {
        t.printStackTrace();
    }

    @Override
    public void onSubscribe(Subscription s) {
        s.request(Long.MAX_VALUE);
    }

});

প্রতিক্রিয়া স্ট্রীম

আপনি মডেল জেনারেশন থেকে সম্পূর্ণ ফলাফলের জন্য অপেক্ষা না করে দ্রুত মিথস্ক্রিয়া অর্জন করতে পারেন এবং পরিবর্তে আংশিক ফলাফল পরিচালনা করতে স্ট্রিমিং ব্যবহার করতে পারেন। একটি প্রতিক্রিয়া স্ট্রিম করতে generateContentStream() ব্যবহার করুন।

কোটলিন

scope.launch {
  var outputContent = ""

  generativeModel.generateContentStream(inputContent)
          .collect { response ->
            outputContent += response.text
          }
}

জাভা

// Note that in Java the method `generateContentStream()` returns a
// Publisher from the Reactive Streams library.
// https://www.reactive-streams.org/

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
Content prompt = new Content.Builder()
        .addText("Write a story about a green robot.")
        .build();

Publisher<GenerateContentResponse> streamingResponse =
    model.generateContentStream(prompt);

StringBuilder outputContent = new StringBuilder();
streamingResponse.subscribe(new Subscriber<GenerateContentResponse>() {
  @Override
  public void onNext(GenerateContentResponse generateContentResponse) {
    String chunk = generateContentResponse.getText();
    outputContent.append(chunk);
  }

  @Override
  public void onComplete() {
    // ...
  }

  @Override
  public void onError(Throwable t) {
    t.printStackTrace();
  }

  @Override
  public void onSubscribe(Subscription s) {
    s.request(Long.MAX_VALUE);
  }
});

পরবর্তী পদক্ষেপ