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