آموزش: با Gemini API شروع کنید


این آموزش نحوه دسترسی به API Gemini را مستقیماً از برنامه Android خود با استفاده از Google AI Client SDK برای Android نشان می دهد. اگر نمی خواهید مستقیماً با API های REST یا کد سمت سرور (مانند پایتون) برای دسترسی به مدل های جمینی در برنامه Android خود کار کنید ، می توانید از این SDK مشتری استفاده کنید.

در این آموزش ، یاد می گیرید که چگونه موارد زیر را انجام دهید:

علاوه بر این ، این آموزش شامل بخش هایی در مورد موارد استفاده پیشرفته (مانند شمارش نشانه ها ) و همچنین گزینه هایی برای کنترل تولید محتوا است .

در نظر بگیرید که دسترسی به جمینی روی دستگاه را در نظر بگیرید

مشتری SDK برای Android که در این آموزش شرح داده شده است ، به شما امکان می دهد تا به مدل های Gemini Pro که در سرورهای Google اجرا می شوند دسترسی پیدا کنید. برای مواردی که شامل پردازش داده های حساس ، در دسترس بودن آفلاین یا برای صرفه جویی در هزینه برای جریان های کاربر اغلب استفاده شده است ، ممکن است بخواهید دسترسی به نانوهای جمینی را که در حال انجام است ، در نظر بگیرید. برای اطلاعات بیشتر ، به آموزش Android (در دستگاه) مراجعه کنید.

پیش نیازها

این آموزش فرض می کند که شما با استفاده از Android Studio برای توسعه برنامه های Android آشنا هستید.

برای تکمیل این آموزش ، اطمینان حاصل کنید که محیط توسعه و برنامه اندرویدی شما شرایط زیر را برآورده می کند:

  • Android Studio (آخرین نسخه)
  • برنامه Android شما باید API سطح 21 یا بالاتر را هدف قرار دهد.

پروژه خود را تنظیم کنید

قبل از تماس با API Gemini ، باید پروژه Android خود را تنظیم کنید ، که شامل تنظیم کلید API شما ، اضافه کردن وابستگی SDK به پروژه Android شما و اولیه سازی مدل است.

کلید API خود را تنظیم کنید

برای استفاده از API Gemini ، به یک کلید API نیاز دارید. اگر قبلاً یکی از آنها را ندارید ، در استودیوی Google AI یک کلید ایجاد کنید.

یک کلید API دریافت کنید

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

به شدت توصیه می شود که یک کلید API را در سیستم کنترل نسخه خود بررسی نکنید . درعوض ، شما باید آن را در یک فایل local.properties ذخیره کنید. Properties (که در فهرست اصلی پروژه شما قرار دارد ، اما از کنترل نسخه خارج شده است) ، و سپس از افزونه Secrets Gradle برای Android استفاده کنید تا کلید API خود را به عنوان متغیر تنظیمات ساخت بخواند.

کاتلین

// Access your API key as a Build Configuration variable
val apiKey = BuildConfig.apiKey

جاوا

// Access your API key as a Build Configuration variable
String apiKey = BuildConfig.apiKey;

تمام قطعه های موجود در این آموزش از این بهترین روش استفاده می کنند. همچنین ، اگر می خواهید اجرای افزونه Secrets Gradle را ببینید ، می توانید برنامه نمونه را برای این SDK مرور کنید یا از آخرین پیش نمایش استودیوی Android Iguana که دارای یک الگوی استارت API Gemini است استفاده کنید (که شامل پرونده local.properties برای دریافت است. تو شروع کردی).

وابستگی SDK را به پروژه خود اضافه کنید

  1. در پرونده پیکربندی Gradle ماژول (سطح برنامه) (مانند <project>/<app-module>/build.gradle.kts ) ، وابستگی به Google AI SDK را برای Android اضافه کنید:

    کاتلین

    dependencies {
      // ... other androidx dependencies
    
      // add the dependency for the Google AI client SDK for Android
      implementation("com.google.ai.client.generativeai:generativeai:0.9.0")
    }
    

    جاوا

    برای جاوا ، شما باید دو کتابخانه اضافی اضافه کنید.

    dependencies {
        // ... other androidx dependencies
    
        // add the dependency for the Google AI client SDK for Android
        implementation("com.google.ai.client.generativeai:generativeai:0.9.0")
    
        // Required for one-shot operations (to use `ListenableFuture` from Guava Android)
        implementation("com.google.guava:guava:31.0.1-android")
    
        // Required for streaming operations (to use `Publisher` from Reactive Streams)
        implementation("org.reactivestreams:reactive-streams:1.0.4")
    }
    
  2. پروژه اندرویدی خود را با پرونده های Gradle همگام سازی کنید.

