เมื่อเรียกใช้ Gemini API จากแอปโดยใช้ Vertex AI in Firebase SDK คำขอของคุณจะมีพารามิเตอร์หลายรายการที่ควบคุมคำตอบของ Generative AI ซึ่งมักจะประกอบด้วยชื่อโมเดล การกำหนดค่าการสร้างโมเดล (โทเค็นสูงสุด อุณหภูมิ ฯลฯ) การตั้งค่าความปลอดภัย วิธีการของระบบ และข้อมูลพรอมต์
ในกรณีส่วนใหญ่ คุณจะต้องเปลี่ยนข้อมูลเหล่านี้ตามต้องการหรือตามความจำเป็นในสถานการณ์ต่างๆ ต่อไปนี้
- อัปเดตโมเดล Generative AI โดยไม่ต้องเผยแพร่แอปใหม่ คุณสามารถอัปเกรดเป็นโมเดลเวอร์ชันใหม่ที่มีความเสถียรก่อนที่จะเลิกใช้งานเวอร์ชันเก่า เปลี่ยนไปใช้โมเดลที่ประหยัดค่าใช้จ่ายหรือมีประสิทธิภาพสูงขึ้นตามความต้องการและคุณลักษณะของผู้ใช้ หรือทำให้โมเดลล่าสุดและดีที่สุดใช้งานได้ตามเงื่อนไขกับกลุ่มผู้ใช้บางกลุ่ม (เช่น ผู้ทดสอบเบต้า)
- ตั้งค่าตำแหน่งที่คุณเข้าถึงโมเดลเพื่อให้อยู่ใกล้ผู้ใช้มากขึ้น
- ทํา A/B Testing วิธีการและพรอมต์ของระบบที่แตกต่างกัน จากนั้นค่อยๆ เปิดตัวค่าการทดสอบที่ได้ผลลัพธ์ดีที่สุดแก่ผู้ใช้
- ใช้ Flag ฟีเจอร์เพื่อแสดงหรือซ่อนฟีเจอร์ Generative AI ในแอปอย่างรวดเร็ว
Firebase Remote Config ดำเนินการทั้งหมดนี้และอื่นๆ อีกมากมาย ซึ่งช่วยให้คุณอัปเดตค่าพารามิเตอร์ได้ตามต้องการและแบบมีเงื่อนไขสำหรับอินสแตนซ์แอปที่ตรงกับลักษณะที่คุณตั้งค่าไว้ในคอนโซล Firebase โดยไม่ต้องเผยแพร่แอปเวอร์ชันใหม่
คู่มือโซลูชันนี้จะแสดง Use Case ที่แนะนําและอธิบายวิธีเพิ่ม Remote Config ลงในแอป Generative AI
เหตุผลที่ควรใช้ Firebase Remote Config กับแอป
Firebase Remote Config ช่วยให้คุณปรับลักษณะการทํางานของแอปแบบไดนามิกได้โดยไม่ต้องอัปเดตแอป ซึ่งจะมีประสิทธิภาพอย่างยิ่งสำหรับแอปที่ใช้ Generative AI ซึ่งการปรับปรุงซ้ำอย่างรวดเร็วและการปรับแต่งอย่างละเอียดเป็นสิ่งสําคัญ
กรณีการใช้งานที่จำเป็นสำหรับ Remote Config กับแอป Generative AI
เราขอแนะนำให้ใช้ Remote Config กับ Vertex AI in Firebase สำหรับกรณีการใช้งานที่สำคัญต่อไปนี้
- อัปเกรดเป็นโมเดลเวอร์ชันล่าสุดโดยไม่ต้องอัปเดตแอป: ใช้พารามิเตอร์ Remote Config เพื่อเปลี่ยนชื่อโมเดลตามต้องการ เพื่อให้คุณอัปเกรดเป็นโมเดล Gemini ที่ต้องการเป็นเวอร์ชันล่าสุดได้ทันทีที่พร้อมใช้งาน
- อัปเดตวิธีการของระบบและการตั้งค่าความปลอดภัยโดยไม่ต้องอัปเดตแอป:เก็บวิธีการของระบบและการตั้งค่าความปลอดภัยไว้ในพารามิเตอร์ Remote Config เพื่อให้คุณเปลี่ยนได้ตามต้องการหากพบปัญหาหลังจากการทําให้ใช้งานได้
- ลดความเสี่ยงและบังคับใช้ความปลอดภัยของ AI: ใช้Remote Configการเปิดตัวเพื่อเผยแพร่การเปลี่ยนแปลง Generative AI ให้แก่ผู้ใช้ iOS และ Android อย่างปลอดภัยและค่อยเป็นค่อยไป
กรณีการใช้งานขั้นสูงและที่แนะนําสําหรับ Remote Config กับแอป Generative AI
หลังจากเครื่องมือวัดผลแอปด้วย Remote Config และ Google Analytics แล้ว คุณจะสามารถสํารวจกรณีการใช้งานขั้นสูงต่อไปนี้
- ตั้งค่าตำแหน่งตามตำแหน่งไคลเอ็นต์: ใช้เงื่อนไข Remote Config เพื่อตั้งค่าตำแหน่งของโมเดลตามตำแหน่งที่ตรวจพบของไคลเอ็นต์
- ทดสอบโมเดลต่างๆ: ทดสอบและสลับใช้โมเดล Generative AI ต่างๆ ได้อย่างรวดเร็ว หรือแม้แต่ติดตั้งใช้งานโมเดลต่างๆ กับกลุ่มผู้ใช้ที่แตกต่างกัน เพื่อหาโมเดลที่เหมาะกับกรณีการใช้งานหนึ่งๆ ของคุณมากที่สุด
- เพิ่มประสิทธิภาพการทำงานของโมเดล: ปรับแต่งพารามิเตอร์ของโมเดล เช่นพรอมต์ของระบบ โทเค็นเอาต์พุตสูงสุด อุณหภูมิ และการตั้งค่าอื่นๆ
ใช้วิธีการต่างๆ ของระบบ พรอมต์ และการกําหนดค่ารูปแบบตามแอตทริบิวต์ไคลเอ็นต์: เมื่อใช้ Remote Config กับ Google Analytics คุณจะสร้างเงื่อนไขตามแอตทริบิวต์ไคลเอ็นต์หรือกลุ่มเป้าหมายที่กําหนดเอง รวมถึงตั้งค่าพารามิเตอร์ต่างๆ ตามแอตทริบิวต์เหล่านี้ได้
ตัวอย่างเช่น หากคุณใช้ Generative AI เพื่อมอบการสนับสนุนด้านเทคนิคในแอป คุณอาจต้องตั้งค่าวิธีการของระบบสำหรับแพลตฟอร์มแอปโดยเฉพาะเพื่อให้แน่ใจว่าผู้ใช้ Android, iOS และแพลตฟอร์มเว็บจะได้รับวิธีการที่ถูกต้อง
ปรับเปลี่ยนประสบการณ์การใช้งานในแบบของคุณสำหรับผู้ใช้แต่ละคน: ใช้Remote Configการปรับเปลี่ยนเฉพาะบุคคลเพื่อกำหนดการตั้งค่า Generative AI ที่ดีที่สุดให้กับผู้ใช้แต่ละรายโดยอัตโนมัติ
ควบคุมต้นทุน: ปรับจากระยะไกลว่าจะใช้โมเดล Generative AI ใด จะใช้บ่อยแค่ไหน และกำหนดค่าโทเค็นเอาต์พุตสูงสุดแบบไดนามิกตามกลุ่มเป้าหมายของผู้ใช้เพื่อลดต้นทุนที่ไม่จำเป็น
เพิ่มประสิทธิภาพประสบการณ์การใช้งานแอปและผลลัพธ์: ใช้ A/B Testing กับ Remote Config ในแอป iOS, Android และ Flutter เพื่อทดสอบการเปลี่ยนแปลงพารามิเตอร์ Generative AI ในกลุ่มผู้ใช้ต่างๆ เพื่อดูว่าการเปลี่ยนแปลงส่งผลต่อเมตริกหลัก เช่น การคงผู้ใช้ไว้และรายได้อย่างไร
การใช้ Firebase Remote Config ในการตรวจสอบแอป Generative AI จะช่วยให้คุณสร้างแอปพลิเคชันที่ทำงานด้วยระบบ AI ที่ยืดหยุ่น ปลอดภัย และคุ้มค่า พร้อมทั้งมอบประสบการณ์การใช้งานที่ยอดเยี่ยมให้แก่ผู้ใช้
เพิ่ม Firebase Remote Config ลงในแอป
ในคู่มือโซลูชันนี้ คุณจะใช้ Firebase Remote Config เพื่ออัปเดตพารามิเตอร์ในแอป Android ที่ใช้ Vertex AI in Firebase SDK แบบไดนามิก คุณจะได้เรียนรู้วิธีต่อไปนี้
- ดึงข้อมูลและเปิดใช้งานพารามิเตอร์ เช่น ชื่อรุ่นและวิธีการของระบบจาก Firebase Remote Config
- อัปเดตการเรียกใช้ Gemini API เพื่อใช้พารามิเตอร์ที่ดึงข้อมูลแบบไดนามิก ซึ่งจะช่วยให้คุณสลับระหว่างรูปแบบต่างๆ หรือแก้ไขคำสั่งของระบบได้โดยไม่ต้องอัปเดตแอป
- ควบคุมพารามิเตอร์จากระยะไกล ปรับลักษณะการทํางานและความสามารถของโมเดลตามต้องการ
ข้อกำหนดเบื้องต้น
คู่มือนี้จะถือว่าคุณคุ้นเคยกับการใช้ Android Studio เพื่อพัฒนาแอปสำหรับแพลตฟอร์ม Android ก่อนเริ่มต้น โปรดตรวจสอบว่าคุณได้ทำสิ่งต่อไปนี้แล้ว
ทำตามคู่มือเริ่มต้นใช้งานสำหรับ Vertex AI in FirebaseSDK ตรวจสอบว่าคุณได้ทำสิ่งต่อไปนี้ทั้งหมดแล้ว
- ตั้งค่าโปรเจ็กต์ Firebase ใหม่หรือที่มีอยู่ รวมถึงใช้แพ็กเกจราคา Blaze และเปิดใช้ API ที่จําเป็น
- เชื่อมต่อแอปกับ Firebase ซึ่งรวมถึงการลงทะเบียนแอปและเพิ่มการกําหนดค่า Firebase ลงในแอป
- เพิ่ม SDK และเริ่มต้นบริการ Vertex AI และโมเดล Generative ในแอป
เปิดใช้ Google Analytics ในโปรเจ็กต์และเพิ่ม SDK ลงในแอป (จําเป็นสําหรับการกําหนดเป้าหมายแบบมีเงื่อนไข เช่น การตั้งค่าตําแหน่งบริการและโมเดลตามตําแหน่งของอุปกรณ์ไคลเอ็นต์)
ขั้นตอนที่ 1: ตั้งค่าพารามิเตอร์ในคอนโซล Firebase
สร้างRemote Configเทมเพลตไคลเอ็นต์และกำหนดค่าพารามิเตอร์และค่าเพื่อดึงข้อมูลและใช้ในแอป
- เปิดโปรเจ็กต์ Firebase ในคอนโซล Firebase แล้วขยายเรียกใช้จากเมนูการนำทาง แล้วเลือก Remote Config
- ตรวจสอบว่าได้เลือกไคลเอ็นต์จากตัวเลือก ไคลเอ็นต์/เซิร์ฟเวอร์ที่ด้านบนของหน้า Remote Config
- หากนี่เป็นการใช้เทมเพลตไคลเอ็นต์ Remote Config เป็นครั้งแรก ให้คลิกสร้างการกําหนดค่า แผงสร้างพารามิเตอร์แรกจะปรากฏขึ้น
- หากไม่ได้ใช้เทมเพลต Remote Config เป็นครั้งแรก ให้คลิกเพิ่มพารามิเตอร์
กําหนดพารามิเตอร์ Remote Config ต่อไปนี้
ชื่อพารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น model_name
ชื่อรุ่น ดูรายการชื่อโมเดลล่าสุดที่จะใช้ในโค้ดได้ที่ชื่อโมเดลที่ใช้ได้ สตริง gemini-1.5-flash
system_instructions
คำสั่งของระบบเปรียบเสมือน "ช่วงนำหน้า" ที่คุณเพิ่มก่อนที่โมเดลจะแสดงคำสั่งเพิ่มเติมจากผู้ใช้ปลายทางเพื่อส่งผลต่อลักษณะการทํางานของโมเดล โดยอิงตามความต้องการและกรณีการใช้งานที่เฉพาะเจาะจง สตริง You are a helpful assistant who knows everything there is to know about Firebase!
prompt
พรอมต์เริ่มต้นเพื่อใช้กับฟีเจอร์ Generative AI สตริง I am a developer who wants to know more about Firebase!
vertex_location
ควบคุมตำแหน่ง (ไม่บังคับ) เพื่อเรียกใช้บริการ Vertex AI และเข้าถึงโมเดล คุณสามารถตั้งค่าเงื่อนไขเพื่อกําหนดค่าตัวเลือกนี้ตามตําแหน่งของลูกค้าที่ Google Analytics ตรวจพบ สตริง us-central1
เมื่อเพิ่มพารามิเตอร์เสร็จแล้ว ให้คลิกเผยแพร่การเปลี่ยนแปลง หากเทมเพลตนี้ไม่ใช่เทมเพลต Remote Config ใหม่ ให้ตรวจสอบการเปลี่ยนแปลงแล้วคลิกเผยแพร่การเปลี่ยนแปลงอีกครั้ง
ขั้นตอนที่ 2: เพิ่มและเริ่มต้น Remote Config SDK ในแอป
เพิ่มการอ้างอิง Remote Config และตั้งค่า Remote Config ภายในแอป
เพิ่มทรัพยากร Dependency ของ Remote Config ลงในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติจะเป็น
app/build.gradle.kts
หรือapp/build.gradle
)dependencies { implementation(platform("com.google.firebase:firebase-bom:33.6.0")) implementation("com.google.firebase:firebase-vertexai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
เพิ่ม Remote Config ลงในตรรกะแอปพลิเคชันหลัก ในส่วนนี้ คุณจะเริ่มต้น Remote Config และเพิ่มช่วงเวลาการดึงข้อมูลขั้นต่ำ
Kotlin+KTX
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
ในตัวอย่างนี้ ช่วงเวลาในการดึงข้อมูลเริ่มต้นคือ 3600 วินาที แต่เราขอแนะนำให้คุณตั้งค่าช่วงเวลาในการดึงข้อมูลขั้นต่ำที่ค่อนข้างต่ำในโค้ดระหว่างการพัฒนา
ขั้นตอนที่ 3: ตั้งค่าพารามิเตอร์ในแอป
คุณควรตั้งค่าพารามิเตอร์เริ่มต้นในแอปในออบเจ็กต์ Remote Config วิธีนี้ช่วยให้มั่นใจได้ว่าแอปจะทํางานตามที่คาดไว้แม้ว่าจะดึงค่าจากบริการ Remote Config ไม่ได้ก็ตาม
- จากคอนโซล Firebase ให้เปิด Remote Config
- ในแท็บพารามิเตอร์ ให้เปิดเมนู แล้วเลือกดาวน์โหลดค่าเริ่มต้น
- เมื่อได้รับข้อความแจ้ง ให้เปิดใช้ .xml สำหรับ Android แล้วคลิกดาวน์โหลดไฟล์
- บันทึกไฟล์ในไดเรกทอรีทรัพยากร XML ของแอป
อัปเดตไฟล์กิจกรรมหลักเพื่อเพิ่มค่าเริ่มต้นหลัง
configSettings
ที่คุณเพิ่มไว้ก่อนหน้านี้ โดยทำดังนี้Kotlin+KTX
// Set default values. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
// Set default values. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
ขั้นตอนที่ 4: ดึงข้อมูลและเปิดใช้งานค่า
หลังจากตั้งค่าเริ่มต้นแล้ว ให้เพิ่มรายการต่อไปนี้เพื่อดึงข้อมูลและเปิดใช้งานค่า
Kotlin+KTX
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate()
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
val updated = task.result
Log.d(TAG, "Remote Config values fetched and activated: $updated")
} else {
Log.e(TAG, "Error fetching Remote Config", task.exception)
}
Java
// Fetch and activate Remote Config values
mFirebaseRemoteConfig.fetchAndActivate()
.addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
if (task.isSuccessful()) {
boolean updated = task.getResult();
Log.d(TAG, "Config params updated: " + updated);
} else {
Log.e(TAG, "Error fetching Remote Config", task.exception)
}
}
});
ขั้นตอนที่ 5: เพิ่มโปรแกรมฟัง Remote Config แบบเรียลไทม์
เพิ่มโปรแกรมรับฟัง Remote Config แบบเรียลไทม์ลงในแอปเพื่อให้แน่ใจว่าการเปลี่ยนแปลงที่คุณทำกับเทมเพลต Remote Config จะเผยแพร่ไปยังไคลเอ็นต์ทันทีที่อัปเดต
โค้ดต่อไปนี้จะอัปเดตออบเจ็กต์ Remote Config ทุกครั้งที่มีการเปลี่ยนแปลงค่าพารามิเตอร์ นอกจากนี้ คุณยังกําหนดค่าการดําเนินการภายในaddOnCompleteListener
การเปิดใช้งานได้ด้วย โดยทําดังนี้
Kotlin+KTX
// Add a real-time Remote Config listener
remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener {
override fun onUpdate(configUpdate : ConfigUpdate) {
Log.d(ContentValues.TAG, "Updated keys: " + configUpdate.updatedKeys);
remoteConfig.activate().addOnCompleteListener {
// Optionally, add an action to perform on update here.
}
}
override fun onError(error : FirebaseRemoteConfigException) {
Log.w(ContentValues.TAG, "Config update error with code: " + error.code, error)
}
}
Java
// Add a real-time Remote Config listener
remoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
@Override
public void onUpdate(ConfigUpdate configUpdate) {
Log.d(ContentValues.TAG, "Updated keys: " + configUpdate.getUpdatedKeys());
remoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
// Optionally, add an action to perform on update here.
}
});
}
@Override
public void onError(FirebaseRemoteConfigException error) {
Log.w(ContentValues.TAG, "Config update error with code: " + error.getCode(), error);
}
});
ขั้นตอนที่ 6: กําหนดค่า Remote Config ให้กับตัวแปร Vertex AI
เมื่อกําหนดค่า Remote Config เสร็จแล้ว ให้อัปเดตโค้ดเพื่อแทนที่ค่าที่เขียนตายตัวด้วยค่าที่มาจาก Remote Config
แทนที่ค่าที่กำหนดไว้ล่วงหน้าสำหรับสถานที่ตั้ง ชื่อรุ่น วิธีการของระบบ และข้อความแจ้งผู้ใช้ด้วยค่าที่มาจาก Remote Config
Kotlin+KTX
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
val vertexAI = Firebase.vertexAI(location = remoteConfig.getString("vertex_location"))
// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
val generativeModel = Firebase.vertexAI.generativeModel(
modelName = remoteConfig.getString("model_name"),
systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)
// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(remoteConfig.getString("prompt"))
print(response.text)
Java
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
FirebaseVertexAI vertexAI = FirebaseVertexAI.getInstance(remoteConfig.getString("vertex_location"));
// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel(
/* modelName */ remoteConfig.getString("model_name"),
/* generationConfig (optional) */ null,
/* safetySettings (optional) */ null,
/* requestOptions (optional) */ new RequestOptions(),
/* tools (optional) */ null,
/* toolsConfig (optional) */ null,
/* systemInstruction (optional) */ new Content.Builder().addText(remoteConfig.getString("system_instructions")).build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
// Provide a prompt that contains text
Content userPrompt = new Content.Builder()
addText(remoteConfig.getString("prompt"))
build();
// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(userPrompt);
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);
ขั้นตอนที่ 7: เรียกใช้แอป
สร้างและเรียกใช้แอปเพื่อยืนยันว่าแอปทำงานได้ ทำการเปลี่ยนแปลงการกำหนดค่าจากหน้า Remote Config ในคอนโซล Firebase เผยแพร่การเปลี่ยนแปลง และยืนยันผลลัพธ์
ขั้นตอนถัดไป
- เรียนรู้เพิ่มเติมเกี่ยวกับ Remote Config
- ทดสอบการตั้งค่ารูปแบบต่างๆ ด้วย Remote Config และการทดสอบ A/B
- ค่อยๆ เผยแพร่การเปลี่ยนแปลงพารามิเตอร์รูปแบบโดยใช้Remote Configการเปิดตัว
- ใช้Remote Configการปรับให้เหมาะกับผู้ใช้แต่ละรายเพื่อใช้แมชชีนเลิร์นนิงในการกำหนดการตั้งค่าที่ดีที่สุดสำหรับผู้ใช้แต่ละราย