Google AI क्लाइंट SDK

Google के एआई क्लाइंट एसडीके की मदद से, Gemini API को कॉल किया जा सकता है. साथ ही, सीधे अपने Android ऐप्लिकेशन से Gemini के मॉडल फ़ैमिली का इस्तेमाल किया जा सकता है.

बिना किसी शुल्क के मिलने वाले टीयर की मदद से, बिना किसी शुल्क के एक्सपेरिमेंट किए जा सकते हैं. कीमत से जुड़ी अन्य जानकारी के लिए, कीमत की गाइड देखें.

Google के एआई इंटिग्रेशन का आर्किटेक्चर
पहला डायग्राम. Google के एआई इंटिग्रेशन का आर्किटेक्चर.

शुरू करना

अपने ऐप्लिकेशन से सीधे Gemini API के साथ इंटरैक्ट करने से पहले, आपको कुछ काम करने होंगे. जैसे, प्रॉम्प्ट के बारे में जानना, एपीआई पासकोड जनरेट करना, और SDK टूल का इस्तेमाल करने के लिए अपने ऐप्लिकेशन को सेट अप करना.

प्रॉम्प्ट आज़माना

Google AI Studio में अपने प्रॉम्प्ट का प्रोटोटाइप बनाकर शुरुआत करें.

Google AI Studio, प्रॉम्प्ट डिज़ाइन और प्रोटोटाइप बनाने के लिए एक आईडीई है. इसकी मदद से, टेक्स्ट और इमेज के साथ प्रॉम्प्ट की जांच करने के लिए फ़ाइलें अपलोड की जा सकती हैं. साथ ही, किसी प्रॉम्प्ट को सेव करके बाद में उस पर फिर से जाया जा सकता है.

अपने इस्तेमाल के उदाहरण के लिए सही प्रॉम्प्ट बनाना, विज्ञान से ज़्यादा कला है. इसलिए, प्रयोग करना ज़रूरी है. Google के एआई से जुड़े आधिकारिक दस्तावेज़ में, अनुरोध करने के बारे में ज़्यादा जानें.

Google AI Studio
दूसरी इमेज. Google AI Studio

Google AI Studio की बेहतर सुविधाओं के बारे में ज़्यादा जानने के लिए, Google AI Studio के बारे में कम शब्दों में जानकारी देखें.

अपना एपीआई पासकोड जनरेट करना

प्रॉम्प्ट से सहमत होने के बाद, अपना Gemini एपीआई पासकोड जनरेट करने के लिए, एपीआई पासकोड पाएं पर क्लिक करें. पासकोड को आपके ऐप्लिकेशन के साथ बंडल किया जाएगा. इसे एक्सपेरिमेंट और प्रोटोटाइप बनाने के लिए इस्तेमाल किया जा सकता है. हालांकि, इसे प्रोडक्शन ट्रैक के लिए इस्तेमाल करने का सुझाव नहीं दिया जाता.

साथ ही, अपने एपीआई पासकोड को सोर्स कोड रिपॉज़िटरी में कमिट होने से रोकने के लिए, Secrets Gradle प्लग इन का इस्तेमाल करें.

Gradle डिपेंडेंसी जोड़ना

अपने ऐप्लिकेशन में Google AI क्लाइंट SDK टूल की डिपेंडेंसी जोड़ें:

Kotlin

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

Java

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
  • Google AI Studio की मदद से जनरेट किया गया आपका एपीआई पासकोड.

आपके पास मॉडल पैरामीटर तय करने का विकल्प होता है. साथ ही, तापमान, topK, topP, और ज़्यादा से ज़्यादा आउटपुट टोकन के लिए वैल्यू दी जा सकती हैं.

इन विषयों के लिए भी सुरक्षा से जुड़ी सुविधाएं तय की जा सकती हैं:

  • HARASSMENT
  • HATE_SPEECH
  • SEXUALLY_EXPLICIT
  • DANGEROUS_CONTENT

Kotlin

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

Java

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 के एआई क्लाइंट SDK टूल का इस्तेमाल करना

अब आपके पास एपीआई पासकोड है और आपने एसडीके का इस्तेमाल करने के लिए अपना ऐप्लिकेशन सेट अप कर लिया है. अब आपके पास Gemini API के साथ इंटरैक्ट करने का विकल्प है.

टेक्स्ट जनरेट करना

टेक्स्ट जवाब जनरेट करने के लिए, अपने प्रॉम्प्ट के साथ generateContent() को कॉल करें.

Kotlin

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

Java

// 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 फ़ंक्शन है, जो मौजूदा Kotlin कोड के साथ अच्छी तरह से काम करता है.

इमेज और दूसरे मीडिया से टेक्स्ट जनरेट करना

ऐसे प्रॉम्प्ट से भी टेक्स्ट जनरेट किया जा सकता है जिसमें टेक्स्ट के साथ-साथ इमेज या अन्य मीडिया भी शामिल हो. generateContent() को कॉल करते समय, मीडिया को इनलाइन डेटा के तौर पर पास किया जा सकता है (जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है).

Kotlin

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

Java

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() फ़ंक्शन को कॉल करें.

Kotlin

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

Java

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() का इस्तेमाल करें.

Kotlin

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

Java

// 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 Studio

Android Studio में आपको शुरुआत करने में मदद करने के लिए, अन्य टूल भी मिलते हैं.

  • Gemini API का स्टार्टर टेंप्लेट: इस स्टार्टर टेंप्लेट की मदद से, सीधे Android Studio से एपीआई पासकोड बनाया जा सकता है. साथ ही, यह एक ऐसा प्रोजेक्ट जनरेट करता है जिसमें Gemini API का इस्तेमाल करने के लिए ज़रूरी Android डिपेंडेंसी शामिल होती हैं.
  • जनरेटिव एआई का सैंपल: इस सैंपल की मदद से, Android Studio में Android सैंपल ऐप्लिकेशन के लिए, Google के एआई क्लाइंट SDK टूल को इंपोर्ट किया जा सकता है.

अगले चरण