SDK ของไคลเอ็นต์ AI ของ Google ช่วยให้คุณเรียกใช้ Gemini API และใช้กลุ่มโมเดล Gemini ได้โดยตรงจากแอป Android
ระดับที่ไม่มีค่าใช้จ่ายช่วยให้คุณทดลองใช้ได้โดยไม่มีค่าใช้จ่าย ดูรายละเอียดราคาอื่นๆ ได้ในคู่มือการกำหนดราคา
เริ่มต้นใช้งาน
ก่อนที่จะโต้ตอบกับ Gemini API จากแอปโดยตรง คุณจะต้องทําสิ่งต่อไปนี้ก่อน ซึ่งรวมถึงทำความคุ้นเคยกับพรอมต์ รวมถึงสร้างคีย์ API และตั้งค่าแอปให้ใช้ SDK
ทดสอบพรอมต์
เริ่มต้นด้วยการสร้างต้นแบบพรอมต์ใน Google AI Studio
Google AI Studio เป็น IDE สําหรับการออกแบบพรอมต์และการสร้างต้นแบบ ซึ่งช่วยให้คุณอัปโหลดไฟล์เพื่อทดสอบพรอมต์ด้วยข้อความและรูปภาพ รวมถึงบันทึกพรอมต์เพื่อกลับมาดูในภายหลังได้
การสร้างพรอมต์ที่เหมาะสมสำหรับ Use Case ของคุณเป็นศิลปะมากกว่าวิทยาศาสตร์ ซึ่งทำให้การทดสอบมีความสําคัญ ดูข้อมูลเพิ่มเติมเกี่ยวกับการแจ้งได้ในเอกสารประกอบอย่างเป็นทางการเกี่ยวกับ AI ของ Google
ดูข้อมูลเพิ่มเติมเกี่ยวกับความสามารถขั้นสูงของ Google AI Studio ได้ที่คู่มือเริ่มใช้งาน Google AI Studio ฉบับย่อ
สร้างคีย์ API
เมื่อพอใจกับพรอมต์แล้ว ให้คลิกรับคีย์ API เพื่อสร้างคีย์ Gemini API คีย์จะรวมอยู่ในแอปพลิเคชัน ซึ่งใช้ได้กับการทดสอบและการสร้างต้นแบบ แต่ไม่แนะนำให้ใช้กับกรณีการใช้งานจริง
นอกจากนี้ หากต้องการป้องกันไม่ให้มีการคอมมิตคีย์ API ไปยังที่เก็บซอร์สโค้ด ให้ใช้ปลั๊กอิน gradle สำหรับข้อมูลลับ
เพิ่มการพึ่งพา Gradle
เพิ่มการพึ่งพา SDK ไคลเอ็นต์ Google AI ลงในแอป
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
- คีย์ API ที่สร้างขึ้นด้วย Google AI Studio
คุณอาจกำหนดพารามิเตอร์โมเดลและระบุค่าสำหรับ temperature, 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 );
ใช้ SDK ของไคลเอ็นต์ Google AI ในแอป
เมื่อคุณมีคีย์ API และตั้งค่าแอปให้ใช้ 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: เทมเพลตเริ่มต้นนี้จะช่วยคุณสร้างคีย์ API จาก Android Studio โดยตรง และสร้างโปรเจ็กต์ที่มีข้อกำหนดเบื้องต้นของ Android ที่จําเป็นในการใช้ Gemini API
- ตัวอย่าง Generative AI: ตัวอย่างนี้ช่วยให้คุณนําเข้า SDK ไคลเอ็นต์ Google AI สําหรับแอปตัวอย่าง Android ใน Android Studio ได้
ขั้นตอนถัดไป
- ดูตัวอย่างแอป SDK ไคลเอ็นต์ Google AI สําหรับ Android บน GitHub