بناء وكيل استدلال ReWOO باستخدام IBM Granite

مؤلف

Jobit Varughese

Technical Content Writer

IBM

أصبحت النماذج اللغوية الكبيرة (LLMs) ونُسخها المحسَّنة، نماذج اللغة المعززة (ALMs)، العمود الفقري لأنظمة الذكاء الاصطناعي الحديثة. من خلال دمج قدرات توليد اللغة القوية مع تقنيات استرجاع المعرفة الخارجية مثل التوليد المعزز بالاسترجاع (RAG)، تُتيح هذه النماذج إمكانيات متقدمة في الاستدلال، والإجابة عن الأسئلة، وأتمتة المهام في مجالات متنوعة. ومع ذلك، على الرغم من قدراتها الرائعة، غالبًا ما تواجه هذه النماذج تحديات مثل عدم اتساق المتانة عبر الأنظمة، والاستخدام المرتفع للرموز المميزة، وبطء أوقات الاستجابة، وعدم الكفاءة الناجمة عن التكرار في المطالبات والسياق الزائد عن الحاجة، عند التعامل مع المهام المعقدة. تزيد هذه القيود من التكاليف التشغيلية وتعيق قابلية التوسع والأداء في الوقت الفعلي.

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

المنهجية المتَّبعة في ReWOO

يتمحور سير عمل ReWOO حول ثلاثة عناصر أساسية: التفكير المتسلسل، واستدعاء الأدوات، والتلخيص. تتم تنفيذ هذه العناصر في هيكل معياري يتكون من ثلاث وحدات: وحدة التخطيط، ووحدة التنفيذ، ووحدة الحل.

وحدة التخطيط

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

وحدة التنفيذ

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

وحدة الحل

تجمع وحدة الحل جميع الرؤى التي تم جمعها لإنشاء استجابة نهائية جديدة وجيدة التنظيم. يساعد هذا الفصل المعياري على ضمان استدلال فعَّال ودقيق وقابل للتوسُّع باستخدام نماذج لغوية كبيرة.

توفِّر أطر العمل مثل LangChain وLangGraph أدوات قوية لتنفيذ بنية ReWOO باستخدام نماذج من OpenAI وIBM Granite أو أدوات متخصصة مثل Serper وTavily للبحث.

في هذا الدليل، ستتعرَّف على كيفية بناء وكيل ReWOO يؤدي مهمة تلخيص المحتوى. يمكن لهذا الوكيل:

  • تقسيم مهمة عالية المستوى إلى أسئلة فرعية
  • استخدام بحث الويب لجمع السياق ذي الصلة لكل سؤال فرعي
  • إنشاء الإجابات باستخدام IBM Granite
  • تلخيص النتائج في الاستجابة النهائية

هذه البنية مفيدة في الحالات التالية:

  • مهام التلخيص
  • الإجابة عن الأسئلة بالاعتماد على المعرفة الخارجية
  • الاستدلال الديناميكي المدعوم بالأدوات

التقنيات المستخدمة

يستفيد هذا البرنامج التعليمي خطوة بخطوة من تقنيات الذكاء الاصطناعي المتطورة، بما في ذلك:

  1. IBM Granite Instruct: نموذج لغوي كبير قوي مخصص لتنفيذ التعليمات العامة، مثالي لمساعدي الذكاء الاصطناعي في مجالات الأعمال وغيرها.
  2. ‏Transformers: مكتبة Python شائعة الاستخدام توفِّر أدوات لتحميل النماذج اللغوية مثل IBM Granite، وتحويل النصوص إلى رموز، وتشغيل هذه النماذج. تُتيح معالجة النصوص بكفاءة وتوليد المخرجات من النموذج.

الخطوات

الخطوة 1: إعداد البيئة

يوجِّهك هذا الدليل إلى إعداد بيئة التطوير المحلية لتشغيل خط استدلال بأسلوب ReWOO باستخدام Jupyter Notebook. ستستخدم نموذج لغة IBM Granite وSerper.dev لاسترجاع بحث الويب المباشر.

