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