เหตุผลที่ควรย้ายข้อมูลไปใช้ Firebase AI Logic SDK
คุณอาจเคยลองใช้ชุด SDK ไคลเอ็นต์บนอุปกรณ์เคลื่อนที่หรือเว็บชุดอื่นที่ ให้สิทธิ์เข้าถึง Gemini Developer API
SDK ของไคลเอ็นต์เหล่านั้นไม่ได้ผสานรวมเข้ากับระบบนิเวศ Firebase ที่แข็งแกร่งซึ่ง มีบริการที่สำคัญสำหรับแอปบนอุปกรณ์เคลื่อนที่และเว็บ ตอนนี้เราได้เลิกใช้งานแล้วเพื่อหันมาใช้ Firebase AI Logic Client SDK ซึ่งจะช่วยให้คุณเข้าถึง Gemini Developer API ได้
ฟีเจอร์ด้านความปลอดภัยสำหรับแอปบนอุปกรณ์เคลื่อนที่และเว็บแอป
สำหรับแอปบนอุปกรณ์เคลื่อนที่และเว็บแอป ความปลอดภัยเป็นสิ่งสำคัญและต้องพิจารณาเป็นพิเศษ เนื่องจากโค้ดของคุณ ซึ่งรวมถึงการเรียกใช้ Gemini API จะทำงานในสภาพแวดล้อมที่ไม่มีการป้องกัน คุณใช้ Firebase App Check เพื่อ ป้องกัน API จากการละเมิดโดยไคลเอ็นต์ที่ไม่ได้รับอนุญาตได้
เมื่อคุณ ใช้ Firebase App Check กับ Firebase AI Logic คุณจะไม่ต้องเพิ่มคีย์ API ของ Gemini สำหรับ Gemini Developer API ลงในโค้ดเบสของแอปบนอุปกรณ์เคลื่อนที่หรือเว็บแอปโดยตรง แต่Geminiคีย์ API จะยังคงอยู่ในเซิร์ฟเวอร์โดยไม่แสดงต่อผู้ไม่ประสงค์ดี
ระบบนิเวศที่สร้างขึ้นสำหรับแอปบนอุปกรณ์เคลื่อนที่และเว็บแอป
Firebase คือแพลตฟอร์มของ Google สำหรับการพัฒนาแอปบนอุปกรณ์เคลื่อนที่และเว็บแอป การใช้ Firebase AI Logic หมายความว่าแอปของคุณอยู่ในระบบนิเวศที่มุ่งเน้น ความต้องการของแอปและนักพัฒนาแอปแบบฟูลสแต็ก เช่น
ตั้งค่าการกำหนดค่ารันไทม์แบบไดนามิกหรือสลับค่าในแอป (เช่น ชื่อและเวอร์ชันของโมเดล) โดยไม่ต้องเผยแพร่แอปเวอร์ชันใหม่โดยใช้ Firebase Remote Config
ใช้ Cloud Storage for Firebase เพื่อรวมไฟล์ขนาดใหญ่ในคำขอแบบมัลติโมดอล (หากใช้ Vertex AI Gemini API) Cloud Storage SDK ของไคลเอ็นต์จะช่วยคุณจัดการการอัปโหลดและดาวน์โหลดไฟล์ (แม้ใน สภาพเครือข่ายที่ไม่ดี) และเพิ่มความปลอดภัยให้กับข้อมูลของผู้ใช้ปลายทาง ดูข้อมูลเพิ่มเติมได้ใน คู่มือโซลูชันเกี่ยวกับการใช้ Cloud Storage for Firebase
จัดการข้อมูลที่มีโครงสร้างโดยใช้ SDK ฐานข้อมูลที่สร้างขึ้นสำหรับแอปบนอุปกรณ์เคลื่อนที่และเว็บแอป (เช่น Cloud Firestore)
ย้ายข้อมูลไปยัง Firebase AI Logic SDK
ภาพรวมของขั้นตอนการย้ายข้อมูลไปยัง SDK ของ Firebase AI Logic
ขั้นตอนที่ 1: ตั้งค่าโปรเจ็กต์ Firebase ใหม่หรือที่มีอยู่ และเชื่อมต่อแอปกับ Firebase
ขั้นตอนที่ 2: เพิ่ม SDK ของ Firebase AI Logic ลงในแอป
ขั้นตอนที่ 3: อัปเดตการนำเข้าและการเริ่มต้นในแอป
ขั้นตอนที่ 4: อัปเดตโค้ดตามฟีเจอร์ที่คุณใช้
ขั้นตอนที่ 1: ตั้งค่าโปรเจ็กต์ Firebase และเชื่อมต่อแอป
ลงชื่อเข้าใช้คอนโซล Firebase แล้วเลือกโปรเจ็กต์ Firebase
ในFirebase Console ให้ไปที่หน้า Firebase AI Logic
คลิกเริ่มต้นใช้งานเพื่อเปิดเวิร์กโฟลว์แบบมีคำแนะนำที่จะช่วยคุณตั้งค่า API ที่จำเป็น และทรัพยากรสำหรับโปรเจ็กต์
เลือก Gemini Developer API คุณตั้งค่าและใช้ ผู้ให้บริการ API รายอื่นได้ทุกเมื่อในภายหลัง หากต้องการ
คอนโซลจะเปิดใช้ API ที่จำเป็นและสร้างGeminiคีย์ API ใหม่เฉพาะในโปรเจ็กต์
อย่าเพิ่มคีย์ API Gemini ใหม่นี้ลงในโค้ดเบสของแอป ดูข้อมูลเพิ่มเติมหากได้รับแจ้งในเวิร์กโฟลว์ของคอนโซล ให้ทำตามวิธีการบนหน้าจอเพื่อ ลงทะเบียนแอปและเชื่อมต่อกับ Firebase
อ่านต่อในคู่มือการย้ายข้อมูลนี้เพื่ออัปเดตไลบรารีและการเริ่มต้นในแอป
ขั้นตอนที่ 2: เพิ่ม SDK ของ Firebase AI Logic ลงในแอป
เมื่อตั้งค่าโปรเจ็กต์ Firebase และเชื่อมต่อแอปกับ Firebase แล้ว (ดูขั้นตอนก่อนหน้า) ตอนนี้คุณก็เพิ่ม Firebase AI Logic SDK ลงในแอปได้แล้ว
Swift
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
Firebase AI Logic ไลบรารีให้สิทธิ์เข้าถึง API สำหรับการโต้ตอบกับโมเดล Gemini และ Imagen ไลบรารีนี้รวมอยู่
ใน Firebase SDK สำหรับแพลตฟอร์ม Apple (firebase-ios-sdk
)
หากใช้ Firebase อยู่แล้ว โปรดตรวจสอบว่าแพ็กเกจ Firebase เป็นเวอร์ชัน 11.13.0 ขึ้นไป
เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ File > Add Package Dependencies
เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK ของแพลตฟอร์ม Apple ของ Firebase ดังนี้
https://github.com/firebase/firebase-ios-sdk
เลือก SDK เวอร์ชันล่าสุด
เลือก
FirebaseAI
คลัง
เมื่อเสร็จแล้ว Xcode จะเริ่มจับคู่ข้อมูลและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ
Kotlin
Firebase AI Logic SDK สำหรับ Android (firebase-ai
) ช่วยให้เข้าถึง API เพื่อโต้ตอบกับโมเดล Gemini และ Imagen ได้
ในไฟล์ Gradle ของโมดูล (ระดับแอป)
(เช่น <project>/<app-module>/build.gradle.kts
)
ให้เพิ่มทรัพยากร Dependency สำหรับคลัง Firebase AI Logic สำหรับ Android
เราขอแนะนำให้ใช้
Firebase Android BoM
เพื่อควบคุมการควบคุมเวอร์ชันของไลบรารี
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.15.0")) // Add the dependency for the Firebase AI Logic library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") }
การใช้ Firebase Android BoM จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้อยู่เสมอ
Java
Firebase AI Logic SDK สำหรับ Android (firebase-ai
) ช่วยให้เข้าถึง API เพื่อโต้ตอบกับโมเดล Gemini และ Imagen ได้
ในไฟล์ Gradle ของโมดูล (ระดับแอป)
(เช่น <project>/<app-module>/build.gradle.kts
)
ให้เพิ่มทรัพยากร Dependency สำหรับคลัง Firebase AI Logic สำหรับ Android
เราขอแนะนำให้ใช้
Firebase Android BoM
เพื่อควบคุมการควบคุมเวอร์ชันของไลบรารี
สำหรับ Java คุณต้องเพิ่มไลบรารีอีก 2 รายการ
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.15.0")) // Add the dependency for the Firebase AI Logic library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") // 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") }
การใช้ Firebase Android BoM จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้อยู่เสมอ
Web
Firebase AI Logic ไลบรารีให้สิทธิ์เข้าถึง API สำหรับการโต้ตอบกับโมเดล Gemini และ Imagen ไลบรารีนี้รวมอยู่ ใน Firebase JavaScript SDK สำหรับเว็บ
ติดตั้ง Firebase JS SDK สำหรับเว็บโดยใช้ npm ดังนี้
npm install firebase
เริ่มต้น Firebase ในแอป
import { initializeApp } from "firebase/app"; // TODO(developer) Replace the following with your app's Firebase configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize FirebaseApp const firebaseApp = initializeApp(firebaseConfig);
Dart
ปลั๊กอิน Firebase AI Logic สำหรับ Flutter (firebase_ai
) ให้สิทธิ์เข้าถึง API สำหรับการโต้ตอบกับโมเดล Gemini และ Imagen
จากไดเรกทอรีโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อ ติดตั้งปลั๊กอินหลักและปลั๊กอิน Firebase AI Logic
flutter pub add firebase_core && flutter pub add firebase_ai
ในไฟล์
lib/main.dart
ให้นำเข้าปลั๊กอินหลักของ Firebase, ปลั๊กอิน Firebase AI Logic และไฟล์กำหนดค่าที่คุณสร้าง ไว้ก่อนหน้านี้import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_ai/firebase_ai.dart'; import 'firebase_options.dart';
นอกจากนี้ ในไฟล์
lib/main.dart
ให้เริ่มต้น Firebase โดยใช้ออบเจ็กต์DefaultFirebaseOptions
ที่ส่งออกจากไฟล์การกำหนดค่าawait Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, );
สร้างแอปพลิเคชัน Flutter อีกครั้ง
flutter run
Unity
SDK ของไคลเอ็นต์ Google AI ไม่รองรับ Unity
นำ SDK เก่าออกจากแอป
หลังจากย้ายข้อมูลแอปเสร็จแล้ว (ดูส่วนที่เหลือในคำแนะนำนี้) อย่าลืมลบไลบรารีเก่า
Swift
นำคลังเก่าออก
เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่แผงการอ้างอิงแพ็กเกจ
เลือกแพ็กเกจ
generative-ai-swift
จากรายการแพ็กเกจ การอ้างอิงคลิกปุ่ม
-
จากด้านล่างของรายการ แล้วคลิกนำออก เพื่อยืนยัน
Kotlin
dependencies {
implementation("com.google.ai.client.generativeai:generativeai:VERSION")
}
Java
dependencies {
implementation("com.google.ai.client.generativeai:generativeai:VERSION")
}
Web
// BEFORE
import { initializeApp } from "firebase/app";
import { GoogleGenerativeAI } from "@google/generative-ai";
Dart
ลบแพ็กเกจเก่า
flutter pub remove google_generative_ai
Unity
SDK ของไคลเอ็นต์ Google AI ไม่รองรับ Unity
ขั้นตอนที่ 3: อัปเดตการนำเข้าและการเริ่มต้นในแอป
อัปเดตการนำเข้าและวิธีเริ่มต้นGemini Developer API
บริการแบ็กเอนด์ รวมถึงสร้างอินสแตนซ์ GenerativeModel
Swift
// BEFOREimport GoogleGenerativeAI let model = GenerativeModel(name: "MODEL_NAME", apiKey: APIKey.default)// AFTER import FirebaseAI // Initialize the Gemini Developer API backend service let ai = FirebaseAI.firebaseAI(backend: .googleAI()) // Create a `GenerativeModel` instance with a model that supports your use case let model = ai.generativeModel(modelName: "gemini-2.5-flash")
Kotlin
// BEFOREimport com.google.ai.client.generativeai.Chat import com.google.ai.client.generativeai.type.Content import com.google.ai.client.generativeai.java.GenerativeModuleFutures...val generativeModel = GenerativeModel(modelName = "MODEL_NAME", // Access your API key as a Build Configuration variable apiKey = BuildConfig.apiKey )// AFTER import com.google.firebase.Firebase import com.google.firebase.ai.ai import com.google.firebase.ai.type.GenerativeBackend ... // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case val model = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel("gemini-2.5-flash")
Java
// BEFOREimport com.google.ai.client.generativeai.Chat; import com.google.ai.client.generativeai.type.Content; import com.google.ai.client.generativeai.java.GenerativeModuleFutures;...GenerativeModel gm = new GenerativeModel("MODEL_NAME", // Access your API key as a Build Configuration variable BuildConfig.apiKey ); GenerativeModelFutures model = GenerativeModelFutures.from(gm);// AFTER import com.google.firebase.ai.FirebaseAI; import com.google.firebase.ai.GenerativeModel; import com.google.firebase.ai.java.GenerativeModelFutures; import com.google.firebase.ai.type.GenerativeBackend; ... // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI()) .generativeModel("gemini-2.5-flash"); // Use the GenerativeModelFutures Java compatibility layer which offers // support for ListenableFuture and Publisher APIs GenerativeModelFutures model = GenerativeModelFutures.from(ai);
Web
// BEFOREimport { GoogleGenerativeAI } from "@google/generative-ai"; // Fetch your API_KEY and access your API const API_KEY = "..."; const genAI = new GoogleGenerativeAI(API_KEY);...const model = genAI.getGenerativeModel({ model: "MODEL_NAME"});// AFTER import { initializeApp } from "firebase/app"; import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai"; // TODO(developer) Replace the following with your app's Firebase configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize FirebaseApp const firebaseApp = initializeApp(firebaseConfig); // Initialize the Gemini Developer API backend service const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() }); // Create a `GenerativeModel` instance with a model that supports your use case const model = getGenerativeModel(ai, { model: "gemini-2.5-flash" });
Dart
// BEFOREimport 'package:google_generative_ai/google_generative_ai.dart'; final apiKey = Platform.environment['API_KEY']; if (apiKey == null) { print('No \$API_KEY environment variable'); exit(1); } final model = GenerativeModel(model: 'MODEL_NAME', apiKey: apiKey);// AFTER import 'package:firebase_ai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'firebase_options.dart'; // Initialize FirebaseApp await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); // Initialize the Gemini Developer API backend service // Create a `GenerativeModel` instance with a model that supports your use case final model = FirebaseAI.googleAI().generativeModel(model: 'gemini-2.5-flash');
Unity
SDK ของไคลเอ็นต์ Google AI ไม่รองรับ Unity
โปรดทราบว่าคุณอาจสร้างอินสแตนซ์ GenerativeModel
ไม่ได้เสมอไป ทั้งนี้ขึ้นอยู่กับความสามารถที่คุณใช้
- หากต้องการเข้าถึงImagenโมเดล
ให้สร้าง
ImagenModel
อินสแตนซ์
ขั้นตอนที่ 4: อัปเดตโค้ดตามฟีเจอร์ที่คุณใช้
ขั้นตอนนี้อธิบายการเปลี่ยนแปลงที่อาจจำเป็นต้องทำ ทั้งนี้ขึ้นอยู่กับฟีเจอร์ที่คุณใช้
Firebase AI Logic Client SDK ไม่รองรับ การเรียกใช้โค้ด หากใช้ฟีเจอร์นี้ โปรดตรวจสอบว่าแอปของคุณรองรับการทำงานนี้
ดูรายการต่อไปนี้เพื่อดูการเปลี่ยนแปลงที่คุณอาจต้องทำในโค้ดเพื่อรองรับการย้ายข้อมูลไปยัง Firebase AI LogicSDK ของไคลเอ็นต์
ต้องระบุสำหรับทุกภาษาและแพลตฟอร์ม
การเรียกใช้ฟังก์ชัน
หากคุณใช้ฟีเจอร์นี้ คุณจะต้องอัปเดต วิธีที่กำหนดสคีมา เราขอแนะนำให้อ่านคู่มือการเรียกใช้ฟังก์ชันที่อัปเดตแล้วเพื่อดูวิธีเขียนประกาศฟังก์ชันการสร้างเอาต์พุตที่มีโครงสร้าง (เช่น JSON) โดยใช้
responseSchema
หากคุณใช้ฟีเจอร์นี้ คุณจะต้องอัปเดต วิธีที่กำหนดสคีมา เราขอแนะนำให้อ่านคู่มือเอาต์พุตที่มีโครงสร้างฉบับใหม่เพื่อดูวิธี เขียนสคีมา JSONหมดเวลา
- เปลี่ยนระยะหมดเวลาเริ่มต้นสำหรับคำขอเป็น 180 วินาที
ต้องระบุตามแพลตฟอร์มหรือภาษา
Swift
การแจงนับ
แทนที่
enum
ส่วนใหญ่ด้วยstruct
ที่มีตัวแปรแบบคงที่ การเปลี่ยนแปลงนี้ช่วยให้มีความยืดหยุ่นมากขึ้นในการพัฒนา API ในลักษณะที่เข้ากันได้แบบย้อนหลัง เมื่อใช้คำสั่งswitch
คุณต้อง รวมเคสdefault:
เพื่อครอบคลุมค่าที่ไม่รู้จักหรือค่าที่ไม่ได้จัดการ รวมถึงค่าใหม่ที่จะเพิ่มลงใน SDK ในอนาคตเปลี่ยนชื่อการแจงนับ
BlockThreshold
เป็นHarmBlockThreshold
แล้ว ตอนนี้ประเภทนี้เป็นstruct
แล้วนำเคส
unknown
และunspecified
ออกจากการแจงนับต่อไปนี้ (ตอนนี้คือstruct
):HarmCategory
,HarmBlockThreshold
,HarmProbability
,BlockReason
และFinishReason
แทนที่การแจงนับ
ModelContent.Part
ด้วยโปรโตคอลชื่อPart
เพื่อให้เพิ่มประเภทใหม่ๆ ได้ในลักษณะที่เข้ากันได้แบบย้อนหลัง การเปลี่ยนแปลงนี้ อธิบายไว้อย่างละเอียดในส่วนชิ้นส่วนเนื้อหา
ส่วนเนื้อหา
นำโปรโตคอล
ThrowingPartsRepresentable
ออก และลดความซับซ้อนของ ตัวเริ่มต้นสำหรับModelContent
เพื่อหลีกเลี่ยงข้อผิดพลาดของคอมไพเลอร์ที่อาจเกิดขึ้น รูปภาพที่เข้ารหัสไม่ถูกต้องจะยังคงแสดงข้อผิดพลาดเมื่อนำไปใช้ในgenerateContent
แทนที่เคส
ModelContent.Part
ด้วยประเภทstruct
ต่อไปนี้ ซึ่งเป็นไปตามโปรโตคอลPart
.text
ไปยังTextPart
.data
ไปยังInlineDataPart
.fileData
ไปยังFileDataPart
.functionCall
ไปยังFunctionCallPart
.functionResponse
ไปยังFunctionResponsePart
หมวดหมู่ความเสี่ยง
- เปลี่ยน
HarmCategory
เพื่อไม่ให้ซ้อนอยู่ในประเภทSafetySetting
อีกต่อไป หากคุณอ้างอิงถึงSafetySetting.HarmCategory
คุณสามารถแทนที่ด้วยHarmCategory
ได้
- เปลี่ยน
ความคิดเห็นด้านความปลอดภัย
- นำประเภท
SafetyFeedback
ออกเนื่องจากไม่ได้ใช้ในคำตอบใดๆ
- นำประเภท
ข้อมูลเมตาของการอ้างอิง
- เปลี่ยนชื่อพร็อพเพอร์ตี้
citationSources
เป็นcitations
ในCitationMetadata
- เปลี่ยนชื่อพร็อพเพอร์ตี้
อักขระทั้งหมดที่เรียกเก็บเงินได้
- เปลี่ยนพร็อพเพอร์ตี้
totalBillableCharacters
ในCountTokensResponse
ให้เป็นแบบไม่บังคับเพื่อแสดงถึงสถานการณ์ที่ไม่มีการส่งอักขระ
- เปลี่ยนพร็อพเพอร์ตี้
คำตอบของผู้สมัคร
- เปลี่ยนชื่อ
CandidateResponse
เป็นCandidate
เพื่อให้ตรงกับแพลตฟอร์มอื่นๆ
- เปลี่ยนชื่อ
การกำหนดค่าการสร้าง
- เปลี่ยนพร็อพเพอร์ตี้สาธารณะของ
GenerationConfig
เป็นinternal
โดยคุณยังคงกำหนดค่าได้ทั้งหมดในตัวเริ่มต้น
- เปลี่ยนพร็อพเพอร์ตี้สาธารณะของ
Kotlin
การแจงนับ
แทนที่
enum
ชั้นเรียนและsealed
ชั้นเรียนด้วยชั้นเรียนปกติ การเปลี่ยนแปลงนี้ช่วยให้มีความยืดหยุ่นมากขึ้นในการพัฒนา API ในลักษณะที่เข้ากันได้แบบย้อนหลังเปลี่ยนชื่อการแจงนับ
BlockThreshold
เป็นHarmBlockThreshold
นำค่าออกจากรายการต่อไปนี้
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
และFinishReason
เมธอด Blob
- เปลี่ยนชื่อเมธอดทั้งหมดที่มี
Blob
เป็นส่วนหนึ่งของชื่อให้ใช้InlineData
แทน
- เปลี่ยนชื่อเมธอดทั้งหมดที่มี
การตั้งค่าความปลอดภัย
- เปลี่ยนฟิลด์
method
ให้เป็นค่าว่างได้
- เปลี่ยนฟิลด์
คลาสระยะเวลา
- นำการใช้งานคลาส
Duration
ของ Kotlin ทั้งหมดออกและแทนที่ด้วยlong
การเปลี่ยนแปลงนี้ช่วยให้ทำงานร่วมกับ Java ได้ดียิ่งขึ้น
- นำการใช้งานคลาส
ข้อมูลเมตาของการอ้างอิง
- รวมฟิลด์ทั้งหมดที่ประกาศไว้ก่อนหน้านี้ใน
CitationMetadata
ไว้ใน คลาสใหม่ที่ชื่อCitation
คุณดูการอ้างอิงได้ในรายการที่ชื่อcitations
ในCitationMetadata
การเปลี่ยนแปลงนี้ช่วยให้ประเภทต่างๆ สอดคล้องกันมากขึ้น ในแพลตฟอร์มต่างๆ
- รวมฟิลด์ทั้งหมดที่ประกาศไว้ก่อนหน้านี้ใน
นับโทเค็น
- เปลี่ยนฟิลด์
totalBillableCharacters
ให้เป็นค่าว่างได้
- เปลี่ยนฟิลด์
อักขระทั้งหมดที่เรียกเก็บเงินได้
- เปลี่ยนพร็อพเพอร์ตี้
totalBillableCharacters
ในCountTokensResponse
ให้เป็นแบบไม่บังคับเพื่อแสดงถึงสถานการณ์ที่ไม่มีการส่งอักขระ
- เปลี่ยนพร็อพเพอร์ตี้
การสร้างอินสแตนซ์ของโมเดล
- ย้ายพารามิเตอร์
requestOptions
ไปไว้ท้ายรายการพารามิเตอร์เพื่อ ให้สอดคล้องกับแพลตฟอร์มอื่นๆ
- ย้ายพารามิเตอร์
Java
การแจงนับ
แทนที่
enum
ชั้นเรียนและsealed
ชั้นเรียนด้วยชั้นเรียนปกติ การเปลี่ยนแปลงนี้ช่วยให้มีความยืดหยุ่นมากขึ้นในการพัฒนา API ในลักษณะที่เข้ากันได้แบบย้อนหลังเปลี่ยนชื่อการแจงนับ
BlockThreshold
เป็นHarmBlockThreshold
นำค่าออกจากรายการต่อไปนี้
HarmBlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
และFinishReason
เมธอด Blob
- เปลี่ยนชื่อเมธอดทั้งหมดที่มี
Blob
เป็นส่วนหนึ่งของชื่อให้ใช้InlineData
แทน
- เปลี่ยนชื่อเมธอดทั้งหมดที่มี
การตั้งค่าความปลอดภัย
- เปลี่ยนฟิลด์
method
ให้เป็นค่าว่างได้
- เปลี่ยนฟิลด์
คลาสระยะเวลา
- นำการใช้งานคลาส
Duration
ของ Kotlin ทั้งหมดออกและแทนที่ด้วยlong
การเปลี่ยนแปลงนี้ช่วยให้ทำงานร่วมกับ Java ได้ดียิ่งขึ้น
- นำการใช้งานคลาส
ข้อมูลเมตาของการอ้างอิง
- รวมฟิลด์ทั้งหมดที่ประกาศไว้ก่อนหน้านี้ใน
CitationMetadata
ไว้ใน คลาสใหม่ที่ชื่อCitation
คุณดูการอ้างอิงได้ในรายการที่ชื่อcitations
ในCitationMetadata
การเปลี่ยนแปลงนี้ช่วยให้ประเภทต่างๆ สอดคล้องกันมากขึ้น ในแพลตฟอร์มต่างๆ
- รวมฟิลด์ทั้งหมดที่ประกาศไว้ก่อนหน้านี้ใน
นับโทเค็น
- เปลี่ยนฟิลด์
totalBillableCharacters
ให้เป็นค่าว่างได้
- เปลี่ยนฟิลด์
อักขระทั้งหมดที่เรียกเก็บเงินได้
- เปลี่ยนพร็อพเพอร์ตี้
totalBillableCharacters
ในCountTokensResponse
ให้เป็นแบบไม่บังคับเพื่อแสดงถึงสถานการณ์ที่ไม่มีการส่งอักขระ
- เปลี่ยนพร็อพเพอร์ตี้
การสร้างอินสแตนซ์ของโมเดล
- ย้ายพารามิเตอร์
requestOptions
ไปไว้ท้ายรายการพารามิเตอร์เพื่อ ให้สอดคล้องกับแพลตฟอร์มอื่นๆ
- ย้ายพารามิเตอร์
Web
โปรดทราบว่า Google AIClient SDK สำหรับ JavaScript มีการเปลี่ยนแปลงหลายอย่าง นับตั้งแต่เวลาที่ Firebase AI LogicClient SDK แยกสาขาออกมา รายการต่อไปนี้คือการเปลี่ยนแปลงที่อาจเกิดขึ้นซึ่งคุณอาจต้องพิจารณาเมื่อ ย้ายข้อมูลไปยัง Firebase AI Logic SDK ของไคลเอ็นต์
การแจงนับ
- นำค่าออกจากรายการต่อไปนี้
HarmCategory
,BlockThreshold
,HarmProbability
,HarmSeverity
,BlockReason
และFinishReason
- นำค่าออกจากรายการต่อไปนี้
เหตุผลในการบล็อก
- เปลี่ยน
blockReason
ในPromptFeedback
เป็นตัวเลือก
- เปลี่ยน
การอ้างอิงการค้นหา
- นำการใช้งานฟีเจอร์นี้ทั้งหมดออก เนื่องจากยังไม่รองรับใน SDK ของ Firebase AI Logic
ข้อผิดพลาด
- นำการใช้งาน
GoogleGenerativeAIError
ทั้งหมดออก และย้ายไปใช้AIError
(ไม่บังคับ)
- นำการใช้งาน
Dart
การแจงนับ
- นำค่าออกจากรายการต่อไปนี้
HarmCategory
,HarmProbability
,BlockReason
และFinishReason
- นำค่าออกจากรายการต่อไปนี้
ส่วนข้อมูล
- เปลี่ยนชื่อ
DataPart
เป็นInlineDataPart
และฟังก์ชันstatic
data
เป็นinlineData
เพื่อให้สอดคล้องกับแพลตฟอร์มอื่นๆ
- เปลี่ยนชื่อ
ตัวเลือกคำขอ
- นำ
RequestOptions
ออกเนื่องจากtimeout
ใช้งานไม่ได้ เราจะเพิ่มฟีเจอร์นี้กลับมาในอนาคตอันใกล้ แต่จะย้ายไปไว้ในประเภทGenerativeModel
เพื่อให้ตรงกับแพลตฟอร์มอื่นๆ
- นำ
หยุดลำดับ
- เปลี่ยนพารามิเตอร์
stopSequences
ในGenerationConfig
ให้เป็น ไม่บังคับและตั้งค่าเริ่มต้นเป็นnull
แทนที่จะเป็นอาร์เรย์ว่าง
- เปลี่ยนพารามิเตอร์
การอ้างอิง
- เปลี่ยนชื่อพร็อพเพอร์ตี้
citationSources
เป็นcitations
ในCitationMetadata
เราเปลี่ยนชื่อประเภทCitationSource
เป็นCitation
เพื่อให้ตรงกับแพลตฟอร์มอื่นๆ
- เปลี่ยนชื่อพร็อพเพอร์ตี้
ประเภท เมธอด และพร็อพเพอร์ตี้สาธารณะที่ไม่จำเป็น
- นำประเภท เมธอด และพร็อพเพอร์ตี้ต่อไปนี้ออกเนื่องจาก
มีการเปิดเผยโดยไม่ตั้งใจ:
defaultTimeout
,CountTokensResponseFields
,parseCountTokensResponse
,parseEmbedContentResponse
,parseGenerateContentResponse
,parseContent
,BatchEmbedContentsResponse
,ContentEmbedding
,EmbedContentRequest
, และEmbedContentResponse
- นำประเภท เมธอด และพร็อพเพอร์ตี้ต่อไปนี้ออกเนื่องจาก
มีการเปิดเผยโดยไม่ตั้งใจ:
นับโทเค็น
- นำฟิลด์พิเศษออกจากฟังก์ชัน
countTokens
ซึ่งไม่จำเป็นอีกต่อไป คุณต้องมีเพียงcontents
เท่านั้น
- นำฟิลด์พิเศษออกจากฟังก์ชัน
การสร้างอินสแตนซ์ของโมเดล
- ย้ายพารามิเตอร์
systemInstruction
ไปไว้ท้ายรายการพารามิเตอร์ เพื่อให้สอดคล้องกับแพลตฟอร์มอื่นๆ
- ย้ายพารามิเตอร์
ฟังก์ชันการฝัง
- นำฟังก์ชันการฝังที่ไม่รองรับ (
embedContent
และbatchEmbedContents
) ออกจากโมเดล
- นำฟังก์ชันการฝังที่ไม่รองรับ (
Unity
SDK ของไคลเอ็นต์ Google AI ไม่รองรับ Unity
แสดงความคิดเห็น เกี่ยวกับประสบการณ์การใช้งาน Firebase AI Logic