SDK ứng dụng AI của Google cho phép bạn gọi Gemini API và sử dụng nhóm mô hình Gemini ngay trong ứng dụng Android.
Cấp miễn phí cho phép bạn thử nghiệm mà không mất phí. Để biết thông tin chi tiết khác về giá, hãy xem hướng dẫn về giá.
Bắt đầu
Trước khi tương tác trực tiếp với API Gemini từ ứng dụng, trước tiên, bạn cần làm một số việc, bao gồm làm quen với lời nhắc cũng như tạo khoá API và thiết lập ứng dụng để sử dụng SDK.
Thử nghiệm với lời nhắc
Bắt đầu bằng cách tạo nguyên mẫu câu lệnh trong Google AI Studio.
AI Studio của Google là một IDE để thiết kế câu lệnh và tạo nguyên mẫu. Công cụ này cho phép bạn tải tệp lên để kiểm thử câu lệnh bằng văn bản và hình ảnh, đồng thời lưu câu lệnh để xem lại sau.
Việc tạo câu lệnh phù hợp cho trường hợp sử dụng của bạn mang tính nghệ thuật hơn là khoa học, vì vậy, việc thử nghiệm là rất quan trọng. Bạn có thể tìm hiểu thêm về lời nhắc trong tài liệu chính thức về AI của Google.
Để tìm hiểu thêm về các tính năng nâng cao của Google AI Studio, hãy xem bài viết Bắt đầu nhanh với Google AI Studio.
Tạo khoá API
Khi đã hài lòng với lời nhắc, hãy nhấp vào Lấy khoá API để tạo khoá Gemini API. Khoá sẽ được đóng gói cùng với ứng dụng của bạn. Điều này là bình thường đối với việc thử nghiệm và tạo bản mô hình, nhưng không nên dùng cho các trường hợp sử dụng công khai.
Ngoài ra, để tránh việc khoá API được chuyển vào kho lưu trữ mã nguồn, hãy sử dụng trình bổ trợ Secrets cho Gradle.
Thêm phần phụ thuộc Gradle
Thêm phần phụ thuộc cho SDK ứng dụng AI của Google vào ứng dụng của bạn:
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") }
Tạo một GenerativeModel
Bắt đầu bằng cách tạo bản sao GenerativeModel
bằng cách cung cấp những thông tin sau:
- Tên mô hình:
gemini-1.5-flash
,gemini-1.5-pro
hoặcgemini-1.0-pro
- Khoá API được tạo bằng Google AI Studio.
Bạn có thể tuỳ ý xác định các thông số mô hình và cung cấp giá trị cho nhiệt độ, topK, topP và mã thông báo đầu ra tối đa.
Bạn cũng có thể xác định các tính năng an toàn cho các chủ đề sau:
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 );
Sử dụng SDK ứng dụng Google AI trong ứng dụng của bạn
Giờ đây, khi đã có khoá API và thiết lập ứng dụng để sử dụng SDK, bạn đã sẵn sàng tương tác với Gemini API.
Tạo văn bản
Để tạo câu trả lời dạng văn bản, hãy gọi generateContent()
bằng câu lệnh của bạn.
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);
Xin lưu ý rằng generateContent()
là một hàm suspend
, tích hợp tốt với mã Kotlin hiện có.
Tạo văn bản từ hình ảnh và nội dung nghe nhìn khác
Bạn cũng có thể tạo văn bản từ một câu lệnh bao gồm văn bản cùng với hình ảnh hoặc nội dung nghe nhìn khác. Khi gọi generateContent()
, bạn có thể truyền nội dung nghe nhìn dưới dạng dữ liệu cùng dòng (như trong ví dụ bên dưới).
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);
Cuộc trò chuyện nhiều lượt
Bạn cũng có thể hỗ trợ các cuộc trò chuyện nhiều lượt. Khởi tạo cuộc trò chuyện bằng hàm startChat()
. Bạn có thể cung cấp nhật ký tin nhắn (không bắt buộc). Sau đó, gọi hàm sendMessage()
để gửi tin nhắn trò chuyện.
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);
Truyền trực tuyến phản hồi
Bạn có thể đạt được các lượt tương tác nhanh hơn bằng cách không chờ toàn bộ kết quả từ quá trình tạo mô hình, mà thay vào đó, hãy sử dụng tính năng truyền trực tuyến để xử lý một phần kết quả. Sử dụng generateContentStream()
để truyền trực tuyến phản hồi.
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 cung cấp các công cụ bổ sung để giúp bạn bắt đầu.
- Mẫu khởi động Gemini API: Mẫu khởi động này giúp bạn tạo khoá API ngay trong Android Studio và tạo một dự án bao gồm các phần phụ thuộc Android cần thiết để sử dụng các API Gemini.
- Mẫu AI tạo sinh: Mẫu này cho phép bạn nhập SDK ứng dụng Google AI cho ứng dụng mẫu Android trong Android Studio.
Các bước tiếp theo
- Xem lại ứng dụng mẫu SDK ứng dụng Google AI cho Android trên GitHub.