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

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

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

  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
}

الوصول إلى الأفكار

توفّر حزمة تعلّم الآلة طرقًا مختلفة للوصول إلى الأفكار التي تسبق ردّ النموذج، وذلك حسب ما إذا كنت تستخدم عملية تنفيذ غير متواصلة أو متواصلة.

الوضع غير المتواصل

في طلبات عدم البث العادية، يتم عرض عملية التحليل كجزء من الردّ الكامل. يمكنك الوصول إلى هذه العملية باستخدام السمة 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.