อัปเดต Vertex AI แบบไดนามิกในแอป Firebase ด้วยการกำหนดค่าระยะไกลของ Firebase

เมื่อเรียกใช้ Gemini API จากแอปโดยใช้ Vertex AI in Firebase SDK คำขอของคุณจะมีพารามิเตอร์หลายรายการที่ควบคุมคำตอบของ Generative AI ซึ่งมักจะประกอบด้วยชื่อโมเดล การกำหนดค่าการสร้างโมเดล (โทเค็นสูงสุด อุณหภูมิ ฯลฯ) การตั้งค่าความปลอดภัย คำสั่งของระบบ และข้อมูลพรอมต์

ในกรณีส่วนใหญ่ คุณจะต้องเปลี่ยนข้อมูลเหล่านี้ตามต้องการหรือตามความจำเป็นในสถานการณ์ต่างๆ ต่อไปนี้

  • อัปเดตโมเดล Generative AI โดยไม่ต้องเผยแพร่แอปใหม่ คุณสามารถอัปเกรดเป็นโมเดลเวอร์ชันใหม่ที่มีความเสถียรก่อนที่จะเลิกใช้งานเวอร์ชันเก่า เปลี่ยนไปใช้โมเดลที่ประหยัดค่าใช้จ่ายหรือมีประสิทธิภาพสูงขึ้นตามความต้องการและคุณลักษณะของผู้ใช้ หรือทำให้โมเดลล่าสุดและดีที่สุดใช้งานได้ตามเงื่อนไขในกลุ่มผู้ใช้บางกลุ่ม (เช่น ผู้ทดสอบเบต้า)
  • ตั้งค่าตำแหน่งที่คุณเข้าถึงโมเดลเพื่อให้อยู่ใกล้ผู้ใช้มากขึ้น
  • ทดสอบ A/B วิธีการและข้อความแจ้งของระบบที่แตกต่างกัน จากนั้นค่อยๆ เปิดตัวค่าการทดสอบที่ได้ผลลัพธ์ดีที่สุดแก่ผู้ใช้
  • ใช้ 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 เพื่อใช้พารามิเตอร์ที่ดึงข้อมูลแบบไดนามิก ซึ่งจะช่วยให้คุณสลับระหว่างรูปแบบต่างๆ หรือแก้ไขคำสั่งของระบบได้โดยไม่ต้องอัปเดตแอป
  • ควบคุมพารามิเตอร์จากระยะไกล ปรับลักษณะการทํางานและความสามารถของโมเดลตามต้องการ

ข้อกำหนดเบื้องต้น

คู่มือนี้ถือว่าคุณคุ้นเคยกับการใช้ Xcode เพื่อพัฒนาแอปสำหรับแพลตฟอร์ม Apple (เช่น iOS) ก่อนเริ่มต้น โปรดตรวจสอบว่าคุณได้ทำสิ่งต่อไปนี้แล้ว

  • ทำตามคู่มือเริ่มต้นใช้งานสำหรับ Vertex AI in FirebaseSDK ตรวจสอบว่าคุณได้ทำสิ่งต่อไปนี้ทั้งหมดแล้ว

    1. ตั้งค่าโปรเจ็กต์ Firebase ใหม่หรือที่มีอยู่ รวมถึงใช้แพ็กเกจราคา Blaze และเปิดใช้ API ที่จําเป็น
    2. เชื่อมต่อแอปกับ Firebase ซึ่งรวมถึงการลงทะเบียนแอปและเพิ่มการกําหนดค่า Firebase ลงในแอป
    3. เพิ่ม SDK และเริ่มต้นบริการ Vertex AI และโมเดล Generative ในแอป
  • เปิดใช้ Google Analytics ในโปรเจ็กต์และเพิ่ม SDK ของ Google Analytics ลงในแอป (จําเป็นสําหรับการกําหนดเป้าหมายแบบมีเงื่อนไข เช่น การตั้งค่าตําแหน่งบริการและโมเดลตามตําแหน่งของอุปกรณ์ไคลเอ็นต์)

ขั้นตอนที่ 1: ตั้งค่าพารามิเตอร์ในคอนโซล Firebase

