Menu
flag Ar iconالعربيةdown icon

شجرة الأفكار (Tree of Thought): كيف تعمل، وأمثلة

شجرة الأفكار (tree of thought) تجعل النموذج يستكشف عدة حلول جزئية، ويحكم على كل منها، ويُبقي الفروع الواعدة فقط. إليك كيف تعمل الطريقة الأصلية، ونسخة بموجّه واحد يمكنك تجربتها، وأين تقصر تلك النسخة.

يمكنك تعديل كل موجّه في هذه الصفحة ثم فتحه في ChatGPT أو Claude أو أي تطبيق ذكاء اصطناعي آخر.

شجرة الأفكار (tree of thought prompting) تجعل النموذج اللغوي يعمل على المسألة كما قد تعمل أنت على الورق: تكتب بضع خطوات تالية ممكنة، وتحكم على أيها يبدو واعدًا، وتتابعه، وتترك الفرع عندما لا يقود إلى شيء. الفكرة من بحث Yao وزملائه عام 2023، "Tree of Thoughts: Deliberate Problem Solving with Large Language Models". وهي توسّع سلسلة التفكير، التي تتبع خطًا واحدًا من الاستدلال، إلى بحث عبر خطوط كثيرة.

تشرح هذه الصفحة كيف تعمل الطريقة الأصلية، وتعطيك نسخة بموجّه واحد تجربها في ChatGPT أو Claude أو Gemini، وتعرض الحلقة في الكود لحين لا يكفي موجّه واحد.

كيف تعمل شجرة الأفكار

يقسّم البحث الطريقة إلى أربعة قرارات.

  1. ما الذي يُعدّ فكرة. الفكرة خطوة وسيطة واحدة، صغيرة بما يكفي ليُحسن النموذج إنتاجها وكبيرة بما يكفي للحكم عليها. في لغز رياضي هي معادلة واحدة، وفي مهمة كتابة هي خطة قصيرة.
  2. كيف تُولَّد الأفكار. من الحل الجزئي الحالي، يقترح النموذج عدة خطوات تالية مرشّحة، إما بتوليدها بشكل مستقل أو بذكرها في رد واحد.
  3. كيف تُقيَّم. يُطلب من النموذج تقييم كل حل جزئي. استخدم البحث أسلوبين: تقييم كل حالة وحدها (مثلًا "مؤكد" أو "مرجّح" أو "مستحيل")، أو عرض عدة حالات على النموذج وتركه يصوّت للأفضل.
  4. كيف يجري البحث. يُبقي برنامج أفضل بضع حالات في كل مستوى (البحث بالعرض أولًا)، أو يتبع فرعًا واحدًا إلى العمق ويتراجع عندما يقول التقييم إنه ميؤوس منه (البحث بالعمق أولًا).

خذ مهمة لعبة 24 من البحث: استخدم الأعداد 4 و9 و10 و13 مرة واحدة لكل منها، بالعمليات الأربع الأساسية، لتصل إلى 24. سلسلة التفكير تلتزم بأول معادلة وعليها أن تتعايش معها. أما شجرة الأفكار فقد تجرّب 13 - 9 = 4 و10 - 4 = 6 و4 + 9 = 13 خطواتٍ أولى، وتسأل النموذج أي الأعداد المتبقية ما زال يمكنها الوصول إلى 24، وتُسقط الطريق المسدود (10 و13 و13 لا يمكنها صنع 24)، وتنتهي عند (10 - 4) * (13 - 9) = 24.

ماذا أظهر البحث

اختار المؤلفون ثلاث مهام وجدها GPT-4 صعبة حتى مع سلسلة التفكير، لأن كلًا منها يحتاج إلى تخطيط أو بحث: لعبة 24، ومهمة كتابة إبداعية بجمل ختامية ثابتة، وكلمات متقاطعة مصغّرة 5x5. مع GPT-4، حلّ البحث الشجري ألغاز لعبة 24 أكثر بكثير مما حلّته سلسلة التفكير أو توليد عدة سلاسل وأخذ إجابة الأغلبية، وأدى أفضل أيضًا في المهمتين الأخريين.

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

شجرة الأفكار في موجّه واحد

يمكنك تقريب الفكرة في رسالة واحدة: اطلب عدة مقاربات مختلفة، وحكمًا على كل منها وفق الحقائق التي أعطيتها، وتطوير الناجية فقط. التبويبان التاليان يرسلان المسألة نفسها بالطريقتين.

