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

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

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

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

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

מצב החשיבה פועל במכשירים עם Gemini Nano בגרסה 4 ומעלה. אתם יכולים לבדוק את מצב החשיבה דרך תוכנית התצוגה המקדימה למפתחים בכל מכשיר שמופעל בו 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. ל-method‏ onNewThought יש הטמעה ריקה כברירת מחדל כדי להבטיח תאימות לדורות קודמים.

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