أصدرت Google مؤخرًا واجهة Agents API للمعاينة لـ Genkit، وهو إطار عمل مفتوح المصدر لبناء تطبيقات الذكاء الاصطناعي الكاملة. تقوم واجهة برمجة التطبيقات (API) بحزم سجل الرسائل، وحلقة تنفيذ الأداة، والتدفق، واستمرارية الحالة، وبروتوكول الواجهة الأمامية خلف واجهة chat() واحدة تعمل بشكل مماثل سواء كان الوكيل يعمل أثناء العملية أو خلف نقطة نهاية HTTP. المعاينة متاحة اليوم في TypeScript وGo، مع التخطيط لدعم Python وDart.

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

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

إن استمرارية الدولة تتبع مسارين. من خلال تكوين مخزن الجلسة، تتم إدارة الوكيل بواسطة الخادم: تستمر الرسائل والحالة المخصصة والعناصر كلقطات، ويعيد العملاء الاتصال بواسطة معرف الجلسة. تقوم Genkit بشحن متاجر Firestore (مثيلات الإنتاج المتعددة)، والذاكرة الداخلية (التطوير)، والقائمة على الملفات (الاختبار المحلي)، مع واجهة قابلة للتوصيل للتطبيقات المخصصة. بدون متجر، تتم إدارة الوكيل بواسطة العميل: يقوم الخادم بإرجاع الحالة الكاملة ويقوم العميل بإرساله مرة أخرى في كل دورة.

سلط إبنيزر دون، مهندس الذكاء الاصطناعي، الضوء على بُعد الامتثال لهذا الاختيار المعماري:

يعد الحفاظ على السياق الموثوق به هو التحدي الأساسي عندما تقرر إضافة ذاكرة إلى وكلاء الذكاء الاصطناعي.

فيما يتعلق بالحالة التي يديرها العميل على وجه التحديد، أشار دون إلى زاوية موقع البيانات التي لا يمكن أن توفرها الأساليب التي يديرها الخادم:

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

تبرز قدرتان من بين مشهد إطار العمل الوكيل المزدحم.

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


const chat = reportAgent.chat({ sessionId: 'report-123' });
const task = await chat.detach('Write the quarterly market report.');

savePendingSnapshot(task.snapshotId);

for await (const snapshot of task.poll({ intervalMs: 1000 })) {
  renderStatus(snapshot.status);
  if (snapshot.status === 'completed') renderMessages(snapshot.state.messages);
}

من خلال عمليات التشغيل المنفصلة، ​​يمكن للمطورين إنشاء مهام بحث طويلة، وتخطيط متعدد الخطوات، وسير عمل مليء بالأدوات بشكل عملي بدون WebSockets، أو قائمة انتظار مهام منفصلة، ​​أو الاحتفاظ باتصال مفتوح.

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


runShell := genkitx.DefineInterruptibleTool(g, "run_shell",

  "Run a shell command after a safety check.",

  func(ctx context.Context, input ShellInput, confirm *Confirmation) (ShellOutput, error) {
    if isRisky(input.Command) {
      if confirm == nil {
        return ShellOutput{}, tool.Interrupt(ShellInterrupt{
          Command: input.Command, Reason: "The command can modify files.",
        })
      } else if !confirm.Approved {
        return ShellOutput{}, errors.New("user rejected shell command execution")
      }
    }
    return execute(input.Command)
  },
)

بالنسبة للتنسيق متعدد الوكلاء، يقوم نظام البرامج الوسيطة الخاص بـ Genkit (الذي تم شحنه في مايو) بإدخال أداة تفويض لكل وكيل فرعي، بحيث يمكن لنموذج المنسق توجيه أجزاء من الطلب إلى المتخصصين. يمكن للوكلاء الفرعيين العمل محليًا أو خلف نقاط نهاية HTTP باستخدام نفس واجهة chat(). توفر طبقة البرامج الوسيطة أيضًا خطافات قابلة للتركيب لإعادة المحاولة مع التراجع الأسي، والنماذج الاحتياطية عبر الموفرين، وبوابات الموافقة على الأدوات، ونظام المهارات الذي يقوم بتحميل ملفات SKILL.md في موجه النظام.

Genkit لا يعتمد على النموذج من خلال بنية المكونات الإضافية الخاصة به. توجد المكونات الإضافية الرسمية لـ Google AI (Gemini)، وVertex AI، وAnthropic، وOpenAI، وOllama. يتيح محول Vercel AI SDK للفرق دمج وكلاء Genkit في تطبيقات Next.js. كل وكيل هو بالفعل إجراء قابل للتنفيذ، ويقوم مساعدو التوجيه بتوصيل نقاط النهاية والتقاطها وإحباطها على HTTP Mux القياسي في بضعة أسطر.

السياق التنافسي هو مجال مزدحم. تعالج كل من LangChain وCrewAI وSemantic Kernel وAutogen وMastra وPydantic AI المشكلات المتداخلة. تقوم Google نفسها ببناء البنية التحتية للوكيل في طبقتين في وقت واحد: Genkit لتطبيقات الوكيل المستضافة ذاتيًا، والوكلاء المُدارة في Gemini API لوقت تشغيل مستضاف بواسطة Google حيث يتم التعامل مع التنفيذ في الخلفية وخوادم MCP عن بعد وتنفيذ التعليمات البرمجية في وضع الحماية بالكامل من جانب الخادم. إن ما يميز Genkit في المشهد الأوسع هو النهج المتكامل: منطق الوكيل من جانب الخادم، وحزم SDK للعميل المكتوب للويب والجوال، وبروتوكول البث المدمج، والنشر إلى Firebase، أو Cloud Run، أو أي بيئة تقوم بتشغيل Node.js أو Go. والمقايضة هي أن Genkit أصغر سنًا ولديها نظام بيئي أصغر من تكاملات المجتمع من LangChain.

واجهة برمجة تطبيقات الوكلاء قيد المعاينة. نظام البرمجيات الوسيطة هو GA في TypeScript وGo وDart. Genkit مفتوح المصدر بموجب ترخيص Apache 2.0 على GitHub.



شاركها.
اترك تعليقاً