বুকশেল্ফ নির্মাতা: জেমিনি অ্যাপ্লিকেশনের জন্য একটি জাভা ক্লাউড ফাংশন তৈরি করতে জেমিনি ব্যবহার করুন

১. ভূমিকা

আপনি কি বই পড়তে ভালোবাসেন কিন্তু অসংখ্য বইয়ের ভিড়ে দিশেহারা হয়ে পড়েন? এমন একটি এআই-চালিত অ্যাপের কথা ভাবুন যা শুধু আপনার জন্য সেরা বইয়ের সুপারিশই করে না, বরং আপনার পছন্দের জনরার ওপর ভিত্তি করে একটি সংক্ষিপ্ত সারাংশও প্রদান করে, যা আপনাকে বইটির মূলভাব সম্পর্কে একটি ধারণা দেয়। এই কোডল্যাবে, আমি আপনাকে BigQuery এবং Gemini দ্বারা চালিত ক্লাউড ফাংশন ব্যবহার করে এমনই একটি অ্যাপ তৈরি করার পদ্ধতি ধাপে ধাপে দেখাব।

প্রকল্পের সংক্ষিপ্ত বিবরণ

আমাদের ব্যবহারের ক্ষেত্রটি এই ৪টি মূল উপাদানকে কেন্দ্র করে গড়ে উঠেছে:

  • বইয়ের ডেটাবেস: ইন্টারনেট আর্কাইভের বইয়ের বিশাল BigQuery পাবলিক ডেটাসেটটি আমাদের পূর্ণাঙ্গ বইয়ের ক্যাটালগ হিসেবে কাজ করবে।
  • এআই সামারাইজেশন ইঞ্জিন: জেমিনি-প্রো ল্যাঙ্গুয়েজ মডেল দ্বারা সজ্জিত গুগল ক্লাউড ফাংশনস, ব্যবহারকারীর অনুরোধ অনুযায়ী তথ্যবহুল সারাংশ তৈরি করবে।
  • BigQuery ইন্টিগ্রেশন: BigQuery-এর অভ্যন্তরে একটি রিমোট ফাংশন, যা চাহিদা অনুযায়ী বইয়ের সারাংশ এবং থিম সরবরাহ করার জন্য আমাদের ক্লাউড ফাংশনকে কল করে।
  • ইউজার ইন্টারফেস: ক্লাউড রান-এ হোস্ট করা একটি ওয়েব অ্যাপ, যা ব্যবহারকারীদের ফলাফল দেখার জন্য একটি ওয়েব অ্যাপ্লিকেশন প্রদান করবে।

আমরা বাস্তবায়নটিকে ৩টি কোডল্যাবে ভাগ করব:

কোডল্যাব ১: জেমিনি ব্যবহার করে একটি জেমিনি অ্যাপ্লিকেশনের জন্য একটি জাভা ক্লাউড ফাংশন তৈরি করুন।

কোডল্যাব ২: BigQuery ব্যবহার করে Gemini-এর মাধ্যমে শুধুমাত্র SQL-ভিত্তিক জেনারেটিভ এআই অ্যাপ্লিকেশন তৈরি করুন।

কোডল্যাব ৩: Gemini ব্যবহার করে একটি Java Spring Boot ওয়েব অ্যাপ্লিকেশন তৈরি করুন যা BigQuery-এর সাথে ইন্টারঅ্যাক্ট করে।

২. জাভা ক্লাউড ফাংশনে সার্ভারবিহীনভাবে একটি জেনারেটিভ এআই অ্যাপ তৈরি করতে জেমিনি ব্যবহার করুন।

আপনি যা তৈরি করবেন

আপনি একটি তৈরি করবেন

  • জাভা ক্লাউড ফাংশনস অ্যাপ্লিকেশন যা জেমিনি ১.০ প্রো ব্যবহার করে একটি নির্দিষ্ট প্রম্পটকে JSON অ্যারে আকারে ইনপুট হিসেবে গ্রহণ করে এবং একটি প্রতিক্রিয়া ("replies" লেবেলযুক্ত JSON ভ্যালু) ফেরত দেয়।
  • আপনি জেমিনির সাহায্যে বিল্ড এবং ডিপ্লয় ধাপগুলো সম্পন্ন করবেন।