สร้างRemote Configเทมเพลตไคลเอ็นต์และกําหนดค่าพารามิเตอร์และค่าเพื่อดึงข้อมูลและใช้ในแอป

  1. เปิดโปรเจ็กต์ Firebase ในคอนโซล Firebase แล้วขยายเรียกใช้จากเมนูการนำทาง แล้วเลือก Remote Config
  2. ตรวจสอบว่าได้เลือกไคลเอ็นต์จากตัวเลือก ไคลเอ็นต์/เซิร์ฟเวอร์ที่ด้านบนของหน้า Remote Config
    • หากนี่เป็นการใช้เทมเพลตไคลเอ็นต์ Remote Config เป็นครั้งแรก ให้คลิกสร้างการกําหนดค่า แผงสร้างพารามิเตอร์แรกจะปรากฏขึ้น
    • หากไม่ได้ใช้เทมเพลต Remote Config เป็นครั้งแรก ให้คลิกเพิ่มพารามิเตอร์
  3. กําหนดพารามิเตอร์ Remote Config ต่อไปนี้

    ชื่อพารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น
    model_name ชื่อรุ่น ดูรายการชื่อโมเดลล่าสุดที่จะใช้ในโค้ดได้ที่ชื่อโมเดลที่ใช้ได้ สตริง gemini-2.0-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
  4. เมื่อเพิ่มพารามิเตอร์เสร็จแล้ว ให้คลิกเผยแพร่การเปลี่ยนแปลง หากเทมเพลตนี้ไม่ใช่เทมเพลต Remote Config ใหม่ ให้ตรวจสอบการเปลี่ยนแปลงแล้วคลิกเผยแพร่การเปลี่ยนแปลงอีกครั้ง

ขั้นตอนที่ 2: เพิ่มและเริ่มต้น Remote Config ในแอป

เพิ่ม Remote Config ที่ต้องพึ่งพาและตั้งค่า Remote Config ในแอป คุณได้เพิ่ม Firebase SDK ลงในแอปแล้วในVertex AI in Firebase การตั้งค่า แต่จะต้องเพิ่ม Remote Config ด้วย

  1. เปิดโปรเจ็กต์ใน Xcode แล้วไปที่File > Add Package Dependency
  2. เลือก firebase-ios-sdk แล้วคลิกเพิ่มแพ็กเกจ
  3. จากเครื่องมือนำทางโปรเจ็กต์ ให้เลือกแอป > เป้าหมาย > แอป
  4. จากแท็บทั่วไป ให้เลื่อนไปที่เฟรมเวิร์ก ไลบรารี และเนื้อหาที่ฝัง
  5. คลิก + แล้วเลือก FirebaseRemoteConfig จากนั้นคลิก Add
  6. เพิ่มการนําเข้า FirebaseRemoteConfig ลงในโค้ด

    import FirebaseRemoteConfig
    
  7. ในคลาสที่เหมาะสมสําหรับแอปของคุณ (ใน sample app การดำเนินการนี้จะอยู่ใน VertexAISampleApp ภายในคลาส AppDelegate) ให้เริ่มต้น Firebase และเพิ่ม Remote Config ลงในตรรกะแอปพลิเคชันหลัก

    ในส่วนนี้ คุณจะรวม Remote Config และRemote Config แบบเรียลไทม์ เป็นการนําเข้าเพื่อให้แอปดึงข้อมูลค่าใหม่แบบเรียลไทม์ และเพิ่มช่วงเวลาการดึงข้อมูลขั้นต่ำ ดังนี้

    let remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 3600
    remoteConfig.configSettings = settings
    

ในตัวอย่างนี้ ช่วงเวลาในการดึงข้อมูลเริ่มต้นคือ 3600 วินาที แต่เราขอแนะนำให้คุณตั้งค่าช่วงเวลาในการดึงข้อมูลขั้นต่ำให้ต่ำพอสมควรในโค้ดระหว่างการพัฒนา

ขั้นตอนที่ 3: ตั้งค่าพารามิเตอร์ในแอป

คุณควรตั้งค่าพารามิเตอร์เริ่มต้นในแอปในออบเจ็กต์ Remote Config เพื่อให้แอปทำงานได้ก่อนที่จะเชื่อมต่อกับแบ็กเอนด์ Remote Config หากการเข้าถึงเครือข่ายไคลเอ็นต์ถูกขัดจังหวะ และ/หรือไม่มีการกําหนดค่าในแบ็กเอนด์

  1. เปิด Remote Config จากคอนโซล Firebase
  2. ในแท็บพารามิเตอร์ ให้เปิดเมนู แล้วเลือกดาวน์โหลดค่าเริ่มต้น
  3. เมื่อได้รับข้อความแจ้ง ให้เปิดใช้ .plist สำหรับ iOS แล้วคลิกดาวน์โหลดไฟล์
  4. บันทึกไฟล์ในไดเรกทอรีแอปพลิเคชัน (หากใช้แอปตัวอย่าง ให้บันทึกภายใน FirebaseVertexAI/Sample/VertexAISample)
  5. ใน Xcode ให้คลิกขวาที่แอปแล้วเลือกเพิ่มไฟล์ (หากใช้ตัวอย่าง ให้คลิกขวาที่ VertexAISample แล้วเลือกเพิ่มไฟล์ลงใน "VertexAISample")
  6. เลือก remote_config_defaults.plist แล้วคลิกเพิ่ม
  7. อัปเดตโค้ดแอปเพื่ออ้างอิงไฟล์เริ่มต้น

    // Set default values
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    

