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

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

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

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

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

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

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

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

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 ยังไม่รองรับการสนทนาแบบหลายเทิร์นในขณะนี้