Google  SDK مشتری AI

Google AI Client SDK به شما امکان می‌دهد با Gemini API تماس بگیرید و از مدل‌های خانواده Gemini مستقیماً از برنامه Android خود استفاده کنید.

یک ردیف رایگان به شما امکان می دهد بدون هزینه آزمایش کنید. برای سایر جزئیات قیمت، راهنمای قیمت گذاری را ببینید.

معماری ادغام هوش مصنوعی گوگل
شکل 1. معماری ادغام هوش مصنوعی گوگل.

شروع کردن

قبل از اینکه مستقیماً از برنامه خود با Gemini API تعامل داشته باشید، ابتدا باید چند کار را انجام دهید، از جمله آشنایی با درخواست و همچنین تولید یک کلید API و تنظیم برنامه خود برای استفاده از SDK.

با دستورات آزمایش کنید

با ایجاد نمونه اولیه درخواست خود در Google AI Studio شروع کنید.

Google AI Studio یک IDE برای طراحی سریع و نمونه سازی است. این به شما امکان می‌دهد فایل‌ها را برای آزمایش اعلان‌ها با متن و عکس آپلود کنید و درخواستی را ذخیره کنید تا بعداً دوباره آن را ببینید.

ایجاد دستور مناسب برای مورد استفاده شما بیشتر هنر است تا علم، که آزمایش را حیاتی می کند. می‌توانید در اسناد رسمی Google AI درباره درخواست اطلاعات بیشتری کسب کنید.

استودیوی هوش مصنوعی گوگل
شکل 2. استودیوی هوش مصنوعی گوگل

برای کسب اطلاعات بیشتر در مورد قابلیت‌های پیشرفته Google AI Studio، به استودیوی هوش مصنوعی Google مراجعه کنید.

کلید API خود را ایجاد کنید

هنگامی که از درخواست خود راضی شدید، روی دریافت کلید API کلیک کنید تا کلید Gemini API شما ایجاد شود. کلید با برنامه شما همراه می شود، که برای آزمایش و نمونه سازی مناسب است اما برای موارد استفاده تولید توصیه نمی شود .

همچنین، برای جلوگیری از متعهد شدن کلید API خود به مخزن کد منبع، از افزونه Secrets gradle استفاده کنید.

وابستگی Gradle را اضافه کنید

وابستگی Google AI Client 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 Studio ایجاد شده است.

شما می توانید به صورت اختیاری پارامترهای مدل را تعریف کنید و مقادیری را برای دما , 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 Client 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 است که به خوبی با کد Kotlin موجود ادغام می شود.

تولید متن از تصاویر و رسانه های دیگر

همچنین می‌توانید متنی را از یک درخواست تولید کنید که شامل متن به اضافه تصاویر یا رسانه‌های دیگر است. هنگام فراخوانی 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 Studio ابزارهای اضافی را برای کمک به شما در شروع کار ارائه می دهد.

  • الگوی شروع Gemini API : این الگوی شروع به شما کمک می‌کند یک کلید API را مستقیماً از Android Studio ایجاد کنید و پروژه‌ای ایجاد کنید که شامل وابستگی‌های لازم اندروید برای استفاده از Gemini API است.
  • نمونه هوش مصنوعی مولد : این نمونه به شما امکان می دهد SDK مشتری هوش مصنوعی Google را برای برنامه نمونه اندروید در Android Studio وارد کنید.

مراحل بعدی