إطار ReAct: فكّر وتصرّف ولاحظ
تعرّفوا إلى حلقة ReAct التي يُنشئ فيها النموذج Thought، ويختار Action، ويتلقى Observation، ويكرر ذلك حتى يصل إلى Final Answer.
إطار ReAct: فكّر وتصرّف ولاحظ درس مجاني في AI Engineering Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Engineering Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Engineering Academy 4 دروس في المجموع.
ما إطار عمل ReAct؟
ReAct (الاستدلال + التنفيذ) هو إطار للمطالبات يدمج بين الاستدلال الداخلي للنموذج والإجراءات الخارجية بالتناوب. فبدلًا من إنتاج إجابة نهائية فورًا، ينشئ النموذج فكرة، ويختار إجراءً، ويتلقى ملاحظة ناتجة عن تنفيذ ذلك الإجراء، ثم يكرر الدورة حتى يتمكن من تقديم إجابة نهائية.
حلقة التفكير والتنفيذ والملاحظة
تتكون كل دورة من حلقة ReAct من ثلاث مراحل:
- الفكرة: يستدل النموذج بشأن ما يعرفه وما يحتاج إلى اكتشافه تاليًا.
- الإجراء: يستدعي النموذج أداة، مثل البحث على الويب أو الآلة الحاسبة أو الاستعلام عن قاعدة بيانات.
- الملاحظة: تُعاد نتيجة استدعاء الأداة وتُضاف إلى سياق النموذج.
تستمر الحلقة حتى يُصدر النموذج Final Answer: مع استنتاجه.
مثال على تتبع ReAct
إليك تتبعًا عمليًا لوكيل ReAct يجيب عن السؤال "ما عدد سكان طوكيو؟" باستخدام أداة بحث. لاحظ كيف تبني كل خطوة على الملاحظة السابقة.
# ReAct trace (pseudocode showing the reasoning loop)
# Iteration 1
Thought_1 = 'I need to find the current population of Tokyo. I will search for it.'
Action_1 = 'search("Tokyo population 2024")'
Observation_1 = 'According to the 2023 census, Tokyo has approximately 13.96 million people in the city proper.'
# Iteration 2
Thought_2 = 'I have the population. I can now give a final answer.'
Final_Answer = 'The population of Tokyo is approximately 13.96 million people.'لماذا يتفوق ReAct على المطالبات المباشرة
تطلب المطالبات المباشرة من النموذج الإجابة اعتمادًا على ذاكرته، ما يؤدي إلى هلوسات في الأسئلة الواقعية. تحسّن مطالبات سلسلة الأفكار الاستدلال، لكنها تظل عاجزة عن الوصول إلى المعلومات الخارجية. يجمع ReAct بين الأمرين: آثار استدلال صريحة مثل سلسلة الأفكار، والقدرة على جمع معلومات حديثة من خلال استدعاءات الأدوات.
بنية مطالبة ReAct
تعلّم مطالبة النظام الخاصة بـ ReAct النموذجَ التنسيقَ الدقيق الذي ينبغي استخدامه. فهي تسرد الأدوات المتاحة مع أوصافها، وتعرض أمثلة على نمط الفكرة/الإجراء/الملاحظة/الإجابة النهائية. ويتعلم النموذج اتباع هذا التنسيق بدقة من خلال المطالبة.
REACT_SYSTEM_PROMPT = '''You are an AI assistant with access to these tools:
- search(query: str): Search the web for up-to-date information.
- calculator(expression: str): Evaluate a mathematical expression.
- lookup(topic: str): Look up a topic in the knowledge base.
Always follow this exact format:
Thought: [your reasoning about what to do next]
Action: tool_name(arguments)
Observation: [result of the action, provided by the system]
... (repeat as needed)
Final Answer: [your final response to the user]
Begin!'''تحليل الفكرة والإجراء والملاحظة
يعمل رمز تطبيقك بوصفه بيئة التشغيل لحلقة ReAct. بعد كل استجابة من النموذج، حلّل المخرجات لاستخراج اسم الإجراء ومعطياته، ونفّذ دالة Python المقابلة، ونسّق النتيجة على شكل ملاحظة، وأضفها إلى سجل الرسائل، ثم استدعِ النموذج مرة أخرى.
import re
def parse_react_output(text: str):
'''Extract action name and argument from a ReAct model output.'''
action_match = re.search(r'Action:\s*(\w+)\((.*)\)', text)
if action_match:
tool_name = action_match.group(1)
tool_input = action_match.group(2).strip('\"\' ')
return tool_name, tool_input
if 'Final Answer:' in text:
answer = text.split('Final Answer:')[-1].strip()
return 'final', answer
return None, Noneحلقة تنفيذ الوكيل
تستدعي حلقة التنفيذ LLM، وتحلل مخرجاته، وتوجّه الأداة، وتضيف الملاحظة، ثم تكرر العملية. ويمنع الحارس max_iterations الحلقات اللانهائية عندما يعجز النموذج عن حل مهمة.
from openai import OpenAI
client = OpenAI()
def run_react_agent(user_query: str, tools: dict, max_iterations: int = 10) -> str:
messages = [
{'role': 'system', 'content': REACT_SYSTEM_PROMPT},
{'role': 'user', 'content': user_query}
]
for i in range(max_iterations):
resp = client.chat.completions.create(model='gpt-4o', messages=messages)
output = resp.choices[0].message.content
messages.append({'role': 'assistant', 'content': output})
tool_name, tool_input = parse_react_output(output)
if tool_name == 'final':
return tool_input
if tool_name and tool_name in tools:
observation = tools[tool_name](tool_input)
messages.append({'role': 'user', 'content': f'Observation: {observation}'})
else:
messages.append({'role': 'user', 'content': 'Observation: Tool not found.'})
return 'Max iterations reached without a final answer.'تسجيل أدوات بسيطة
الأدوات ليست سوى دوال Python. سجّلها في قاموس يربط اسم الأداة بالدالة. وتتلقى الدوال وسيطًا نصيًا وتُرجع نتيجة نصية، ما يحافظ على بساطة الواجهة واتساقها مع ما يتوقع النموذج رؤيته كملاحظات.
import math
def calculator_tool(expression: str) -> str:
try:
# Restrict to safe math expressions
allowed_names = {k: v for k, v in math.__dict__.items() if not k.startswith('_')}
result = eval(expression, {'__builtins__': {}}, allowed_names)
return str(result)
except Exception as e:
return f'Error: {e}'
def search_tool(query: str) -> str:
# Stub — replace with real web search API
return f'Top result for "{query}": [placeholder result]'
# Register tools
tools = {
'calculator': calculator_tool,
'search': search_tool
}الاستدلال متعدد الخطوات باستخدام ReAct
يتألق ReAct في الأسئلة متعددة الخطوات التي تتطلب ربط عدة أجزاء من المعلومات. على سبيل المثال: "من الرئيس التنفيذي للشركة التي تصنع GPT-4، وفي أي عام تأسست تلك الشركة؟" يبحث الوكيل أولًا عن الرئيس التنفيذي، ثم يستخدم النتيجة للبحث عن سنة تأسيس الشركة؛ أي استدعاءان منفصلان للأداة يربط بينهما الاستدلال.
ReAct مقابل سلسلة الأفكار الخالصة
تحسّن سلسلة الأفكار (CoT) الاستدلال بجعل النموذج يفكر خطوة بخطوة، لكنها لا تتيح له الوصول إلى المعلومات الخارجية. ويضيف ReAct الإجراءات إلى CoT، ما يتيح للنموذج جلب بيانات حقيقية، وإجراء حسابات، والتحقق من الحقائق. والمقابل هو أن ReAct أبطأ (بسبب استدعاءات API المتعددة)، لكنه أدق بكثير في المهام التي تتطلب معرفة حديثة أو متخصصة.
تصحيح أخطاء ReAct باستخدام آثار التتبع
عندما ينتج وكيل ReAct إجابة خاطئة، افحص تتبع الفكرة/الإجراء/الملاحظة كاملًا. تشمل أنماط الفشل الشائعة: اختلاق النموذج لملاحظة بدلًا من استدعاء الأداة، وأخطاء التحليل التي تتجاوز تنفيذ الأداة، والاستدلال غير الصحيح في مرحلة الفكرة الذي يؤدي إلى اختيار إجراء خاطئ.
- سجّل كل رسالة تُضاف إلى السياق
- تحقق من إضافة مخرجات الأداة فعليًا قبل استدعاء النموذج التالي
- تحقق من أن التعبير النمطي للإجراء يطابق تنسيق مخرجات النموذج
تحقق سريع
اختبر مدى فهمك لإطار عمل ReAct.
مراجعة الدرس
في هذا الدرس تعلمت أن: ReAct يدمج الفكرة والإجراء والملاحظة بالتناوب في حلقة، وأن رمز تطبيقك يعمل كبيئة تشغيل تنفّذ الأدوات وتضيف الملاحظات، وأن حراس max_iterations يمنعون حلقات الوكلاء اللانهائية. بعد ذلك سنتعلم تعريف أدوات مخصصة لكي يتمكن وكيلك من تنفيذ ما يحتاج إليه تطبيقك تحديدًا.
تعلم Python مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «إطار ReAct: فكّر وتصرّف ولاحظ» مجاني؟
نعم — نص درس «إطار ReAct: فكّر وتصرّف ولاحظ» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Engineering Academy، انتقل إلى CoddyKit PRO. تتضمن دورة AI Engineering Academy 4 دروس في المجموع.
ماذا ستتعلم في «إطار ReAct: فكّر وتصرّف ولاحظ»؟
تعرّفوا إلى حلقة ReAct التي يُنشئ فيها النموذج Thought، ويختار Action، ويتلقى Observation، ويكرر ذلك حتى يصل إلى Final Answer. تتمرن على AI Engineering Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Engineering Academy؟
لا تُشترط خبرة سابقة. AI Engineering Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «إطار ReAct: فكّر وتصرّف ولاحظ»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Engineering Academy هذا؟
نعم. كل درس في AI Engineering Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إطار ReAct: فكّر وتصرّف ولاحظ
- تعريف الأدوات لوكيلكم
- بناء وكيل ReAct باستخدام LangChain
- التعامل مع إخفاقات الوكلاء والحلقات