...

/

معالجة الأخطاء وإعادة المحاولة في LangGraph

معالجة الأخطاء وإعادة المحاولة في LangGraph

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

سنغطي ما يلي...

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

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

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

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

كيفية تنفيذ معالجة الأخطاء باستخدام الأدوات

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

import random
def get_weather(city: str) -> str:
"""Return a mock weather string for the given city, sometimes failing."""
if city.lower() == "london" and random.random() < 0.75:
raise Exception("Weather service for London failed!")
return f"The weather in {city} is sunny."
Weather tool sometimes fails, forcing retry logic
...