৩. প্রয়োজনীয়তা

নিম্নে পূর্বশর্তগুলো উল্লেখ করা হলো:

আপনার প্রকল্প তৈরি করুন

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।

ক্লাউড শেল সক্রিয় করুন

  1. আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ এবং এতে bq আগে থেকেই লোড করা থাকে।

ক্লাউড কনসোল থেকে, উপরের ডান কোণায় থাকা ‘Activate Cloud Shell’-এ ক্লিক করুন: 6757b2fb50ddcc2d.png

  1. ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে। আপনি যে প্রমাণীকৃত, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
  1. আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>

gcloud কমান্ড ও তার ব্যবহারবিধি জানতে ডকুমেন্টেশন দেখুন।

৪. গুগল ক্লাউড এবং প্রয়োজনীয় এপিআই-এর জন্য জেমিনি সক্রিয় করা

মিথুন রাশি সক্রিয় করুন

  1. এপিআই (API) সক্রিয় করতে মার্কেটপ্লেসে Gemini for Google Cloud- এ যান। আপনি নিম্নলিখিত কমান্ডটিও ব্যবহার করতে পারেন:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
  1. জেমিনি পেজটিতে যান এবং 'চ্যাটিং শুরু করুন'-এ ক্লিক করুন।

গুরুত্বপূর্ণ: Gemini দিয়ে কাজ শুরু করতে এবং Cloud Shell IDE-তে Gemini সক্রিয় করতে, এই কোডল্যাবের ধাপ ১ এবং ২ অনুসরণ করুন।

অন্যান্য প্রয়োজনীয় এপিআই সক্রিয় করুন

আমরা সেটা কীভাবে করব? চলুন, জেমিনিকে সেটাই জিজ্ঞেস করি, কেমন? কিন্তু তার আগে মনে রাখবেন:

এলএলএমগুলো অনির্দিষ্ট। তাই আপনি যখন এই প্রম্পটগুলো চেষ্টা করবেন, তখন যে প্রতিক্রিয়াটি পাবেন তা আমার স্ক্রিনশটের প্রতিক্রিয়াগুলো থেকে ভিন্ন হতে পারে।

গুগল ক্লাউড কনসোলের সার্চ বারের পাশে উপরের ডান কোণায় থাকা 'ওপেন জেমিনি' আইকনটিতে ক্লিক করে জেমিনি চ্যাট কনসোলে যান।

26e1491322855614.png

এই প্রশ্নটি 'এখানে একটি প্রম্পট লিখুন' বিভাগে টাইপ করুন:

How do I enable the cloud functions api using a gcloud command? 

আপনি নিম্নলিখিত অনুরূপ একটি প্রতিক্রিয়া পাবেন:

gcloud services enable cloudfunctions.googleapis.com

ওটা কপি করুন (আপনি কমান্ড স্নিপেটের উপরের কপি আইকনটি ব্যবহার করতে পারেন) এবং ক্লাউড ফাংশনগুলো সক্রিয় করতে ক্লাউড শেল টার্মিনালে এটি চালান। ক্লাউড রানের জন্যও একই কাজ করুন, কারণ ক্লাউড ফাংশনগুলো বিল্ড এবং ডিপ্লয় করার জন্য আমাদের উভয়েরই প্রয়োজন হবে।

gcloud services enable \
  cloudfunctions.googleapis.com \
  aiplatform.googleapis.com \
  run.googleapis.com \
  cloudbuild.googleapis.com

৫. জেমিনি দিয়ে ক্লাউড ফাংশন টেমপ্লেট প্রস্তুত করা

এই পর্যায়ে, আমি ধরে নিচ্ছি যে আপনার ক্লাউড শেল IDE-তে ইতিমধ্যেই Gemini সক্রিয় করা আছে।