مدل تولیدی را اولیه کنید

قبل از اینکه بتوانید هرگونه تماس API را برقرار کنید ، باید مدل تولیدی را اولیه کنید:

کاتلین

val generativeModel = GenerativeModel(
    // The Gemini 1.5 models are versatile and work with most use cases
    modelName = "gemini-1.5-flash",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

جاوا

برای جاوا ، شما همچنین باید شیء GenerativeModelFutures اولیه کنید.

// Use a model that's applicable for your use case
// The Gemini 1.5 models are versatile and work with most use cases
GenerativeModel gm = new GenerativeModel(/* modelName */ "gemini-1.5-flash",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
    /* apiKey */ BuildConfig.apiKey);

// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

هنگام مشخص کردن یک مدل ، موارد زیر را یادداشت کنید:

  • از مدلی خاص برای مورد استفاده شما استفاده کنید (به عنوان مثال ، gemini-1.5-flash برای ورودی چندمودال است). در این راهنما ، دستورالعمل های مربوط به هر لیست اجرای مدل توصیه شده برای هر مورد استفاده.

موارد استفاده مشترک را اجرا کنید

اکنون که پروژه شما تنظیم شده است ، می توانید با استفاده از API Gemini برای اجرای موارد مختلف استفاده کنید:

متن را از ورودی فقط متن ایجاد کنید

هنگامی که ورودی سریع فقط متن را شامل می شود ، از یک مدل Gemini 1.5 یا مدل Gemini 1.0 Pro با generateContent برای تولید خروجی متن استفاده کنید:

کاتلین

توجه داشته باشید که generateContent() یک عملکرد معلق است و باید از یک محدوده Coroutine فراخوانی شود. اگر با Coroutines ناآشنا هستید ، Kotlin Coroutines را در Android بخوانید.

val generativeModel = GenerativeModel(
    // The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
    modelName = "gemini-1.5-flash",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)

جاوا

توجه داشته باشید که generateContent() یک ListenableFuture برمی گرداند. اگر با این API ناآشنا هستید ، به اسناد Android در مورد استفاده از یک ListenableFuture مراجعه کنید.

// The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
GenerativeModel gm = new GenerativeModel(/* modelName */ "gemini-1.5-flash",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
    /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Content content = new Content.Builder()
    .addText("Write a story about a magic backpack.")
    .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();
        System.out.println(resultText);
    }

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

ایجاد متن از ورودی متن و تصویر (مولتی مدال)

Gemini مدلهای مختلفی را ارائه می دهد که می توانند ورودی چندمودال (مدل های Gemini 1.5) را کنترل کنند تا بتوانید هم متن و هم تصاویر را وارد کنید. حتماً مورد نیاز تصویر را برای ارسال ها بررسی کنید.

هنگامی که ورودی سریع شامل متن و تصویر است ، از یک مدل Gemini 1.5 با generateContent برای تولید خروجی متن استفاده کنید:

کاتلین

توجه داشته باشید که generateContent() یک عملکرد معلق است و باید از یک محدوده Coroutine فراخوانی شود. اگر با Coroutines ناآشنا هستید ، Kotlin Coroutines را در Android بخوانید.

val generativeModel = GenerativeModel(
    // The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
    modelName = "gemini-1.5-flash",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

val image1: Bitmap = // ...
val image2: Bitmap = // ...

val inputContent = content {
    image(image1)
    image(image2)
    text("What's different between these pictures?")
}

val response = generativeModel.generateContent(inputContent)
print(response.text)

جاوا

توجه داشته باشید که generateContent() یک ListenableFuture برمی گرداند. اگر با این API ناآشنا هستید ، به اسناد Android در مورد استفاده از یک ListenableFuture مراجعه کنید.

// The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
GenerativeModel gm = new GenerativeModel(/* modelName */ "gemini-1.5-flash",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
    /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Bitmap image1 = // ...
Bitmap image2 = // ...

Content content = new Content.Builder()
    .addText("What's different between these pictures?")
    .addImage(image1)
    .addImage(image2)
    .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();
        System.out.println(resultText);
    }

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

ساخت مکالمات چند چرخش (گپ)

با استفاده از جمینی ، می توانید مکالمات Freeform را در چندین چرخش ایجاد کنید. SDK با مدیریت وضعیت گفتگو ، این روند را ساده می کند ، بنابراین بر خلاف generateContent ، لازم نیست خودتان تاریخ گفتگو را ذخیره کنید.

برای ایجاد یک مکالمه چند چرخش (مانند گپ) ، از یک مدل Gemini 1.5 یا مدل Gemini 1.0 Pro استفاده کنید و با فراخوانی startChat() چت را آغاز کنید. سپس از sendMessage() برای ارسال پیام کاربر جدید استفاده کنید ، که این پیام و پاسخ به تاریخچه گپ را نیز ضمیمه می کند.

دو گزینه ممکن برای role مرتبط با محتوا در یک مکالمه وجود دارد:

  • user : نقشی که ارائه می دهد. این مقدار پیش فرض تماس های sendMessage است.

  • model : نقشی که پاسخ ها را فراهم می کند. این نقش را می توان هنگام فراخوانی startChat() با history موجود استفاده کرد.

کاتلین

توجه داشته باشید که generateContent() یک عملکرد معلق است و باید از یک محدوده Coroutine فراخوانی شود. اگر با Coroutines ناآشنا هستید ، Kotlin Coroutines را در Android بخوانید.

val generativeModel = GenerativeModel(
    // The Gemini 1.5 models are versatile and work with multi-turn conversations (like chat)
    modelName = "gemini-1.5-flash",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

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

chat.sendMessage("How many paws are in my house?")

جاوا

توجه داشته باشید که generateContent() یک ListenableFuture برمی گرداند. اگر با این API ناآشنا هستید ، به اسناد Android در مورد استفاده از یک ListenableFuture مراجعه کنید.

// The Gemini 1.5 models are versatile and work with multi-turn conversations (like chat)
GenerativeModel gm = new GenerativeModel(/* modelName */ "gemini-1.5-flash",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
    /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// (optional) Create previous chat history for context
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 userMessageBuilder = new Content.Builder();
userMessageBuilder.setRole("user");
userMessageBuilder.addText("How many paws are in my house?");
Content userMessage = userMessageBuilder.build();

Executor executor = // ...

// Send the message
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(userMessage);

Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
    }

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

برای تعامل سریعتر از جریان استفاده کنید

به طور پیش فرض ، مدل پس از اتمام کل فرآیند تولید ، پاسخی را برمی گرداند. شما می توانید با انتظار برای کل نتیجه ، به تعامل سریعتر برسید و در عوض از جریان برای رسیدگی به نتایج جزئی استفاده کنید.

مثال زیر نحوه اجرای جریان با generateContentStream را برای تولید متن از یک ارسال متن و تصویر نشان می دهد.

کاتلین

توجه داشته باشید که generateContentStream() یک عملکرد معلق است و باید از دامنه Coroutine فراخوانی شود. اگر با Coroutines ناآشنا هستید ، Kotlin Coroutines را در Android بخوانید.

val generativeModel = GenerativeModel(
    // The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
    modelName = "gemini-1.5-flash",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

val image1: Bitmap = // ...
val image2: Bitmap = // ...

val inputContent = content {
    image(image1)
    image(image2)
    text("What's the difference between these pictures?")
}

var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
    print(chunk.text)
    fullResponse += chunk.text
}

جاوا

روش های جریان جاوا در این SDK یک نوع Publisher را از کتابخانه جریان واکنش پذیر برمی گرداند.

// The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
GenerativeModel gm = new GenerativeModel(/* modelName */ "gemini-1.5-flash",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
    /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Bitmap image1 = // ...
Bitmap image2 = // ...

Content content = new Content.Builder()
    .addText("What's different between these pictures?")
    .addImage(image1)
    .addImage(image2)
    .build();

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() {
        System.out.println(outputContent);
    }

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

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

شما می توانید از یک رویکرد مشابه برای موارد ورودی فقط متن و موارد استفاده از چت استفاده کنید:

کاتلین

توجه داشته باشید که generateContentStream() یک عملکرد معلق است و باید از دامنه Coroutine فراخوانی شود. اگر با Coroutines ناآشنا هستید ، Kotlin Coroutines را در Android بخوانید.

// Use streaming with text-only input
generativeModel.generateContentStream(inputContent).collect { chunk ->
    print(chunk.text)
}
// Use streaming with multi-turn conversations (like chat)
val chat = generativeModel.startChat()
chat.sendMessageStream(inputContent).collect { chunk ->
    print(chunk.text)
}

جاوا

روش های جریان جاوا در این SDK یک نوع Publisher را از کتابخانه جریان واکنش پذیر برمی گرداند.

// Use streaming with text-only input
Publisher<GenerateContentResponse> streamingResponse =
    model.generateContentStream(inputContent);

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() {
        System.out.println(outputContent);
    }

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

    // ... other methods omitted for brevity
});
// Use streaming with multi-turn conversations (like chat)
ChatFutures chat = model.startChat(history);

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

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() {
        System.out.println(outputContent);
    }

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

    // ... other methods omitted for brevity
});

