שימוש במצב חשיבה

הנחיות במצב חשיבה גורמות למודל להציג את תהליך ההיגיון שלו לפני שהוא יוצר תשובה סופית. מצב 'חשיבה' משפר את הדיוק של המודל בקריאה לפונקציות, והוא מתאים במיוחד למתמטיקה, לפתרון בעיות ולמשימות מורכבות אחרות שדורשות חשיבה רציונלית.

כשמצב החשיבה מופעל, הפלט של המודל מחולק לשני חלקים:

  1. תהליך החשיבה: השלבים הפנימיים של החשיבה או התכנון שהמודל מבצע.
  2. תשובה: התשובה הסופית שנוצרה עבור המשתמש.

דרישות מוקדמות

מצב החשיבה פועל במכשירים עם Gemini Nano V4 ומעלה. אתם יכולים לבדוק את מצב החשיבה באמצעות תוכנית התצוגה המקדימה למפתחים בכל מכשיר עם AICore.

הפעלת מצב חשיבה

כדי להשתמש במצב חשיבה, צריך להגדיר את הדגל enableThinking לערך true בפונקציית ה-builder של generateContentRequest:

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

גישה למחשבות

ערכת ה-SDK של ML Kit מספקת דרכים שונות לגשת למחשבות שקדמו לתגובה של מודל, בהתאם לסוג ההטמעה שבה אתם משתמשים: הטמעה לא רציפה או הטמעה רציפה.

מצב ללא סטרימינג

בשיחות רגילות שאינן סטרימינג, תהליך החשיבה הרציונלית מוחזר כחלק מהתגובה המלאה. אפשר לגשת לתהליך הזה באמצעות המאפיין 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
}

שיטות מומלצות

ריכזנו כאן כמה שיטות מומלצות לשימוש במצב חשיבה:

  • אינדיקטורים בממשק המשתמש: שלבי החשיבה הרציונלית יכולים לקחת זמן ליצירה, ולכן הצגת המחשבות או אינדיקטור של 'חשיבה' במצב סטרימינג יכולה לשפר משמעותית את הביצועים הנתפסים, כי היא מראה למשתמש שהמודל פעיל.
  • הטמעה סלקטיבית: אם אתם לא רוצים לחשוף את הנימוקים הגולמיים למשתמשי הקצה, אתם יכולים להתעלם מהשדה thoughtProcess או להשמיט את ההטמעה של onNewThought. לשיטה onNewThought יש הטמעה ריקה כברירת מחדל כדי להבטיח תאימות לדורות קודמים.

טיפים נוספים זמינים במאמר מצב חשיבה ב-Gemma. שימו לב שכרגע אין תמיכה בשיחות מרובות שלבים ב-AICore.