استخدام "وضع التفكير"

يطلب "وضع التفكير" من النموذج عرض عملية الاستدلال قبل إنشاء ردّ نهائي. يُحسِّن وضع "المفكّر" دقة استدعاء الدوال في النموذج، ويعمل بشكل جيد مع الرياضيات وحلّ المشاكل ومهام الاستدلال المعقّدة الأخرى.

عند تفعيل وضع التفكير، يتم تقسيم مخرجات النموذج إلى جزأين:

  1. عملية التفكير: خطوات الاستدلال أو التخطيط الداخلي التي يتّبعها النموذج
  2. الردّ: الإجابة النهائية التي تم إنشاؤها للمستخدم.

المتطلبات الأساسية

يعمل "وضع التفكير" على الأجهزة المزوّدة بالإصدار 4 من Gemini Nano والإصدارات الأحدث. يمكنك اختبار "وضع التفكير" من خلال برنامج معاينة المطوّر على أي جهاز يتضمّن AICore.

تفعيل وضع التفكير

لاستخدام وضع التفكير، يجب عليك الموافقة من خلال ضبط علامة enableThinking على true في دالة الإنشاء 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.