আপনার ক্লাউড শেল টার্মিনালের উপরের ডান কোণায় থাকা ওপেন এডিটর আইকনে ক্লিক করে ক্লাউড শেল এডিটর খুলুন (আমি সাধারণত টার্মিনাল এবং এডিটর সমান্তরালভাবে আলাদা ট্যাবে খুলতে পছন্দ করি, যাতে আমরা একটিতে কোড লিখতে এবং অন্যটিতে বিল্ড করতে পারি)।

edd258384bc74f1f.png

এডিটরটি খোলার পর, নিশ্চিত করুন যে এডিটর কনসোলের নিচের ডান কোণায় থাকা জেমিনি লোগোটি সক্রিয় আছে (এবং বাতিল করা নেই)। এছাড়াও নিশ্চিত করুন যে নিচের বাম কোণায় থাকা আপনার গুগল ক্লাউড প্রজেক্টটি আপনার বর্তমান সক্রিয় প্রজেক্টটির দিকে নির্দেশ করছে, যেটি নিয়ে আপনি কাজ করতে চান। যদি সেগুলি নিষ্ক্রিয় থাকে, তবে সেগুলিতে ক্লিক করুন, অনুমোদন দিন, যে গুগল ক্লাউড প্রজেক্টটির দিকে এটি নির্দেশ করতে চান সেটি নির্বাচন করুন এবং সেগুলিকে সক্রিয় করে নিন।

উভয়টি সক্রিয় হয়ে গেলে, নিচের বাম কোণায় থাকা প্রজেক্টের নামে ক্লিক করুন এবং খুলে যাওয়া "Cloud Code" শিরোনামের পপ-আপ তালিকাটিতে, নিচে স্ক্রল করে "New Application" পর্যন্ত যান।

ca08602b576ebd57.png

সেই তালিকা থেকে ক্লাউড ফাংশনস অ্যাপ্লিকেশনটি নির্বাচন করুন। যে তালিকাটি পপ-আপ হবে, সেখান থেকে জাভা নির্বাচন করুন:

ac2b44245949da68.png

প্রাপ্ত তালিকায়, helloworld-এর পরিবর্তে প্রজেক্টের নাম 'duetai-gemini-calling' টাইপ করুন এবং OK-তে ক্লিক করুন।

bf9cfe86e35cdced.png

দারুণ! আপনি জেমিনি দিয়ে আপনার সাধারণ জাভা ক্লাউড ফাংশনস অ্যাপ্লিকেশনটি বুটস্ট্র্যাপ করেছেন এবং এনাবল ও অ্যাক্টিভেশন কনফিগারেশন ছাড়া আর তেমন কিছুই করেননি, তাই না?

প্রকল্পের কাঠামোটি আপনার দেখা উচিত:

d56e410fb76f183f.png

এই মুহূর্তে আপনি ফাংশনটি ডেপ্লয় করার জন্য প্রস্তুত। কিন্তু আমরা এই কারণে এটি শুরু করিনি। চলুন, জাভা এসডিকে ব্যবহার করে এই ক্লাউড ফাংশনে জেমিনি প্রো এপিআই ইমপ্লিমেন্টেশনটি তৈরি করা যাক।

এখন চলুন আমাদের ব্যবহারের জন্য কার্যকারিতাটি তৈরি করি, যা হলো এই ক্লাউড ফাংশনে জেমিনি প্রো মডেলটিকে কল করা। এটি করার জন্য, আপনি চাইলে আরও প্রম্পট যোগ করে জেমিনির সাহায্যে ধাপে ধাপে আপনার কোড উন্নত করতে পারেন, অথবা নিজের মতো করে লজিকটি লিখতে পারেন। আমি দুটোরই মিশ্রণ করতে যাচ্ছি।

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

জেমিনি চ্যাট কনসোলে (বাম প্যানে থাকা ক্লাউড কোড এডিটরের ভেতরেরটি), নিম্নলিখিত প্রম্পটটি টাইপ করুন:

