เมื่อเรียกใช้ 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 ในกลุ่มผู้ใช้ต่างๆ เพื่อดูว่าการเปลี่ยนแปลงส่งผลต่อเมตริกหลัก เช่น การคงผู้ใช้ไว้และรายได้อย่างไร
เมื่อใช้แอป Generative AI กับ Firebase Remote Config คุณจะสามารถสร้างแอปพลิเคชันที่ทำงานด้วยระบบ AI ที่ยืดหยุ่น ปลอดภัย และคุ้มค่าไปพร้อมๆ กับสร้างประสบการณ์ที่ยอดเยี่ยมให้กับผู้ใช้
เพิ่ม Firebase Remote Config ลงในแอป
ในคู่มือโซลูชันนี้ คุณจะใช้ Firebase Remote Config เพื่ออัปเดตพารามิเตอร์ในแอป Android ที่ใช้ SDK Vertex AI in Firebase แบบไดนามิก คุณจะได้เรียนรู้วิธีต่อไปนี้
- ดึงข้อมูลและเปิดใช้งานพารามิเตอร์ เช่น ชื่อรุ่นและวิธีการของระบบจาก 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: เพิ่มและเริ่มต้น SDK ของ Remote Config ในแอป
เพิ่มทรัพยากร Dependency 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: เพิ่ม Listener แบบเรียลไทม์ของ Remote Config
เพิ่ม Remote Config Listener แบบเรียลไทม์ลงในแอปเพื่อให้แน่ใจว่าการเปลี่ยนแปลงที่คุณทำกับเทมเพลต 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การปรับให้เหมาะกับผู้ใช้แต่ละรายเพื่อใช้แมชชีนเลิร์นนิงในการกำหนดการตั้งค่าที่ดีที่สุดสำหรับผู้ใช้แต่ละราย