ملاحظة: لا يلزم وجود وحدة معالجة رسومات (GPU)، ولكن قد يكون التنفيذ أبطأ على الأنظمة التي تعمل بمعالج CPU. تفتح هذه الخطوة بيئة دفتر ملاحظات حيث يمكنك نسخ التعليمات البرمجية من هذا البرنامج التعليمي. هذا البرنامج التعليمي متاح أيضًا على GitHub.

الخطوة 2: تثبيت التبعيات المطلوبة

هذه المكتبات مطلوبة لتشغيل مسار ReWOO والتفاعل مع الأدوات الخارجية:

transformers: لتحميل وتشغيل النماذج اللغوية الكبيرة IBM Granite.

torch: إطار تعلُّم عميق ضروري لتشغيل النموذج بكفاءة.

accelerate: لتحسين أداء النموذج عبر مختلَف الأجهزة (اختياري).

requests: لإرسال طلبات HTTP من نوع POST إلى واجهات برمجة التطبيقات الخارجية (مثل Serper).

!pip install transformers accelerate torch requests

الخطوة 3: استيراد المكتبات المطلوبة

في هذه الخطوة، قم باستيراد مكتبات Python اللازمة لبناء العناصر الأساسية لمسار معالجة ReWOO.

transformers.AutoTokenizer: لتحميل أداة تحويل النص إلى رموز مميزة متوافقة مع النموذج اللغوي.

transformers.AutoModelForCausalLM: لتحميل النموذج اللغوي المدرَّب مسبقًا IBM Granite لتوليد الردود.

transformers.pipeline: يوفر واجهة عالية المستوى لإنشاء خط توليد نصوص بسرعة باستخدام أداة الترميز والنموذج.

import requests
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline

الخطوة 4: تحميل نموذج IBM Granite وإنشاء مسار توليد النص

في هذه الخطوة، نقوم بتحميل النموذج اللغوي IBM Granite وتهيئة خط توليد النصوص باستخدام مكتبة Transformers من Hugging Face. استكشِف نموذج Granite 3.2 2B Instruct على Hugging Face هنا.

model_id = "ibm-granite/granite-3.2-2b-instruct": لتحديد اسم نقطة التحقق لنموذج IBM Granite المستضافة على منصة Hugging Face. تم تحسين هذا النموذج لمهام تنفيذ التعليمات.

AutoTokenizer.from_pretrained(model_id): لتحميل أداة تحليل الرموز المميزة المرتبطة بالنموذج المحدد. وهي مسؤولة عن تحويل الإدخال إلى رموز مميزة وفك تشفير رموز الإخراج مرة أخرى إلى نص.

AutoModelForCausalLM.from_pretrained(model_id): لتحميل النموذج اللغوي (Granite 3.2 2B instruct) لمهام إنشاء النصوص مثل الإجابة عن الأسئلة أو التلخيص.

pipeline("text-generation", model=model, tokenizer=tokenizer): يُنشئ مسارًا عالي المستوى لتوليد النصوص يجمع بين النموذج وأداة تحليل الرموز المميزة، ما يجعل من السهل توليد الردود من الموجِّهات.

model_id = "ibm-granite/granite-3.2-2b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
generator = pipeline("text-generation", model=model, tokenizer=tokenizer)

الخطوة 5: إعداد واجهة برمجة تطبيقات Serper لاسترجاع نتائج البحث على الويب

في هذه الخطوة، نحدِّد دالة تعمل كوحدة تنفيذ في بنية ReWOO. تستخدم وحدة التنفيذ هذه أداة بحث على الويب، Serper.dev، لاسترداد المعلومات ذات الصلة والمحدَّثة من الإنترنت لدعم الاستدلال وإنشاء الإجابة. تُعَد Serper.dev واجهة برمجة تطبيقات سريعة وخفيفة الوزن توفِّر نتائج بحث Google بتنسيق منظم، ما يجعلها مثالية لاسترجاع المعلومات في الوقت الفعلي في سير عمل الذكاء الاصطناعي.

يُتيح هذا الإعداد لنظام ReWOO "مراقبة" العالم الحقيقي من خلال الاستعلام من مصادر المعرفة الخارجية قبل أن يتخذ النموذج اللغوي قراراته النهائية.

