غالبًا ما تواجه تطبيقات الذكاء الاصطناعي الحديثة تحديات في الموثوقية. بينما تتفوق نماذج اللغات الكبيرة (LLMs) في الإبداع والاستدلال، إلا أنها احتمالية وطبيعتها عديمة الحالة. عند تسلسل استدعاءات LLM متعددة، وطلبات واجهة برمجة التطبيقات الخارجية، وموافقات الإنسان في الحلقة، تتفجر التعقيدات. قد يؤدي أي انقطاع في الشبكة أو خطأ مؤقت في واجهة برمجة التطبيقات إلى ترك النظام في حالة غير متسقة، مما يخلق وكلاء "أشباح" دفعوا ثمن الحسابات لكنهم لم ينتجوا أي قيمة.
هنا يصبح التنسيق الحتمي أمرًا بالغ الأهمية. من خلال الجمع بين القوة الاحتمالية للذكاء الاصطناعي والضمانات الحتمية لمحركات سير العمل مثل Temporal، يمكنك بناء أنظمة وكلاء تكون متينة وقابلة للملاحظة وصحيحة. يستكشف هذا المقال كيفية هندسة وكلاء ذكاء اصطناعي قويين باستخدام سير عمل Temporal.
مشكلة سلاسل الوكلاء البسيطة
في التنفيذ البسيط، قد ينفذ الوكيل تسلسلاً من الخطوات:
- جلب نية المستخدم.
- استدعاء نموذج لغة كبير (LLM) للتحليل.
- الاستعلام عن قاعدة بيانات.
- استدعاء واجهة برمجة تطبيقات (API) تابعة لطرف ثالث.
- إرسال الاستجابة.
إذا فشل الخطوة 4 بسبب انقطاع في الشبكة، فقد تحاول الخدمة المصغرة التقليدية إعادة المحاولة إلى ما لا نهاية أو تفشل تمامًا، مما يؤدي إلى عدم اتساق البيانات. والأهم من ذلك، لأن التنفيذ مؤقت، فإنك تفقد السياق المطلوب لاستئناف الوكيل من حيث توقف. لا يمكنك "إيقاف واستئناف" تدفق طلب HTTP القياسي بسهولة. يحل Temporal هذه المشكلة من خلال حفظ حالة كل تنفيذ للنشاط في تخزينه الدائم، مما يسمح بإعادة بناء سير العمل تمامًا كما كان قبل الفشل.
المفاهيم الأساسية: الأنشطة وسير العمل
في Temporal، يتم تقسيم منطق الوكيل الخاص بك إلى مكونين متميزين:
- سير العمل (Workflows): مستوى التحكم. هذه وحدات شفرة طويلة الأمد وحتمية تحدد تدفق المنطق (الحلقات، الشروط، إعادة المحاولة). يجب أن تكون حتمية تمامًا، مما يعني عدم السماح باستخدام الأرقام العشوائية أو التواريخ أو استدعاءات الشبكة مباشرة داخلها.
- الأنشطة (Activities): مستوى التنفيذ. هذه هي العمال الفعليون الذين يقومون بمهام غير حتمية مثل استدعاء نموذج لغة كبير (LLM)، أو الاستعلام عن قاعدة بيانات، أو إرسال رسائل البريد الإلكتروني. الأنشطة قصيرة العمر وقد تفشل.
التطبيق العملي
لنلقِ نظرة على كيفية هيكلة وكيل بحث بسيط باستخدام Python. سنعرّف سير عمل يقوم بجلب البيانات، ومعالجتها عبر نموذج لغة كبير (LLM)، والتعامل مع إعادة المحاولة بسلاسة.
from temporalio.worker import Worker
from temporalio.activity import activity
from temporalio.workflow import workflow, define, current_datetime
from pydantic import BaseModel
import httpx
# تعريف النشاط غير الحتمي
@activity.defn
async def fetch_context_data(url: str) -> dict:
async with httpx.AsyncClient() as client:
response = await client.get(url)
response.raise_for_status()
return response.json()
# تعريف نشاط معالجة نموذج اللغة الكبير (LLM)
@activity.defn
async def llm_generate_summary(context: dict) -> str:
# منطق لاستدعاء OpenAI أو نموذج لغة كبير محلي
return "ملخص تم إنشاؤه بناءً على السياق..."
# تعريف سير العمل الحتمي
@workflow.defn
class ResearchAgentWorkflow:
@workflow.run
async def run(self, query_url: str) -> str:
# الخطوة 1: جلب البيانات مع إعادة المحاولة التلقائية عند الفشل
data = await workflow.execute_activity(
fetch_context_data,
query_url,
retry=workflow.Retry(max_attempts=3)
)
# الخطوة 2: المعالجة باستخدام نموذج اللغة الكبير (LLM)
summary = await workflow.execute_activity(
llm_generate_summary,
data,
schedule_to_close_timeout=timedelta(minutes=5)
)
return summary
في هذا المثال، إذا فشل fetch_context_data، يقوم Temporal تلقائيًا بإعادة المحاولة حتى 3 مرات. إذا استمر في الفشل، يمكن تكوين سير العمل للانتقال إلى نشاط يتضمن الإنسان في الحلقة أو لإخطار المسؤول. الفائدة الرئيسية هي أنه عندما يعود العامل إلى وضع التشغيل، يعيد Temporal تشغيل أحداث السجل لإعادة بناء حالة سير العمل، مما يضمن استدعاء llm_generate_summary فقط بعد جلب البيانات بنجاح.
فوائد الحتمية
من خلال فرض الحتمية في سير العمل، تحصل على عدة مزايا:
- المتانة (Durability): يبقى الوكيل على قيد الحياة أثناء إعادة تشغيل الخوادم، والنشر، وانقطاعات الشبكة.
- قابلية التصحيح (Debuggability): يوفر Temporal واجهة مستخدم حيث يمكنك رؤية الحالة الدقيقة لكل خطوة في دورة حياة الوكيل، مما يسهل تصحيح الأخطاء لمعرفة سبب تجمد الوكيل.
- إدارة التعقيد (Complexity Management): يمكنك تنفيذ آلات حالة معقدة، بما في ذلك الفروع المتوازية، وسير العمل الفرعي، وسير العمل الطفل، دون الحاجة إلى إدارة قفل موزع أو حالة قاعدة البيانات يدويًا.
الخاتمة
بناء وكلاء الذكاء الاصطناعي لا يتعلق فقط بهندسة الأوامر (Prompt Engineering)؛ بل يتعلق بهندسة البرمجيات. مع زيادة أهمية وكلاءك للعمليات التجارية، تصبح الحاجة إلى الموثوقية أمرًا بالغ الأهمية. يوفر Temporal الهيكل الأساسي للتنسيق الحتمي، مما يسمح للمطورين بالتركيز على منطق الذكاء الاصطناعي بينما يتولى المحرك تعقيدات المتانة، ومنطق إعادة المحاولة، وإدارة الحالة. من خلال اعتماد هذا النمط، تحول النصوص البرمجية الهشة والمؤقتة إلى أنظمة مستقلة قوية وجاهزة للإنتاج.