موارد استفاده پیشرفته را اجرا کنید

موارد استفاده متداول که در بخش قبلی این آموزش شرح داده شده است به شما کمک می کند تا با استفاده از API Gemini راحت شوید. در این بخش مواردی از مواردی استفاده شده است که ممکن است پیشرفته تر تلقی شوند.

فراخوانی تابع

تماس با عملکرد ، دریافت خروجی داده های ساختاری از مدل های تولیدی را برای شما آسان تر می کند. سپس می توانید از این خروجی ها برای تماس با API های دیگر استفاده کرده و داده های پاسخ مربوطه را به مدل برگردانید. به عبارت دیگر ، تماس با عملکرد به شما کمک می کند تا مدل های تولیدی را به سیستم های خارجی متصل کنید تا محتوای تولید شده شامل به روزترین و دقیق ترین اطلاعات باشد. در آموزش فراخوانی عملکرد بیشتر بیاموزید.

توکن ها را بشمارید

هنگام استفاده از اعلان های طولانی ، ممکن است قبل از ارسال هرگونه محتوا به مدل ، توکن ها را بشمارید. مثالهای زیر نحوه استفاده از countTokens() برای موارد مختلف استفاده نشان می دهد:

کاتلین

توجه داشته باشید که countTokens() یک عملکرد معلق است و باید از یک محدوده Coroutine فراخوانی شود. اگر با Coroutines ناآشنا هستید ، Kotlin Coroutines را در Android بخوانید.