لاستخدام Serper في مسار ReWOO:

  1. قم بزيارة https://serper.dev وأنشئ حسابًا مجانيًا.
  2. بعد التسجيل، انتقِل إلى لوحة المعلومات وانسخ مفتاح API.
  3. خزِّن مفتاح API بشكل آمن في الكود. في الوقت الحالي، قم بتعيينه مباشرة كما هو موضح بعد هذا:

SERPER_API_KEY = "<YOUR_API_KEY>" # استبدِل هذا بمفتاحك الفعلي

ملاحظة: لا تقم أبدًا بتحميل مفتاح API الخاص بك إلى مستودعات عامة. لإعدادات الإنتاج أو الفريق، استخدِم ملفات env. أو متغيرات البيئة للحفاظ على أمانها.

def query_serper(question, num_results=3): لتحديد دالة تأخذ سؤال بحث وتُنتج مقتطفات ذات صلة من أعلى نتائج البحث.

payload = {"q": question, "num": num_results}: لإعداد حمولة الاستعلام مع مصطلح البحث وعدد النتائج المُراد عرضها.

response = requests.post(...): لإرسال طلب POST إلى واجهة برمجة تطبيقات Serper باستخدام استعلامك ورؤوس الطلب.

response.raise_for_status(): لإصدار رسالة خطأ في حال كانت استجابة واجهة API غير صالحة أو فشلت.

snippets = [...]: لاستخراج نص المقتطف من نتائج البحث الطبيعية.

return "\n".join(snippets): يُدمج المقاطع ويعيدها كسلسلة واحدة، لتُستخدم كسياق للنموذج اللغوي.

ملاحظة: لدمج المقتطفات وإرجاعها كسلسلة واحدة لتعمل كمرجع سياقي للنموذج اللغوي. تأكَّد من أن مفتاح API الخاص بك صالح وغير محدود من حيث السرعة عند الاختبار.

SERPER_API_KEY = "your_serper_api_key_here" # Replace with your actual key
def query_serper(question, num_results=3):
    url = "https://google.serper.dev/search"
    headers = {
            "X-API-KEY": SERPER_API_KEY,
            "Content-Type": "application/json"
}
    payload = {"q": question, "num": num_results}
    response = requests.post(url, headers=headers, json=payload)
    response.raise_for_status()
    data = response.json()
    snippets = [item.get("snippet", "") for item in data.get("organic", [])]
    return "\n".join(snippets)

الخطوة 6: إنشاء إجابات مستنيرة باستخدام دالة الخبير

في هذه الخطوة، نحدِّد وظيفة expert()، والتي تعمل كوحدة حل في بنية ReWOO. تجمع وحدة الحل الأدلة الخارجية المستردة وتُنشئ استجابة نهائية باستخدام النموذج اللغوي.

def expert(question: str) -> str: يأخذ الدالة expert() سؤالًا (سلسلة) وتُعيد إجابة (سلسلة) تم إنشاؤها بواسطة نموذج Granite. وتعمل عن طريق البحث في الويب باستخدام Serper.dev، من خلال جمع المعلومات ذات الصلة واستخدامها لتوليد استجابة واضحة وكاملة.

context = query_serper(question): يستخدم أداة البحث على الويب Serper لاسترداد المعلومات ذات الصلة (وحدة التنفيذ).

prompt = f"""...""": يُنشئ موجِّهًا يوجِّه النموذج للإجابة باستخدام السياق المسترد فقط.

generator(...): يستدعي نموذج Granite لتوليد إجابة استنادًا إلى موجِّه الإدخال.

for _ in range(5): تسمح هذه الحلقة للنموذج بتوليد إجابة على شكل أجزاء، حتى 5 مرات. من المفيد أن تكون الإجابة طويلة ولا يمكن إكمالها دفعة واحدة.

generated_text += new_text: يضيف كل جزء جديد من النص لتشكيل الإجابة الكاملة.

if new_text.endswith(...): إذا كانت الإجابة تبدو كاملة (تنتهي بنقطة أو علامة استفهام أو علامة تعجب) وتحتوي على عدد كافٍ من الكلمات (أكثر من 50 كلمة)، فإنها توقِف الحلقة.