تطبيق الويب لدينا سريع للمستخدمين في أوروبا لكنه يستغرق نحو 12 ثانية ليُحمَّل للمستخدمين في أستراليا. الخادم في فرانكفورت. عند تحميل الصفحة، يرسل المتصفح 40 طلب API صغيرًا، واحدًا بعد الآخر. ما السبب وماذا نفعل؟
Try it
Example replyReplies vary between models and runs.

السبب الرئيسي هو المسافة الفعلية بين أستراليا وخادمك في فرانكفورت. كل طلب يجب أن يسافر إلى أوروبا ويعود، ومع 40 طلبًا في كل تحميل صفحة، يتراكم هذا التأخير.

الحل المعتاد هو CDN (شبكة توصيل المحتوى). تحتفظ شبكة CDN بنسخ من موقعك على خوادم حول العالم، فيحمّل المستخدمون في أستراليا من موقع قريب بدلًا من فرانكفورت. ومعظم المزوّدين يتيحون وضعها أمام موقع قائم دون تغيير الكود.

يمكنك أيضًا ضغط الصور وتفعيل التخزين المؤقت في المتصفح لتقليل وقت التحميل أكثر.

الرد المباشر ليس سخيفًا، بل إنه يعدّ الطلبات الأربعين، لكنه أخذ أول تفسير ملائم ("المسافة") ومضى به. أما الرد المتفرع ففحص كل تفسير مقابل التفاصيل في الموجّه، وهكذا لاحظ أن عبارة "واحدًا بعد الآخر" أهم من "أستراليا"، وأن شبكة CDN ستترك استدعاءات API دون تغيير.

قالب قابل لإعادة الاستخدام

البنية نفسها تصلح لقرارات التصميم والخطط. املأ المسألة والمعايير التي تهمك، ويعرض الرد القيم الافتراضية بعد ملئها.

تفرّع، احكم، اختر
Fill in
المسألة: فريقنا المكوّن من ثلاثة أشخاص يحتاج إلى اختيار طريقة نشر واجهة API صغيرة مكتوبة بـ Node.js. المعايير: التكلفة الشهرية، ووقت الإعداد، والصيانة المستمرة اقترح 3 مقاربات مختلفة فعلًا. لكل منها، قيّمها مقابل كل معيار في سطر قصير واحد وأعطِ حكمًا: إبقاء أو إسقاط. ثم طوّر أفضل مقاربة فقط إلى خمس خطوات أولى محددة. إذا تعادلت مقاربتان، فقل ما المعلومة التي ستحسم بينهما.
Try it
Example replyReplies vary between models and runs.

منصة كخدمة (مستضيف تطبيقات مُدار) التكلفة: متوسطة، وترتفع مع الزيارات. الإعداد: أقل من ساعة من مستودع Git. الصيانة: منخفضة، المستضيف يحدّث نظام التشغيل. إبقاء.

خادم افتراضي خاص بكم التكلفة: الأقل. الإعداد: يوم للخادم وTLS ومدير العمليات. الصيانة: مرتفعة، التحديثات وإعادة التشغيل عليكم. إسقاط لفريق من ثلاثة.

الدوال بلا خادم (Serverless) التكلفة: منخفضة جدًا على نطاق صغير. الإعداد: متوسط، قد يحتاج تطبيق الخادم الحالي إلى إعادة هيكلة. الصيانة: منخفضة، لكن البدء البارد يضيف تأخيرًا. إبقاء كخيار ثانٍ.

الأفضل: منصة كخدمة. الخطوات الأولى:

  1. أضيفوا سكربت تشغيل واقرؤوا المنفذ من متغير بيئة.
  2. انقلوا الأسرار إلى إعدادات البيئة لدى المستضيف.
  3. اربطوا المستودع وانشروا الفرع الرئيسي.
  4. أضيفوا نقطة نهاية لفحص السلامة.
  5. اضبطوا تنبيهًا للإنفاق.

أين يقصر الموجّه الواحد