// For text-only input
val (totalTokens) = generativeModel.countTokens("Write a story about a magic backpack.")

// For text-and-image input (multi-modal)
val multiModalContent = content {
    image(image1)
    image(image2)
    text("What's the difference between these pictures?")
}

val (totalTokens) = generativeModel.countTokens(multiModalContent)

// For multi-turn conversations (like chat)
val history = chat.history
val messageContent = content { text("This is the message I intend to send")}
val (totalTokens) = generativeModel.countTokens(*history.toTypedArray(), messageContent)

جاوا

توجه داشته باشید که countTokens() یک ListenableFuture برمی گرداند. اگر با این API ناآشنا هستید ، به اسناد Android در مورد استفاده از یک ListenableFuture مراجعه کنید.

Content text = new Content.Builder()
    .addText("Write a story about a magic backpack.")
    .build();

Executor executor = // ...

// For text-only input
ListenableFuture<CountTokensResponse> countTokensResponse = model.countTokens(text);

Futures.addCallback(countTokensResponse, new FutureCallback<CountTokensResponse>() {
    @Override
    public void onSuccess(CountTokensResponse result) {
        int totalTokens = result.getTotalTokens();
        System.out.println("TotalTokens = " + totalTokens);
    }

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

// For text-and-image input
Bitmap image1 = // ...
Bitmap image2 = // ...

Content multiModalContent = new Content.Builder()
    .addImage(image1)
    .addImage(image2)
    .addText("What's different between these pictures?")
    .build();

ListenableFuture<CountTokensResponse> countTokensResponse = model.countTokens(multiModalContent);

// For multi-turn conversations (like chat)
List<Content> history = chat.getChat().getHistory();

Content messageContent = new Content.Builder()
    .addText("This is the message I intend to send")
    .build();

Collections.addAll(history, messageContent);

ListenableFuture<CountTokensResponse> countTokensResponse = model.countTokens(history.toArray(new Content[0]));

گزینه هایی برای کنترل تولید محتوا

می توانید با پیکربندی پارامترهای مدل و با استفاده از تنظیمات ایمنی ، تولید محتوا را کنترل کنید.

پارامترهای مدل را پیکربندی کنید

هر سریع که به مدل ارسال می کنید شامل مقادیر پارامتری است که نحوه تولید مدل پاسخ را کنترل می کند. این مدل می تواند برای مقادیر پارامتر مختلف نتایج مختلفی ایجاد کند. در مورد پارامترهای مدل بیشتر بدانید.

کاتلین

val config = generationConfig {
    temperature = 0.9f
    topK = 16
    topP = 0.1f
    maxOutputTokens = 200
    stopSequences = listOf("red")
}

val generativeModel = GenerativeModel(
    // The Gemini 1.5 models are versatile and work with most use cases
    modelName = "gemini-1.5-flash",
    apiKey = BuildConfig.apiKey,
    generationConfig = config
)

جاوا

GenerationConfig.Builder configBuilder = new GenerationConfig.Builder();
configBuilder.temperature = 0.9f;
configBuilder.topK = 16;
configBuilder.topP = 0.1f;
configBuilder.maxOutputTokens = 200;
configBuilder.stopSequences = Arrays.asList("red");

GenerationConfig generationConfig = configBuilder.build();

// The Gemini 1.5 models are versatile and work with most use cases
GenerativeModel gm = new GenerativeModel(
    "gemini-1.5-flash",
    BuildConfig.apiKey,
    generationConfig
);

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

از تنظیمات ایمنی استفاده کنید

شما می توانید از تنظیمات ایمنی برای تنظیم احتمال دریافت پاسخ هایی که ممکن است مضر تلقی شود ، استفاده کنید. به طور پیش فرض ، تنظیمات ایمنی محتوا را با احتمال متوسط ​​و/یا زیاد از عدم امنیت محتوای در همه ابعاد مسدود می کند. در مورد تنظیمات ایمنی بیشتر بدانید.

در اینجا نحوه تنظیم یک تنظیم ایمنی آورده شده است:

کاتلین

val generativeModel = GenerativeModel(
    // The Gemini 1.5 models are versatile and work with most use cases
    modelName = "gemini-1.5-flash",
    apiKey = BuildConfig.apiKey,
    safetySettings = listOf(
        SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.ONLY_HIGH)
    )
)

جاوا

SafetySetting harassmentSafety = new SafetySetting(HarmCategory.HARASSMENT,
    BlockThreshold.ONLY_HIGH);

// The Gemini 1.5 models are versatile and work with most use cases
GenerativeModel gm = new GenerativeModel(
    "gemini-1.5-flash",
    BuildConfig.apiKey,
    null, // generation config is optional
    Collections.singletonList(harassmentSafety)
);

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

همچنین می توانید بیش از یک تنظیم ایمنی تنظیم کنید:

کاتلین

val harassmentSafety = SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.ONLY_HIGH)

