Google AI ক্লায়েন্ট SDK৷

Google AI ক্লায়েন্ট SDK আপনাকে Gemini API কল করতে এবং আপনার Android অ্যাপ থেকে সরাসরি মডেলের জেমিনি পরিবার ব্যবহার করতে দেয়।

একটি বিনামূল্যের স্তর আপনাকে বিনা খরচে পরীক্ষা করতে দেয়৷ অন্যান্য মূল্যের বিবরণের জন্য, মূল্য নির্দেশিকা দেখুন।

গুগল এআই ইন্টিগ্রেশন আর্কিটেকচার
চিত্র 1. গুগল এআই ইন্টিগ্রেশন আর্কিটেকচার।

শুরু হচ্ছে

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

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

Google AI স্টুডিওতে আপনার প্রম্পট প্রোটোটাইপ করে শুরু করুন।

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

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

গুগল এআই স্টুডিও
চিত্র 2. গুগল এআই স্টুডিও

Google AI স্টুডিওর উন্নত ক্ষমতা সম্পর্কে আরও জানতে, Google AI Studio quickstart দেখুন।

আপনার API কী তৈরি করুন

একবার আপনার প্রম্পটে সন্তুষ্ট হলে, আপনার Gemini API কী তৈরি করতে Get API কী-তে ক্লিক করুন। কীটি আপনার অ্যাপ্লিকেশনের সাথে বান্ডিল করা হবে, যা পরীক্ষা এবং প্রোটোটাইপিংয়ের জন্য ঠিক আছে কিন্তু উৎপাদন ব্যবহারের ক্ষেত্রে প্রস্তাবিত নয়

এছাড়াও, আপনার সোর্স কোড সংগ্রহস্থলে প্রতিশ্রুতিবদ্ধ হওয়া থেকে আপনার API কী প্রতিরোধ করতে, সিক্রেটস গ্রেডল প্লাগইন ব্যবহার করুন।

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

আপনার অ্যাপে Google AI ক্লায়েন্ট SDK-এর নির্ভরতা যোগ করুন:

কোটলিন

dependencies {
  [...]
 implementation("com.google.ai.client.generativeai:generativeai:0.7.0")
}

জাভা

dependencies {
  [...]
  implementation("com.google.ai.client.generativeai:generativeai:0.7.0")

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

একটি GenerativeModel তৈরি করুন

নিম্নলিখিত প্রদান করে একটি GenerativeModel ইনস্ট্যান্টিয়েট করে শুরু করুন:

  • মডেলের নাম : gemini-1.5-flash , gemini-1.5-pro , বা gemini-1.0-pro
  • আপনার API কী Google AI স্টুডিও দিয়ে তৈরি হয়েছে।

আপনি ঐচ্ছিকভাবে মডেল প্যারামিটারগুলি সংজ্ঞায়িত করতে পারেন এবং তাপমাত্রা , topK , topP , এবং সর্বাধিক আউটপুট টোকেনের মান প্রদান করতে পারেন৷

আপনি নিম্নলিখিত বিষয়গুলির জন্য সুরক্ষা বৈশিষ্ট্যগুলিও সংজ্ঞায়িত করতে পারেন:

  • HARASSMENT
  • HATE_SPEECH
  • SEXUALLY_EXPLICIT
  • DANGEROUS_CONTENT

কোটলিন

val model = GenerativeModel(
  model = "gemini-1.5-flash-001",
  apiKey = BuildConfig.apikey,
  generationConfig = generationConfig {
    temperature = 0.15f
    topK = 32
    topP = 1f
    maxOutputTokens = 4096
  },
  safetySettings = listOf(
    SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.MEDIUM_AND_ABOVE),
    SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.MEDIUM_AND_ABOVE),
    SafetySetting(HarmCategory.SEXUALLY_EXPLICIT, BlockThreshold.MEDIUM_AND_ABOVE),
    SafetySetting(HarmCategory.DANGEROUS_CONTENT, BlockThreshold.MEDIUM_AND_ABOVE),
  )
)

জাভা

GenerationConfig.Builder configBuilder = new GenerationConfig.Builder();
configBuilder.temperature = 0.15f;
configBuilder.topK = 32;
configBuilder.topP = 1f;
configBuilder.maxOutputTokens = 4096;

ArrayList<SafetySetting> safetySettings = new ArrayList();
safetySettings.add(new SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.MEDIUM_AND_ABOVE));
safetySettings.add(new SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.MEDIUM_AND_ABOVE));
safetySettings.add(new SafetySetting(HarmCategory.SEXUALLY_EXPLICIT, BlockThreshold.MEDIUM_AND_ABOVE));
safetySettings.add(new SafetySetting(HarmCategory.DANGEROUS_CONTENT, BlockThreshold.MEDIUM_AND_ABOVE));

GenerativeModel gm = new GenerativeModel(
    "gemini-1.5-flash-001",
    BuildConfig.apiKey,
    configBuilder.build(),
    safetySettings
);

আপনার অ্যাপে Google AI ক্লায়েন্ট SDK ব্যবহার করুন

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

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

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

কোটলিন

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

জাভা

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

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Content content = new Content.Builder()
      .addText("Write a story about a green robot.")
      .build();
Executor executor = // ...

ListenableFuture<GenerateContentResponse> response = model.generateContent(content);

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() হল একটি suspend ফাংশন, যা বিদ্যমান কোটলিন কোডের সাথে ভালভাবে সংহত করে।

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

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

কোটলিন

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

জাভা

Content content = new Content.Builder()
     .addImage(bitmap)
     .addText("What is the object in this picture?")
     .build();

Executor executor = // ...

ListenableFuture<GenerateContentResponse> response = model.generateContent(content);

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

জাভা

Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText("Hello, I have 2 dogs in my house.");
Content userContent = userContentBuilder.build();

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

Content.Builder userMessageBuilder = new Content.Builder();
userMessageBuilder.setRole("user");
userMessageBuilder.addText("How many paws are in my house?");
Content userMessage = userMessageBuilder.build();

Executor executor = // ...

ListenableFuture<GenerateContentResponse> response = chat.sendMessage(userMessage);

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);

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

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

কোটলিন

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

জাভা

// In Java, the method generateContentStream() returns a Publisher
// from the Reactive Streams library.
// https://www.reactive-streams.org/

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

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);  // Request all messages
 }
});

অ্যান্ড্রয়েড স্টুডিও

আপনাকে শুরু করতে সহায়তা করার জন্য Android স্টুডিও অতিরিক্ত সরঞ্জাম সরবরাহ করে।

  • জেমিনি এপিআই স্টার্টার টেমপ্লেট : এই স্টার্টার টেমপ্লেট আপনাকে সরাসরি অ্যান্ড্রয়েড স্টুডিও থেকে একটি API কী তৈরি করতে সাহায্য করে এবং জেমিনি API ব্যবহার করার জন্য প্রয়োজনীয় অ্যান্ড্রয়েড নির্ভরতা অন্তর্ভুক্ত করে এমন একটি প্রকল্প তৈরি করে।
  • জেনারেটিভ এআই নমুনা : এই নমুনাটি আপনাকে Android স্টুডিওতে Android নমুনা অ্যাপের জন্য Google AI ক্লায়েন্ট SDK আমদানি করতে দেয়।

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