Skip to main content

title: “LangChain و LangGraph” sidebarTitle: “LangChain و LangGraph” description: “قم بتتبع الرسوم البيانية والعقد والأدوات والمسترجعات واستدعاءات النموذج برمز واحد.” icon: “/images/frameworks/langchain.svg”

محول واحد يخدم كليهما. يعمل LangGraph على مدير الاستدعاءات (callback manager) الخاص بـ langchain-core، لذا فإن تتبع أحدهما يتابع الآخر.

التثبيت

للحصول على LangChain بدون LangGraph، استخدم failproofai-sdk[langchain]. المدعوم: langchain-core 1.4.7 إلى 2.0، langgraph 1.2 إلى 2.0. خارج هذا النطاق، يتم تثبيت المحول وإصدار تحذير مرة واحدة.

التتبع

يسجل instrument() محلل التتبع عبر langchain_core.tracers.context.register_configure_hook. يقوم LangChain بحقنه في كل مدير استدعاءات يقوم ببنائه، بحيث يتم التقاط الرسوم البيانية والأدوات والنماذج دون تغيير موقع الاستدعاء — بما في ذلك تلك الموجودة داخل المكتبات التي لم تكتبها.

ما يتم تسجيله

تصبح العقدة hook وليس وكيلاً متداخلاً. agent_id هي الجانب الأساسي عبر كل سطح لوحة التحكم — تعزيز retrieve و grade_documents و should_continue إلى وكلاء سيغرقها، ويعنون الجلسة بعد أي عقدة تحدث لتعمل أولاً. تعرض رسوم Hook بنفس الطريقة وتعطيك عرض الكمون لكل عقدة.
سمّ عقدك كما تريد. يتم تحديد تشغيل العقدة من خلال شكلها — تشغيل غير ورقة يحمل LangGraph الخاص بـ step tag — لا من خلال اسمها أبداً.
استخدام اسم العقدة بعد الشيء الذي يعمل عليه قد يؤدي إلى اختفاء أحداث الشيء. لم يعد الحال كذلك.

البث

لا تصدر .stream() و .astream() أحداث لكل رمز. يتم طيها في model_response الختامي:

عدادات الرموز على استجابة مرسلة

مسألة منفصلة، وسهلة الإغفال: يرسل OpenAI الاستخدام على استجابة مرسلة عند طلبها فقط.
يسجل المحول ما يسلمه الإطار له. بدون هذا الخيار لا يوجد شيء للتسجيل، و model_response يصل بدون عدادات الرموز.

مثال

سمّ رسومك البيانية

بشكل افتراضي، تأخذ رسالة الجذر اسم الرسم البياني الخاص به. قم بلفها للحصول على تسمية اخترتها:
للإعدادات متعددة الوكلاء، أدرج النطاقات. يصبح كل عامل رسمة فرعية تحمل parent_id:
حافظ على agent_id بقليل من الاختلاف. استخدم دوراً أو اسم عقدة، أبداً UUID أو سلسلة نصية لكل تشغيل.

التحكم في الجلسة

معرّف الجلسة يتم حله بهذا الترتيب، المطابقة الأولى تفوز:
  1. instrument("langchain", session_id=...)
  2. config={"metadata": {"failproofai_sdk_session_id": ...}}
  3. نطاق failproofai_sdk.session() المحيط
  4. metadata["session_id"] أو metadata["conversation_id"] أو metadata["thread_id"]
  5. معرّف التشغيل الجذري
لا يتم إنشاؤها من الصفر أبداً، لأن معرّف صناعي يقسم تشغيل واحد عبر عدة جلسات.

الخيارات

عيّن capture_content=False للبيانات المنظمة. الهيكل والتوقيتات وعدادات الرموز وأسماء الأدوات والنتائج لا تزال مسجلة؛ أجسام الرسائل لا. include_chains ينطبق على التشغيلات المتداخلة فقط. runnable الذي تستدعيه على المستوى الأعلى هو جذر الجلسة، بحيث يصبح رسمة الوكيل بدلاً من زوج hook، والتسمية هنا ليس لها تأثير.

الإنسان في الحلقة

interrupt() ينتج أربعة أحداث، وليس أي زوج مكرراً:
يحمل human_wait إلى human_input الأمر والإجابة (كلاهما مُسقط تحت capture_content=False، جنباً إلى جنب مع مصادر وثائق الاسترجاع — ينجو عدد الوثائق). agent_pause إلى agent_resume هو الزوج الوحيد الذي يعطي الوقت المتوقف، لذا بدونه فإن انتظار إنساني لمدة عشر دقائق يتم تحديده كوقت وكيل نشط. تبقى الرسالة الجذرية مفتوحة عبر الفجوة، مما يبقي كلا الاستدعاءات في جلسة واحدة.

المشاكل الشائعة

create_react_agent تنشر الاستثناء. للسماح للنموذج برؤية الفشل والمتابعة، قم بإنشاء عقدة الأداة بشكل صريح:
يتم تسجيل الفشل كـ tool_result يحمل خطأ في كلا الحالتين. هذا يقرر فقط ما إذا كان التشغيل ينجو منه.
llm.invoke() مباشر خارج أي رسم بياني ليس له تشغيل أب، لذا فإنه يفتح رسمة جذرية ويصدر زوج النموذج الخاص به داخلها. لوحة التحكم تربط الأوراق بوكيل مفتوح، بحيث تكون الرسمة مقصودة. سمّها:
لقد مررت معالج Failproof في config={"callbacks": [...]} بالإضافة إلى استدعاء instrument(). قم بإزالته. يغطي خطاف التكوين بالفعل كل مدير استدعاءات في العملية.
لا تفعل. يرفع LangGraph GraphInterrupt عبر نفس المسار مثل استثناء حقيقي، لذا كل توقف يصل إلى المتتبع كرد استدعاء خطأ. يتم التعامل مع أي فئة فرعية من GraphBubbleUp كتدفق تحكم بدلاً من ذلك، لذا فإن موافقة لا تطلي خطأ أحمر.
تحقق بهذا الترتيب: instrument() تشغل قبل تنفيذ الرسم البياني؛ هناك with failproofai_sdk.session(): حول الاستدعاء؛ تم ضبط FAILPROOFAI_SDK_STRICT=1، لذا يرفع خطاف منخفض بدلاً من امتصاصه.

التالي

كيف يعمل

الأزواج والمعرّفات ودورة حياة الجلسة والتسليم.

قراءة التتبع

اتبع السببية عبر الجلسة التي التقطتها للتو.

أطر عمل أخرى

CrewAI وLlamaIndex وPydantic AI والوكلاء المخصصون.