val hateSpeechSafety = SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.MEDIUM_AND_ABOVE)

val generativeModel = GenerativeModel(
    // The Gemini 1.5 models are versatile and work with most use cases
    modelName = "gemini-1.5-flash",
    apiKey = BuildConfig.apiKey,
    safetySettings = listOf(harassmentSafety, hateSpeechSafety)
)

جاوا

SafetySetting harassmentSafety = new SafetySetting(HarmCategory.HARASSMENT,
    BlockThreshold.ONLY_HIGH);

SafetySetting hateSpeechSafety = new SafetySetting(HarmCategory.HATE_SPEECH,
    BlockThreshold.MEDIUM_AND_ABOVE);

// The Gemini 1.5 models are versatile and work with most use cases
GenerativeModel gm = new GenerativeModel(
    "gemini-1.5-flash",
    BuildConfig.apiKey,
    null, // generation config is optional
    Arrays.asList(harassmentSafety, hateSpeechSafety)
);

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

بعدش چی

  • طراحی سریع فرایند ایجاد مطالب است که پاسخ مطلوب را از مدل های زبان استخراج می کند. نوشتن مطالب ساخت یافته به خوبی بخش مهمی در اطمینان از پاسخ های دقیق و با کیفیت بالا از یک مدل زبان است. در مورد بهترین شیوه ها برای نوشتن سریع بیاموزید.

  • Gemini برای پاسخگویی به نیازهای موارد مختلف استفاده ، مانند انواع ورودی و پیچیدگی ، پیاده سازی برای گپ یا سایر کارهای زبان گفتگو و محدودیت های اندازه ، چندین مدل مدل ارائه می دهد. در مورد مدل های جمینی موجود بیاموزید.

  • مشتری SDK برای Android که در این آموزش شرح داده شده است ، به شما امکان می دهد تا به مدل های Gemini Pro که در سرورهای Google اجرا می شوند دسترسی پیدا کنید. برای مواردی که شامل پردازش داده های حساس ، در دسترس بودن آفلاین یا برای صرفه جویی در هزینه برای جریان های کاربر اغلب استفاده شده است ، ممکن است بخواهید دسترسی به نانوهای جمینی را که در حال انجام است ، در نظر بگیرید. برای اطلاعات بیشتر ، به آموزش Android (در دستگاه) مراجعه کنید.