what is the maven dependency for com.google.cloud.vertexai library

আমি বিশেষভাবে com.google.cloud.vertexai প্যাকেজটির কথা জিজ্ঞাসা করার কারণ হলো, আমি আমার সোর্স কোডে এটিই ব্যবহার করছি, যেখানে আমি জেমিনি ইনভোকেশন কোডটি প্রয়োগ করি।

আমি এই ফলাফলটি পেয়েছি:

62c4295b9b4654e9.png

 <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-vertexai</artifactId>
      <version>0.1.0</version>
    </dependency>

এটি কপি করে pom.xml ফাইলে, </dependencies> ট্যাগের ঠিক আগে পেস্ট করুন। ভার্সনটি 0.1.0 দিয়ে প্রতিস্থাপন করুন (যদি আপনি spring-cloud-gcp ভার্সন নম্বরগুলো পরিচালনা করার জন্য Spring Cloud GCP BOM ব্যবহার করেন, তাহলে <version> ট্যাগটি সরিয়ে ফেলতে পারেন)।

নির্ভরতা বিভাগটি দেখতে এইরকম হওয়া উচিত:

1800f10af9331210.png

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

    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.10</version>
    </dependency>

৭. ফাংশন এন্ট্রি পয়েন্ট এবং ক্লাসের নাম পরিবর্তন করুন

  1. ".vscode" ফোল্ডারের অধীনে থাকা "launch.json" ফাইলটিতে যান। ফাংশনের নামটি "function-hello-world" থেকে পরিবর্তন করে "function-gemini-calling" করুন।
  2. entryPoint-এর মান "cloudcode.helloworld.HelloWorld" থেকে "cloudcode.bookshelf.Bookshelf"-এ আপডেট করুন।
  3. এখন "HelloWorld.java" জাভা ক্লাস ফাইলটিতে যান। প্যাকেজের নাম পরিবর্তন করে `package cloudcode.bookshelf;` করুন। যে এররটি আসবে, সেখানে হলুদ বাল্বটিতে ক্লিক করুন এবং "Move HelloWorld.java" to package cloudcode.bookshelf;` লেখা অপশনটিতে ক্লিক করুন।

38d721978bddc8a8.png

  1. ক্লাসের নাম পরিবর্তন করে Bookshelf করুন এবং যে এররটি আসবে, সেখানে ছোট হলুদ বাল্বটিতে ক্লিক করে "Rename file to Bookshelf.java" অপশনটি সিলেক্ট করুন।

৮. সেই মেথডটি তৈরি করুন যা জেমিনি প্রো-কে কল করে।

চলুন এই কার্যকারিতাটি Bookshelf.java ক্লাসে প্রয়োগ করি। আপনার Bookshelf.java ফাইলটি নিচের কোড দিয়ে প্রতিস্থাপন করুন:

package cloudcode.bookshelf;
import java.io.BufferedWriter;
import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.api.GenerationConfig;
import com.google.cloud.vertexai.generativeai.preview.GenerativeModel;
import com.google.cloud.vertexai.generativeai.preview.ResponseHandler;
import java.io.IOException;
import java.util.List;
import java.util.Arrays;
import java.util.Map;
import java.util.LinkedHashMap;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonArray;

public class Bookshelf implements HttpFunction {
  private static final Gson gson = new Gson();

 @Override
  public void service(HttpRequest request, HttpResponse response) throws Exception {
    BufferedWriter writer = response.getWriter();

 // Get the request body as a JSON object.
 JsonObject requestJson = new Gson().fromJson(request.getReader(), JsonObject.class);
 JsonArray calls_array = requestJson.getAsJsonArray("calls");
 JsonArray calls = (JsonArray) calls_array.get(0);
 String context = calls.get(0).toString().replace("\"", "");

 //Invoke Gemini model
  String raw_result = callGemini(context);
  raw_result = raw_result.replace("\n","");
  String trimmed = raw_result.trim();
  List<String> result_list = Arrays.asList(trimmed);
  Map<String, List<String>> stringMap = new LinkedHashMap<>();
  stringMap.put("replies", result_list);
 
  // Serialization
  String return_value = gson.toJson(stringMap);
  writer.write(return_value);
    }
  public String callGemini(String context) throws IOException{
      String res = "";
        try (VertexAI vertexAi = new VertexAI("REPLACE_WITH_YOUR_PROJECT_ID", "us-central1"); ) {
          GenerationConfig generationConfig =
              GenerationConfig.newBuilder()
                  .setMaxOutputTokens(2048)
                  .setTemperature(0.4F)
                  .setTopK(32)
                  .setTopP(1)
                  .build();  
        GenerativeModel model = new GenerativeModel("gemini-pro", generationConfig, vertexAi);
        GenerateContentResponse response = model.generateContent(context);
        res = ResponseHandler.getText(response);
      }catch(Exception e){
        System.out.println(e);
        }
        return res;
    }
}

এই ক্লাসটি নিচের JSON কাঠামোতে ইনপুট আশা করে:

{ "কল": [["আপনার প্রম্পট এখানে"]] }

এটি নিম্নরূপ প্রতিক্রিয়া প্রদান করে:

(Json) Map<String, List<String>> {"replies": ["response"]}

কোডটি ব্যাখ্যা করার জন্য বাম দিকের প্যানেলে থাকা ক্লাউড শেল এডিটর থেকে জেমিনি চ্যাট অপশনটি ব্যবহার করে দেখুন। বিকল্পভাবে, আপনি সম্পূর্ণ কোডটি সিলেক্ট করে সেটির উপরের বাম কোণায় থাকা হলুদ বাল্বটিতে ক্লিক করে 'Explain this' অপশনটি বেছে নিতে পারেন।

66fb67507793e368.png

৯. ক্লাউড ফাংশনটি স্থাপন করুন

এখন যেহেতু ক্লাউড ফাংশনটি প্রস্তুত, চলুন জেমিনিকে জিজ্ঞাসা করি এটি কীভাবে ডেপ্লয় করতে হয়। ক্লাউড কোড এডিটরে জেমিনি চ্যাটে যান এবং নিম্নলিখিতটি লিখুন:

   How to deploy this Cloud Function with a gcloud command?

আমি নিম্নোক্ত উত্তরটি পেয়েছি:

9f9db98933841864.png

আমি এখন বিষয়টি আরও খতিয়ে দেখতে চাইলাম। তাই আমি জেমিনিকে সম্পূর্ণ gcloud functions deploy কমান্ডটি দিতে বললাম। তার উত্তর নিচে দেওয়া হলো:

b77701c00dc3eaf1.png

এখন আমি বলতে পারছি না আপনিও একই প্রতিক্রিয়া পাবেন কিনা, কিন্তু আমি এটা দেখে বেশ আগ্রহী হয়েছি যে, এটি আমাকে অবাক করে দিয়ে আরও কিছু বিস্তারিত তথ্য যোগ করেছে, যেমনটা নিচের ছবিতে দেখা যাচ্ছে:

অনুরোধের মূল অংশের ফরম্যাট:

82bf20304143a374.png

এবং

প্রতিক্রিয়ার বিন্যাস:

ade55b3de5d823a6.png

এখন, জেমিনি আমাদের যে gcloud কমান্ডটি দিয়েছে, সেটি চালিয়ে ফাংশনটি ডিপ্লয় করা যাক। এর জন্য আমাদের ক্লাউড শেল টার্মিনাল খুলতে হবে। আপনি https://console.cloud.google.com- এর জন্য এটি একটি নতুন ট্যাবে খুলতে পারেন এবং সঠিক প্রজেক্টটি সিলেক্ট করা আছে কিনা তা নিশ্চিত করুন। কনসোলের উপরের ডান কোণায় থাকা 'Activate Cloud Shell' আইকনে ক্লিক করে ক্লাউড শেল টার্মিনাল খুলুন এবং নিচের কমান্ডটি ব্যবহার করে নিশ্চিত করুন যে আপনি সঠিক প্রজেক্ট ফোল্ডারে আছেন:

cd duetai-gemini-calling

এরপর নিচের কমান্ডটি দিন:

gcloud functions deploy bookshelf --runtime java17 --trigger-http --entry-point cloudcode.bookshelf.Bookshelf --allow-unauthenticated

এটি আপনাকে জিজ্ঞাসা করবে "নতুন ফাংশন [bookshelf]-এর প্রমাণীকরণবিহীন আহ্বানের অনুমতি দিন?" "y" বলুন এবং এন্টার চাপুন। এরপর প্রযোজ্য হলে কয়েকটি প্রশ্ন আসবে এবং এটি আপনার সার্ভারলেস ক্লাউড ফাংশনটি এই URL সহ স্থাপন করবে: https://us-central1-*******.cloudfunctions.net/bookshelf।

এখন চলুন ডেপ্লয় করা ক্লাউড ফাংশনগুলো কল করে পরীক্ষা করে দেখি!

দ্রষ্টব্য: যদি আপনি ভুলবশত "Allow unauthenticated invocations" প্রশ্নটি এড়িয়ে যান বা "N" নির্বাচন করেন, তাহলে আপনি ক্লাউড ফাংশনগুলির ফলাফল অ্যাক্সেস করতে পারবেন না এবং অতিরিক্ত IAM সেটিংস প্রদান না করা পর্যন্ত একটি "permissions error" দেখতে পাবেন। তাই এই বিষয়ে মনোযোগ দিন।

১০. ডেপ্লয় করা ক্লাউড ফাংশনটি কল করুন

চলুন জেমিনিকে সেটা জিজ্ঞেস করি? আমি প্রম্পটটি প্রবেশ করালাম।

How to call the deployed cloud function?

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

1d2242715571fe6f.png

ডিপ্লয় করা ফাংশনটি চালু করার বিকল্প উপায়, gcloud কমান্ড ব্যবহার করে কল করা ইত্যাদি বিষয়ে নির্দিষ্ট প্রশ্ন করে চ্যাটটি খতিয়ে দেখুন। আমি নিচের প্রম্পটটি জমা দিয়েছিলাম:

how to call the deployed cloud function using gcloud

আমি নিম্নোক্ত উত্তরটি পেয়েছি: e7b29b2cfb57782c.png

আপনি এই প্রতিক্রিয়াটি ("gcloud functions call" কমান্ড) টার্মিনাল থেকে কিছু পরিবর্তন সহ আমাদের পরিস্থিতির জন্য উপযোগী করে ব্যবহার করতে পারেন (বিকল্পভাবে, সরাসরি প্রম্পটে প্যারামিটারগুলি পাস করে দেখুন এবং প্রতিক্রিয়া হিসাবে বিস্তারিত gcloud functions call পেতে সক্ষম হন কিনা):

gcloud functions call bookshelf --region=us-central1 --gen2 --data '{"calls":[["Hello! This is my test prompt."]]}'

এই হলো আমার ফলাফল:

6f396d915251db78.png

১১. পরিষ্কার করুন

ক্লাউড ফাংশনের বিস্তারিত পৃষ্ঠায় থাকা ডিলিট বোতামে ক্লিক করে আপনি পূর্বে তৈরি করা ক্লাউড ফাংশনগুলো মুছে ফেলতে পারেন।

১২. অভিনন্দন

আপনি সফলভাবে জেমিনি ব্যবহার করে জেমিনি ১.০ প্রো কল করার জন্য একটি জাভা ক্লাউড ফাংশন তৈরি, স্থাপন এবং পরীক্ষা করেছেন! এই অ্যাপ্লিকেশনটি বইয়ের সারাংশ এবং বিষয়বস্তুসহ বই সুপারিশ সম্পর্কিত ইনপুট প্রম্পট গ্রহণ করে।