return generated_text.strip(): لإرجاع الإجابة النهائية التي تم تنظيفها.

ملاحظة: يُعَد تنسيق الموجِّه مهمًا، إذ يضمن عدم هلوسة النموذج أو خروجه عن الموضوع. يجب أن تلتزم بما هو موجود في السياق. نقيِّد كل جزء يتم توليده بـ 120 رمزًا مميزًا للتحكم في طول المخرجات وإدارة استخدام الموارد بكفاءة ومنع الاستهلاك المفرط للرموز.

def expert(question: str) -> str:
    context = query_serper(question) # your retrieval function
    prompt = f"""You are a knowledgeable expert. Based ONLY on the context below, answer the question clearly and concisely in your own words.
Do NOT mention any sources or references.
Context:
{context}
Question: {question}
Answer:"""
    input_prompt = prompt
    generated_text = ""
    last_generated = ""
    for _ in range(5): # up to 5 chunks
        outputs = generator(
            input_prompt,
            max_new_tokens=120,
            do_sample=False,
            eos_token_id=tokenizer.eos_token_id,
            # no invalid flags like 'temperature' here
        )
        text = outputs[0]["generated_text"]
        new_text = text[len(input_prompt):].strip()
        # Stop if no new content
        if new_text == last_generated:
            break
        generated_text += new_text + " "
        input_prompt = prompt + generated_text
        last_generated = new_text
        if new_text.endswith(('.', '!', '?')) and len(generated_text.split()) > 50:
            break
    return generated_text.strip()

الخطوة 7: تحديد وحدة التخطيط

في هذه الخطوة، نحدِّد وظيفة وحدة التخطيط، التي تقسِّم مهمة إدخال واسعة إلى أسئلة فرعية أصغر ومحددة جيدًا، وهو مبدأ أساسي للاستدلال التدريجي لإطار ReWOO.

def planner(task: str): يحدِّد هذا دالة تُسمَّى planner والتي تقبل مهمة ذات وسيطة واحدة (سلسلة تصف المهمة التي يجب تنفيذها).

topic = task.replace("Summarize", "").replace("the novella", "").strip(): استخرج الموضوع الرئيسي (على سبيل المثال، العنوان أو الفكرة الرئيسية) من المهمة. يقوم بتنظيف المُدخل عبر إزالة العبارات الشائعة في الموجه مثل "Summarize" و"the novella"، ثم يُزيل الفراغات الزائدة في البداية والنهاية لعزل الموضوع الأساسي.

return [ ... ]: لإرجاع قائمة من الأسئلة المحددة التي توجه وحدة التنفيذ.

ملاحظة: يمكنك توسيع هذه القائمة من خلال إضافة أسئلة فرعية أكثر تحديدًا حسب عمق وطبيعة موضوع الإدخال.

def planner(task: str):
topic = task.replace("Summarize", "").replace("the novella", "").strip()
return [
f"What is the main plot related to {topic}?",
f"Who are the key characters in {topic}?",
f"What themes are explored in {topic}?"
]

الخطوة 8: تحديد الملخص النهائي (وحدة الحل)

في هذه الخطوة، نحدِّد دالة final_summarizer، والتي تعمل كوحدة حل في مسار ReWOO. تأخذ هذه الدالة الإجابات الفرعية (الأدلة) التي تقدمها وحدة التنفيذ وتولِّد ملخصًا متماسكًا مكتوبًا حديثًا باستخدام النموذج اللغوي.

def final_summarizer(task: str, sub_answers: dict) -> str: يحدِّد الدالة التي تستقبل المهمة الأصلية والإجابات الفرعية، وتُرجع ملخصًا موجزًا.

insights = "\n".join(sub_answers.values()): يجمع كل الإجابات في سلسلة واحدة مفصولة بأسطر جديدة لتضمينها في الموجِّه.

base_prompt = f"""...""": يُنشئ الموجِّه الأساسي الذي يوجِّه النموذج لتلخيص الرؤى المقدَّمة. يوجّه النموذج لإنتاج ملخص جديد بالاعتماد فقط على الإجابات الفرعية.