نسخة الموجّه الواحد تحتفظ بمفردات الطريقة لكنها تفقد معظم آلياتها.

  • لا تراجع حقيقي. يكتب النموذج كل الفروع والأحكام في مرور واحد. إذا فشلت الخطوة 3 من الفرع المختار، فلا شيء يعيده إلى الخطوة 1.
  • الحَكَم هو الكاتب. الرد نفسه الذي اقترح الفكرة يقيّمها، فيميل إلى تفضيل الفرع الذي كان في ذهنه أصلًا. في البحث، التقييم استدعاء منفصل يجري بعد وجود المرشّحين.
  • الفروع ليست مستقلة. الأفكار المذكورة في رد واحد تؤثر في بعضها، وكثيرًا ما تنتهي تنويعات على فكرة واحدة. طلب مقاربات "مختلفة فعلًا"، كما يفعل القالب، يقاوم ذلك لكنه لا يلغيه.
  • نماذج الاستدلال تتفرع أصلًا. النماذج التي تفكر قبل أن تجيب تجرّب المقاربات وتستبعدها داخليًا. معها يضيف الموجّه دقة أقل، وقيمته الباقية أنك ترى الخيارات المرفوضة وتستطيع الاعتراض على الاستدلال.

تشغيل بحث شجري حقيقي في الكود

الطريقة الكاملة حلقة في برنامجك: ولّد خطوات مرشّحة، وقيّم كل حل جزئي في استدعاء منفصل، وأبقِ أفضل بضعة، وكرر. هذه نسخة مصغّرة بالبحث بالعرض أولًا باستخدام مكتبة Python من OpenAI، والشكل نفسه يعمل مع أي مزوّد.

from openai import OpenAI

client = OpenAI()
MODEL = "your-model-id"  # e.g. from your provider's model list

def ask(prompt, temperature=0.7):
    response = client.chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": prompt}],
        temperature=temperature,
    )
    return response.choices[0].message.content.strip()

def propose(problem, path, k=3):
    steps = "\n".join(path) or "(none yet)"
    prompt = f"Problem: {problem}\nSteps so far:\n{steps}\nPropose the next step only."
    return [ask(prompt) for _ in range(k)]

def score(problem, path):
    steps = "\n".join(path)
    prompt = (f"Problem: {problem}\nPartial solution:\n{steps}\n"
              "How likely is this to lead to a correct solution? Reply with a number from 1 to 10 only.")
    try:
        return float(ask(prompt, temperature=0))
    except ValueError:
        return 0.0

def tree_of_thought(problem, depth=3, keep=2):
    frontier = [[]]
    for _ in range(depth):
        candidates = [path + [step] for path in frontier for step in propose(problem, path)]
        candidates.sort(key=lambda p: score(problem, p), reverse=True)
        frontier = candidates[:keep]
    return frontier[0]

مع depth=3 وkeep=2 وثلاثة اقتراحات لكل حالة، يجري التشغيل الواحد نحو ثلاثين استدعاءً. في مهام كثيرة، يحقق الاتساق الذاتي (عدة إجابات كاملة وتصويت الأغلبية) أو تتابع ثابت من الخطوات عبر سلسلة الموجّهات معظم الفائدة باستدعاءات أقل. الجأ إلى الشجرة عندما تحتاج المهمة إلى بحث: حركات أولى ممكنة كثيرة، وطريقة لاكتشاف الطريق المسدود مبكرًا.

الأسئلة الشائعة

ما هي شجرة الأفكار في كتابة الموجّهات؟

شجرة الأفكار طريقة لحل المسائل يقترح فيها النموذج عدة خطوات تالية ممكنة، ويقيّم مدى جدوى كل منها، ويتابع أفضل الفروع فقط، ويتراجع عندما يفشل فرع. تأتي من بحث Yao وزملائه عام 2023 "Tree of Thoughts: Deliberate Problem Solving with Large Language Models". في البحث يدير برنامجٌ التفرعَ والتقييم ويستدعي النموذج مرات كثيرة.

ما الفرق بين شجرة الأفكار وسلسلة التفكير؟

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

هل يمكنني استخدام شجرة الأفكار في ChatGPT أو Claude؟

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

هل ما زالت شجرة الأفكار مفيدة مع نماذج الاستدلال؟

أقل مما كانت. النماذج التي تفكر قبل أن تجيب تجرّب المقاربات وتستبعدها داخليًا أصلًا، فطلب التفرع منها يضيف أقل. لكن نسخة الموجّه الواحد تظل مفيدة عندما تريد رؤية الخيارات وأسباب رفضها، حتى تتحقق من الحكم بنفسك.

متى أستخدم شجرة الأفكار؟

استخدمها في المسائل التي لها عدة مقاربات معقولة وتكون الفكرة الأولى فيها خاطئة كثيرًا: التخطيط، وقرارات التصميم، وتشخيص مشكلة من أعراضها، والألغاز التي تحتاج إلى بحث. أما السؤال الذي له طريق واحد واضح، فـسلسلة التفكير العادية أرخص وجيدة بالقدر نفسه.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن