Hướng dẫn này minh hoạ cách truy cập Gemini API ngay từ Ứng dụng Android dùng SDK ứng dụng AI của Google dành cho Android. Bạn có thể dùng ứng dụng khách SDK nếu bạn không muốn làm việc trực tiếp với API REST hoặc mã phía máy chủ (chẳng hạn như Python) để truy cập vào các mô hình Gemini trong ứng dụng Android.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách thực hiện những việc sau:
- Thiết lập dự án, bao gồm cả khoá API
- Tạo văn bản từ dữ liệu nhập chỉ có văn bản
- Tạo văn bản bằng cách nhập văn bản và hình ảnh (đa phương thức)
- Tạo cuộc trò chuyện nhiều lượt (trò chuyện)
- Sử dụng tính năng truyền trực tuyến để tương tác nhanh hơn
Ngoài ra, hướng dẫn này bao gồm các phần về các trường hợp sử dụng nâng cao (như đếm mã thông báo) cũng như các tuỳ chọn cho kiểm soát việc tạo nội dung.
Cân nhắc sử dụng Gemini trên thiết bị
SDK ứng dụng khách dành cho Android được mô tả trong hướng dẫn này cho phép bạn truy cập vào Các mô hình Gemini Pro chạy trên các máy chủ của Google. Đối với các trường hợp sử dụng liên quan đến xử lý dữ liệu nhạy cảm, khả năng sử dụng ngoại tuyến hoặc để tiết kiệm chi phí cho luồng người dùng thường xuyên sử dụng, bạn có thể cân nhắc việc truy cập Gemini Nano chạy trên thiết bị. Để biết thêm thông tin, hãy tham khảo Hướng dẫn (trên thiết bị) về Android.
Điều kiện tiên quyết
Hướng dẫn này giả định rằng bạn đã quen với việc sử dụng Android Studio để phát triển ứng dụng Android.
Để hoàn thành hướng dẫn này, hãy đảm bảo rằng môi trường phát triển và Ứng dụng Android đáp ứng những yêu cầu sau:
- Android Studio (phiên bản mới nhất)
- Ứng dụng Android của bạn phải nhắm đến API cấp 21 trở lên.
Thiết lập dự án
Trước khi gọi Gemini API, bạn cần thiết lập dự án Android của mình bao gồm cả việc thiết lập khoá API, thêm các phần phụ thuộc SDK vào Android dự án và khởi tạo mô hình.
Thiết lập khoá API
Để sử dụng Gemini API, bạn sẽ cần có khoá API. Nếu chưa có tài khoản, tạo một khoá trong Google AI Studio.
Bảo mật khoá API của bạn
Bạn không nên kiểm tra khoá API trong phiên bản của mình
hệ thống kiểm soát. Thay vào đó, bạn nên lưu trữ nó trong tệp local.properties
(nằm trong thư mục gốc của dự án, nhưng bị loại trừ khỏi phiên bản
kiểm soát) và sau đó sử dụng
Bí mật trình bổ trợ Gradle cho Android
để đọc khoá API dưới dạng biến Cấu hình bản dựng.
Kotlin
// Access your API key as a Build Configuration variable
val apiKey = BuildConfig.apiKey
Java
// Access your API key as a Build Configuration variable
String apiKey = BuildConfig.apiKey;
Tất cả các đoạn trích trong hướng dẫn này đều sử dụng phương pháp hay nhất sau đây. Ngoài ra, nếu bạn
muốn xem cách triển khai trình bổ trợ Secrets cho Gradle, bạn có thể xem
ứng dụng mẫu
cho SDK này hoặc sử dụng bản xem trước mới nhất của Android Studio Iguana có
Mẫu Gemini API Starter
(bao gồm tệp local.properties
để giúp bạn bắt đầu).
Thêm phần phụ thuộc SDK vào dự án
Trong tệp cấu hình Gradle mô-đun (cấp ứng dụng) (như
<project>/<app-module>/build.gradle.kts
), hãy thêm phần phụ thuộc cho phần tử SDK AI của Google dành cho Android:Kotlin
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") }
Java
Đối với Java, bạn cần thêm 2 thư viện bổ sung.
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") }
Đồng bộ hoá dự án Android với các tệp Gradle.
Khởi chạy mô hình tạo sinh
Để có thể thực hiện lệnh gọi API, bạn cần khởi chạy mô hình tạo sinh:
Kotlin
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
)
Java
Đối với Java, bạn cũng cần khởi tạo đối tượng 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);
Khi chỉ định một mô hình, hãy lưu ý những điều sau:
Sử dụng một mô hình cụ thể cho trường hợp sử dụng của bạn (ví dụ:
gemini-1.5-flash
dành cho phương thức nhập đa phương thức). Trong hướng dẫn này, hướng dẫn cho từng liệt kê mô hình triển khai được đề xuất cho từng trường hợp sử dụng.
Triển khai các trường hợp sử dụng phổ biến
Bây giờ, dự án của bạn đã được thiết lập, bạn có thể khám phá việc sử dụng Gemini API để triển khai các trường hợp sử dụng khác nhau:
- Tạo văn bản từ dữ liệu nhập chỉ có văn bản
- Tạo văn bản bằng cách nhập văn bản và hình ảnh (đa phương thức)
- Tạo cuộc trò chuyện nhiều lượt (trò chuyện)
- Sử dụng tính năng truyền trực tuyến để tương tác nhanh hơn
Tạo văn bản từ dữ liệu đầu vào chỉ có văn bản
Khi câu lệnh chỉ bao gồm văn bản, hãy sử dụng mô hình Gemini 1.5 hoặc
Mô hình Gemini 1.0 Pro có generateContent
để tạo đầu ra văn bản:
Kotlin
Lưu ý generateContent()
là một hàm tạm ngưng và cần được
được gọi từ phạm vi Coroutine. Nếu bạn chưa hiểu rõ về Coroutine, hãy đọc
Coroutine Kotlin trên 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)
Java
Xin lưu ý rằng generateContent()
trả về ListenableFuture
. Nếu
nếu bạn không quen thuộc với API này, hãy xem tài liệu của Android về
Sử dụng 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);
Tạo văn bản bằng cách nhập văn bản và hình ảnh (đa phương thức)
Gemini cung cấp nhiều mô hình có thể xử lý dữ liệu nhập đa phương thức (Các mô hình Gemini 1.5) cho phép bạn nhập cả văn bản và hình ảnh. Hãy nhớ hãy xem lại các yêu cầu về hình ảnh cho câu lệnh.
Khi câu lệnh nhập bao gồm cả văn bản và hình ảnh, hãy sử dụng mô hình Gemini 1.5 với
generateContent
để tạo đầu ra văn bản:
Kotlin
Lưu ý generateContent()
là một hàm tạm ngưng và cần được
được gọi từ phạm vi Coroutine. Nếu bạn chưa hiểu rõ về Coroutine, hãy đọc
Coroutine Kotlin trên 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)
Java
Xin lưu ý rằng generateContent()
trả về ListenableFuture
. Nếu
nếu bạn không quen thuộc với API này, hãy xem tài liệu của Android về
Sử dụng 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);
Xây dựng cuộc trò chuyện nhiều lượt
Khi sử dụng Gemini, bạn có thể tạo các cuộc trò chuyện dạng tự do ở nhiều chặng. Chiến lược phát hành đĩa đơn
SDK đơn giản hoá quy trình bằng cách quản lý trạng thái của cuộc trò chuyện, vì vậy, không giống như
với generateContent
, bạn không cần lưu trữ nhật ký trò chuyện
chính bạn.
Để tạo một cuộc trò chuyện nhiều lượt (chẳng hạn như trò chuyện), hãy sử dụng mô hình Gemini 1.5 hoặc
Mô hình Gemini 1.0 Pro và bắt đầu cuộc trò chuyện bằng cách gọi startChat()
.
Sau đó, sử dụng sendMessage()
để gửi thông báo cho người dùng mới. Việc này cũng sẽ thêm thông báo
tin nhắn và câu trả lời trong nhật ký trò chuyện.
Có hai lựa chọn cho role
được liên kết với nội dung trong một
cuộc trò chuyện:
user
: vai trò đưa ra lời nhắc. Đây là giá trị mặc định chosendMessage
cuộc gọi.model
: vai trò đưa ra câu trả lời. Vai trò này có thể được dùng khi gọistartChat()
bằnghistory
hiện có.
Kotlin
Lưu ý generateContent()
là một hàm tạm ngưng và cần được
được gọi từ phạm vi Coroutine. Nếu bạn chưa hiểu rõ về Coroutine, hãy đọc
Coroutine Kotlin trên 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?")
Java
Xin lưu ý rằng generateContent()
trả về ListenableFuture
. Nếu
nếu bạn không quen thuộc với API này, hãy xem tài liệu của Android về
Sử dụng 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);
Sử dụng tính năng phát trực tuyến để tương tác nhanh hơn
Theo mặc định, mô hình này trả về một phản hồi sau khi hoàn tất toàn bộ quá trình tạo của chúng tôi. Bạn có thể đạt được các tương tác nhanh hơn bằng cách không phải đợi toàn bộ kết quả và thay vào đó hãy sử dụng luồng để xử lý một phần kết quả.
Ví dụ sau đây trình bày cách triển khai tính năng phát trực tuyến bằng
generateContentStream
để tạo văn bản qua câu lệnh nhập văn bản và hình ảnh.
Kotlin
Lưu ý generateContentStream()
là một hàm tạm ngưng và cần được
được gọi từ phạm vi Coroutine. Nếu bạn chưa hiểu rõ về Coroutine, hãy đọc
Coroutine Kotlin trên 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
}
Java
Các phương thức truyền trực tuyến Java trong SDK này trả về một loại Publisher
từ Luồng phản ứng
thư viện của bạn.
// 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);
}
});
Bạn có thể áp dụng phương pháp tương tự cho các trường hợp sử dụng chỉ nhập văn bản và trò chuyện:
Kotlin
Lưu ý generateContentStream()
là một hàm tạm ngưng và cần được
được gọi từ phạm vi Coroutine. Nếu bạn chưa hiểu rõ về Coroutine, hãy đọc
Coroutine Kotlin trên 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)
}
Java
Các phương thức truyền trực tuyến Java trong SDK này trả về một loại Publisher
từ Luồng phản ứng
thư viện của bạn.
// 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
});
Triển khai các trường hợp sử dụng nâng cao
Các trường hợp sử dụng phổ biến được mô tả trong phần trước của trợ giúp hướng dẫn này bạn cảm thấy thoải mái khi sử dụng Gemini API. Phần này mô tả một số các trường hợp sử dụng có thể được xem là nâng cao hơn.
Gọi hàm
Lệnh gọi hàm giúp bạn dễ dàng nhận kết quả đầu ra dữ liệu có cấu trúc các mô hình tạo sinh. Sau đó, bạn có thể sử dụng những dữ liệu đầu ra này để gọi các API khác và trả về dữ liệu phản hồi phù hợp cho mô hình. Nói cách khác, lệnh gọi hàm giúp bạn kết nối các mô hình tạo sinh với hệ thống bên ngoài để nội dung được tạo bao gồm thông tin chính xác và mới nhất. Tìm hiểu thêm trong hướng dẫn gọi hàm.
Đếm mã
Khi sử dụng các câu lệnh dài, có thể bạn nên đếm mã thông báo trước khi gửi bất cứ mã nào
vào mô hình. Các ví dụ sau đây minh hoạ cách sử dụng countTokens()
cho nhiều trường hợp sử dụng:
Kotlin
Lưu ý countTokens()
là một hàm tạm ngưng và cần được
được gọi từ phạm vi Coroutine. Nếu bạn chưa hiểu rõ về Coroutine, hãy đọc
Coroutine Kotlin trên 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)
Java
Xin lưu ý rằng countTokens()
trả về ListenableFuture
. Nếu
nếu bạn không quen thuộc với API này, hãy xem tài liệu của Android về
Sử dụng 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]));
Các tuỳ chọn kiểm soát việc tạo nội dung
Bạn có thể kiểm soát việc tạo nội dung bằng cách định cấu hình các thông số của mô hình và bằng cách sử dụng cài đặt an toàn.
Định cấu hình tham số của mô hình
Mỗi câu lệnh bạn gửi đến mô hình đều có các giá trị thông số kiểm soát cách mô hình sẽ tạo một phản hồi. Mô hình đó có thể tạo ra các kết quả khác nhau cho các giá trị thông số khác nhau. Tìm hiểu thêm về Thông số mô hình.
Kotlin
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
)
Java
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);
Sử dụng chế độ cài đặt an toàn
Bạn có thể sử dụng chế độ cài đặt an toàn để điều chỉnh khả năng nhận được câu trả lời có thể bị coi là gây hại. Theo mặc định, chế độ cài đặt an toàn sẽ chặn nội dung có mức trung bình và/hoặc có khả năng cao là nội dung không an toàn trên tất cả phương diện. Học tập tìm hiểu thêm về Cài đặt an toàn.
Dưới đây là cách đặt một chế độ cài đặt an toàn:
Kotlin
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)
)
)
Java
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);
Bạn cũng có thể đặt nhiều chế độ cài đặt an toàn:
Kotlin
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)
)
Java
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);
Các bước tiếp theo
Thiết kế câu lệnh là quá trình tạo câu lệnh đáp ứng yêu cầu phản hồi từ các mô hình ngôn ngữ. Viết câu lệnh có cấu trúc hợp lý là điều thiết yếu để đảm bảo các câu trả lời chính xác, có chất lượng cao từ một mô hình ngôn ngữ. Tìm hiểu các phương pháp hay nhất để viết câu lệnh.
Gemini cung cấp một số biến thể mô hình để đáp ứng nhu cầu sử dụng khác nhau trường hợp, chẳng hạn như loại dữ liệu đầu vào và độ phức tạp, các cách triển khai cho cuộc trò chuyện hoặc các tác vụ ngôn ngữ của hộp thoại và giới hạn kích thước. Tìm hiểu về các mô hình Gemini hiện có.
SDK ứng dụng khách dành cho Android được mô tả trong hướng dẫn này cho phép bạn truy cập vào Các mô hình Gemini Pro chạy trên các máy chủ của Google. Đối với các trường hợp sử dụng liên quan đến xử lý dữ liệu nhạy cảm, khả năng sử dụng ngoại tuyến hoặc để tiết kiệm chi phí cho luồng người dùng thường xuyên sử dụng, bạn có thể cân nhắc việc truy cập Gemini Nano chạy trên thiết bị. Để biết thêm thông tin, hãy tham khảo Hướng dẫn (trên thiết bị) về Android.