Search⌘ K
AI Features

تخصيص الوكلاء باستخدام البرمجيات الوسيطة

تعلم كيفية الربط بحلقة create_agent باستخدام البرامج الوسيطة، وإضافة عمليات إعادة المحاولة، والتلخيص، والموافقة البشرية دون التخلي عن الوكيل المكون من سطر واحد.

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

لماذا البرمجيات الوسيطة؟

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

نقوم بتمرير البرمجيات الوسيطة إلىcreate_agent على شكل قائمة:

graph = create_agent(
model="openai:gpt-5",
tools=[get_weather],
middleware=[SomeMiddleware()],
)
Middleware is passed as a list to create_agent

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

خطافات على نمط العقدة:before_model و after_model

before_model يتم تشغيله مباشرة قبل استدعاء النموذج؛after_model يتم تشغيلها مباشرة بعد ذلك. وأبسط طريقة لكتابة واحدة هي باستخدام مُزخرف:

from langchain.agents.middleware import before_model
@before_model
def log_before_model(state, runtime):
print(f"About to call the model with {len(state['messages'])} messages")
Logging the message count before every model call
  • السطر 1: نستوردbefore_model مصمم ديكور منlangchain.agents.middleware .

  • الأسطر 3-5: تستقبل الدالة المزخرفة التيارstate (نفس الحالة الشبيهة بالقاموس التي استقبلتها العقد التي قمنا ببنائها يدويًا) وruntime الكائن، ويتم تشغيله قبل كل استدعاء للنموذج. إرجاع ...