max_total_tokens = 400: يحدِّد حدًا أقصى لعدد الرموز المُولَّدة لتجنُّب المخرجات الطويلة جدًا.

max_loops = 5: يسمح بما يصل إلى 5 تكرارات للتوليد لبناء الملخص تدريجيًا.

for in range(maxloops): حلقات لتوليد أجزاء نصية باستخدام النموذج اللغوي.

response = generator(..., max_new_tokens=100, ...): يستخدم المولد (كائن المسار) لتوليد ما يصل إلى 100 رمز مميز جديد في كل حلقة. يُتيح وضع أخذ العينات (do_sample=True) التنوع والإبداع في الاستجابة.

if summary.endswith(...) or total_tokens_used >= max_total_tokens: يُنهي الحلقة إذا انتهى الملخص بعلامة ترقيم صحيحة أو وصل إلى الحد الأقصى لعدد الرموز المميزة.

return summary.strip(): يُرجع الملخص النهائي المصقول دون أي فراغات زائدة في النهاية.

def final_summarizer(task: str, sub_answers: dict) -> str:
    insights = "\n".join(sub_answers.values())
    base_prompt = f"""You are an expert summarizer. Based on the following insights, write a fresh, concise summary of the text. The summary must be newly written and must end in a complete sentence with proper punctuation.
Insights:
{insights}
Summary:"""
    summary = ""
    current_prompt = base_prompt
    max_total_tokens = 400
    total_tokens_used = 0
    max_loops = 5
    for _ in range(max_loops):
        response = generator(current_prompt, max_new_tokens=100, do_sample=True, top_p=0.9, eos_token_id=tokenizer.eos_token_id)
        chunk = response[0]["generated_text"][len(current_prompt):].strip()
        summary += " " + chunk
        summary = summary.strip()
        total_tokens_used += len(chunk.split())
        if summary.endswith(('.', '!', '?')) or total_tokens_used >= max_total_tokens:
            break
        # Prepare prompt for next loop
        current_prompt = base_prompt + summary
    return summary.strip()

الخطوة 9: تنسيق وكيل ReWOO مع دالة الحل

في هذه الخطوة، نحدِّد وظيفة الحل، والتي تمثِّل المرحلة النهائية في مسار ReWOO. يُنسِّق العملية الكاملة باستخدام وحدة التخطيط، واستدعاء الخبير (وحدة التنفيذ)، وتوليد ملخص عبر المُلخِّص النهائي (وحدة الحل). تُتيح بنية ReWOO التفكير متعدد الخطوات عن طريق تقسيم المهمة الرئيسية إلى أسئلة فرعية باستخدام وحدة تخطيط. يتم تناول كل سؤال فرعي بشكل مستقل بواسطة خبير، ثم يقوم الملخص النهائي بتجميع جميع الإجابات في رد متماسك. يسمح هذا النهج المعياري للنظام بمعالجة المهام المعقدة بشكل أكثر فاعلية.

def solver(task: str): يحدِّد وظيفة وحدة التحكم الرئيسية لتنفيذ سير عمل ReWOO بالكامل.

subquestions = planner(task): يستخدم وحدة التخطيط لتقسيم مهمة الإدخال إلى أسئلة فرعية مركزة.

ans = expert(q):لكل سؤال فرعي، تستدعي وظيفة الخبير لجلب أدلة من الويب وإنشاء إجابة ذات صلة. يتم تمرير كل سؤال فرعي تم إنشاؤه بواسطة وحدة التخطيط إلى الخبير كإدخال أداة. تعمل وحدة الخبراء على معالجة المدخلات باستخدام النموذج اللغوي. يمكن اعتبار ذلك بمثابة تنفيذ أداة لمهمة فرعية معينة.

answers[q] = ans: يخزِّن كل إجابة مرتبة حسب السؤال المقابل لها لتلخيصها لاحقًا.

final_summary = final_summarizer(task, answers): يغذّي جميع الإجابات المجمَّعة إلى أداة التلخيص النهائية لتوليد ملخص نظيف ومتّسق.

print(final_summary) and return final_summary: يعرض الملخص الكامل للمهمة الأصلية ويعيده.

