ใช้โหมดการคิด

โหมดการคิดจะแจ้งให้โมเดลแสดงกระบวนการใช้เหตุผลก่อนที่จะสร้างการตอบกลับสุดท้าย โหมดการคิดช่วยเพิ่มความแม่นยำในการเรียกใช้ฟังก์ชันของโมเดลและเหมาะสำหรับการแก้ปัญหาทางคณิตศาสตร์ การแก้ปัญหา และงานใช้เหตุผลที่ซับซ้อนอื่นๆ

เมื่อเปิดใช้โหมดการคิด ระบบจะแบ่งเอาต์พุตโมเดลออกเป็น 2 ส่วน ดังนี้

  1. กระบวนการคิด: ขั้นตอนการใช้เหตุผลหรือการวางแผนภายในที่โมเดลใช้
  2. การตอบกลับ: คำตอบสุดท้ายที่สร้างขึ้นสำหรับผู้ใช้

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

โหมดการคิดทำงานบนอุปกรณ์ที่ใช้ Gemini Nano V4 ขึ้นไป คุณสามารถ ทดสอบโหมดการคิดผ่านโปรแกรมเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ใน อุปกรณ์ที่เปิดใช้ AICore

เปิดใช้โหมดการคิด

หากต้องการใช้โหมดการคิด คุณต้องเลือกใช้โดยตั้งค่าแฟล็ก enableThinking เป็น true ในฟังก์ชันตัวสร้าง generateContentRequest ดังนี้

val request = generateContentRequest {
    text("Solve this complex riddle: ...")
    enableThinking = true // Enable thinking mode for Gemini Nano V4
}

เข้าถึงความคิด

ML Kit SDK มีวิธีต่างๆ ในการเข้าถึงความคิดที่นำไปสู่การตอบกลับของโมเดล ทั้งนี้ขึ้นอยู่กับว่าคุณใช้การใช้งานแบบไม่สตรีมหรือแบบสตรีม

โหมดไม่สตรีม

ในการเรียกแบบไม่สตรีมมาตรฐาน ระบบจะแสดงกระบวนการใช้เหตุผลเป็นส่วนหนึ่งของการตอบกลับแบบเต็ม คุณสามารถเข้าถึงกระบวนการนี้ได้โดยใช้พร็อพเพอร์ตี้ thoughtProcess ซึ่งมีออบเจ็กต์ Candidate อยู่ในออบเจ็กต์ GenerateContentResponse

try {
    val response = generativeModel.generateContent(request)
    
    // 1. Access the main response
    val answer = response.candidates.firstOrNull()?.text
    println("Final Answer: $answer")
    
    // 2. Access the separated thought process
    println("Thought Process:")
    response.thoughtProcess.forEach { thoughtCandidate ->
        print(thoughtCandidate.text)
    }
} catch (e: GenAiException) {
    // Handle SDK-specific exceptions
}

โหมดสตรีม

อินเทอร์เฟซ StreamingCallback ได้รับการอัปเดตให้มีเมธอด onNewThought เพื่อรองรับคำแนะนำแบบเรียลไทม์ ซึ่งจะช่วยให้แอปจัดการกับความคิดแบบสตรีมเป็นส่วนๆ ได้เมื่อโมเดลสร้างขึ้น

val callback = object : StreamingCallback {
    override fun onNewText(additionalText: String) {
        // Called for regular response chunks
        print(additionalText)
    }

    override fun onNewThought(additionalThought: String) {
        // Called for thought chunks before final text arrives
        // Update a separate reasoning UI or status indicator
        print("[Thinking: $additionalThought]")
    }
}

try {
    generativeModel.generateContent(request, callback)
} catch (e: GenAiException) {
    // Handle exception
}

แนวทางปฏิบัติแนะนำ

แนวทางปฏิบัติแนะนำเมื่อใช้โหมดการคิดมีดังนี้

  • ตัวบ่งชี้ UI: เนื่องจากขั้นตอนการใช้เหตุผลอาจใช้เวลาในการสร้าง การแสดงความคิดหรือตัวบ่งชี้ "กำลังคิด" ในโหมดสตรีมจึงช่วยปรับปรุงประสิทธิภาพที่รับรู้ได้อย่างมากด้วยการแสดงให้ผู้ใช้เห็นว่าโมเดลทำงานอยู่
  • การใช้งานแบบเลือก: หากไม่ต้องการเปิดเผยการให้เหตุผลแบบดิบๆ แก่ผู้ใช้ปลายทาง คุณสามารถละเว้นฟิลด์ thoughtProcess หรือละเว้นการใช้งาน onNewThought ได้ เมธอด onNewThought มีการใช้งานเริ่มต้นแบบว่างเพื่อให้มั่นใจว่าสามารถใช้งานร่วมกับเวอร์ชันก่อนหน้าได้

ดูเคล็ดลับเพิ่มเติมได้ที่ โหมดการคิดใน Gemma โปรดทราบว่าปัจจุบัน AICore ยังไม่รองรับการสนทนาหลายรอบ