ขั้นตอนที่ 4: ดึงข้อมูลและเปิดใช้งานค่า

หลังจากตั้งค่าเริ่มต้นแล้ว ให้เพิ่มรายการต่อไปนี้เพื่อดึงข้อมูลและเปิดใช้งานค่า

// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
  if let error = error {
    print("Error fetching Remote Config: \(error.localizedDescription)")
  }
}

ซึ่งควรอัปเดตออบเจ็กต์ Remote Config ทุกครั้งที่มีการเผยแพร่เทมเพลต Remote Config ใหม่

ขั้นตอนที่ 5: เพิ่มโปรแกรมฟัง Remote Config แบบเรียลไทม์

เพิ่มตัวรับฟัง Remote Config แบบเรียลไทม์เพื่อให้แน่ใจว่าการเปลี่ยนแปลงที่คุณทำกับเทมเพลต Remote Config จะนำไปเผยแพร่ไปยังไคลเอ็นต์ทันทีที่อัปเดต

โค้ดต่อไปนี้จะอัปเดตออบเจ็กต์ Remote Config ทุกครั้งที่มีการเปลี่ยนแปลงค่าพารามิเตอร์

// Add real-time Remote Config
remoteConfig.addOnConfigUpdateListener { configUpdate, error in
  guard let configUpdate = configUpdate, error == nil else {
    print("Error listening for config updates: \(error?.localizedDescription ?? "No error available")")
    return
  }

  print("Updated keys: \(configUpdate.updatedKeys)")
  remoteConfig.activate { changed, error in
    guard error == nil else {
      print("Error activating config: \(error?.localizedDescription ?? "No error available")")
      return
    }
    print("Activated config successfully")
  }
}

ซึ่งควรอัปเดตออบเจ็กต์ Remote Config ทุกครั้งที่มีการเผยแพร่เทมเพลต Remote Config ใหม่

ขั้นตอนที่ 6: กําหนดค่า Remote Config ให้กับตัวแปร Vertex AI

เมื่อกําหนดค่า Remote Config เสร็จแล้ว ให้อัปเดตโค้ดเพื่อแทนที่ค่าที่เขียนไว้อย่างถาวรด้วยค่าที่มาจาก Remote Config

สร้างค่าเพื่อจัดเก็บค่าพรอมต์ของโมเดลและระบบ โค้ดต่อไปนี้แสดงการดึงข้อมูลตำแหน่ง ชื่อรุ่น วิธีการของระบบ พรอมต์ผู้ใช้ และตำแหน่ง Vertex AI จาก Remote Config

// Initialize the Vertex AI service
// Optionally specify a location in which to run the service and access the model
let vertexLocation = remoteConfig.configValue(forKey: "vertex_location").stringValue
let vertex = VertexAI.vertexAI(location: vertexLocation)

// Initialize the generative model with a model that supports your use case
// Specify a model that supports system instructions, like a Gemini 1.5 model
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let systemInstructions = remoteConfig.configValue(forKey: "system_instructions").stringValue

let model = vertex.generativeModel(
  modelName: modelName,
  systemInstruction: ModelContent(role: "system", parts: systemInstructions)
)

// Provide a prompt that contains text
let userPrompt = remoteConfig.configValue(forKey: "prompt").stringValue

// To generate text output, call generateContent with the text input
let response = try await model.generateContent(userPrompt)
if let text = response.text {
  print(text)
}

ขั้นตอนที่ 7: เรียกใช้แอป

สร้างและเรียกใช้แอปเพื่อยืนยันว่าแอปทำงานได้ ทำการเปลี่ยนแปลงการกำหนดค่าจากหน้า Remote Config ในคอนโซล Firebase เผยแพร่การเปลี่ยนแปลง และยืนยันผลลัพธ์

ขั้นตอนถัดไป