ملاحظة: قد يختلف إجمالي الوقت الذي تستغرقه دالة solver() باختلاف الأنظمة؛ بسبب الاختلافات في سرعة وحدة المعالجة المركزية (CPU) وذاكرة الوصول العشوائي (RAM) المتاحة وكفاءة تشغيل النموذج على أجهزة مختلفة. نظرًا لأن الكود يستخدم استراتيجية توليد متكررة مع نموذج لغوي، فقد تستغرق الأنظمة ذات قدرة المعالجة أو الذاكرة المنخفضة وقتًا أطول بكثير. يمكن أن تساهم عمليات الاسترجاع القائمة على الشبكة وأحجام الموجِّهات الكبيرة أيضًا في حدوث التأخير. لتحسين الأداء، يُنصح بتقليل قيمة max_loops من خلال استخدام نموذج أصغر أو مُكمَّم، أو تحسين مسار المعالجة بين المُجزِّئ والمُولِّد، أو تشغيل الكود في بيئة تدعم وحدة معالجة الرسومات مثل Google Colab أو Kaggle Notebooks.

def solver(task: str):
    print(f"Planner: Breaking down '{task}' into sub-questions...\n")
    subquestions = planner(task)
    answers = {}
    for q in subquestions:
        print(f"🔎 Expert answering: {q}")
        ans = expert(q)
        print(f"➡ Answer: {ans}\n")
        answers[q] = ans
    print("=== Final Summary ===\n")
    final_summary = final_summarizer(task, answers)
    print(final_summary)
    return final_summary

الخطوة 10: تفعيل مسار ReWoo لإنشاء الملخص النهائي

في هذه الخطوة الأخيرة، نقوم بتنفيذ مسار ReWOO الكامل عن طريق استدعاء وظيفة الحل بمهمة محددة.

solver("Summarize the novella The Metamorphosis"): يُفعِّل عملية ReWOO بالكامل، والتي تشمل: التخطيط، واسترجاع الأدلة، وتوليد ملخص لمهمة الإدخال: تلخيص مجموعة البيانات The Metamorphosis.

تقدِّم هذه الخطوة الملخص النهائي وتوضِّح كيف تعمل عناصر ReWOO معًا من البداية إلى النهاية في حالة استخدام فعلية.

solver("Summarize the novella The Metamorphosis")

النقاط الرئيسية المستخلصة

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

ملاحظة: لتحسين أداء وموثوقية مسار ReWOO، من المهم تحسين مقاييس التقييم مثل جودة الملخص والتماسك وزمن الانتقال. تساعد هذه المقاييس على تقييم مدى جودة أداء النظام عبر المهام وإعدادات الأجهزة المختلفة. يمكن توسيع البنية من خلال دمج الخوارزميات الذكية لتقسيم الأسئلة الكبيرة إلى أسئلة أصغر وفرز الإجابات الأكثر فائدة. ومن شأن هذه التحسينات أن تمكِّن من التفكير بمزيد من الدقة والكفاءة، وتقليل وقت التوليد وتحسين الجودة الإجمالية للمخرجات النهائية.

حلول ذات صلة
وكلاء الذكاء الاصطناعي للأعمال

يمكنك إنشاء مساعدين ووكلاء ذكاء اصطناعي ووكلاء أقوياء يعملون على أتمتة مهام سير العمل والعمليات باستخدام الذكاء الاصطناعي التوليدي ونشرها وإدارتها.

    استكشف watsonx Orchestrate
    حلول وكلاء الذكاء الاصطناعي من IBM

    يمكنك بناء مستقبل عملك باستخدام حلول الذكاء الاصطناعي الجديرة بالثقة.

    استكشف حلول وكلاء الذكاء الاصطناعي
    خدمات الذكاء الاصطناعي لدى IBM Consulting

    تساعد خدمات IBM Consulting AI في إعادة تصور طريقة عمل الشركات باستخدام حلول الذكاء الاصطناعي من أجل النهوض بأعمالها.

    استكشف خدمات الذكاء الاصطناعي
    اتخِذ الخطوة التالية

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

    استكشف watsonx Orchestrate استكشف watsonx.ai