Agent Frameworks

ماسترا لبث البيانات في الوقت الفعلي: بناء وكلاء مدعومين بالأحداث مع تكاملات WebSocket

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

لماذا تهم البنية المعمارية المدعومة بالأحداث للوكلاء

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

إعداد وكيل ماسترا

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

import { createAgent } from 'mastra';
import { openai } from '@mastra/core/models';

export const realtimeAgent = createAgent({
  name: 'Realtime Support Agent',
  description: 'An agent that processes real-time user queries',
  model: openai('gpt-4o'),
  instructions: `
    You are a helpful assistant. 
    Keep your responses concise as they are being streamed.
    Acknowledge immediate user intents before providing detailed answers.
  `,
  tools: {
    lookupOrder: async ({ orderId }) => {
      // Simulate a fast database lookup
      return { status: 'processing', estimatedTime: '2 days' };
    }
  }
});

تكامل WebSockets مع ماسترا

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

فيما يلي مثال عملي باستخدام Node.js ومكتبة ws للتعامل مع طبقة WebSocket. لاحظ كيف نستفيد من قدرات البث في ماسترا لدفع الرموز إلى العميل أثناء توليدها.

import WebSocket, { WebSocketServer } from 'ws';
import { server } from 'http';
import { realtimeAgent } from './agent'; // Import from above

const server = http.createServer();
const wss = new WebSocketServer({ server });

wss.on('connection', (ws) => {
  console.log('Client connected');

  ws.on('message', async (message) => {
    try {
      const userPrompt = message.toString();
      
      // Use Mastra's stream method for real-time output
      const stream = await realtimeAgent.stream(userPrompt);

      // Forward chunks as they arrive
      for await (const chunk of stream) {
        if (chunk.type === 'text-delta') {
          ws.send(JSON.stringify({ 
            type: 'token', 
            content: chunk.text 
          }));
        }
      }
      
      ws.send(JSON.stringify({ type: 'done' }));
    } catch (error) {
      console.error('Agent error:', error);
      ws.send(JSON.stringify({ type: 'error', message: 'Something went wrong' }));
    }
  });

  ws.on('close', () => {
    console.log('Client disconnected');
  });
});

server.listen(8080, () => {
  console.log('WebSocket server running on ws://localhost:8080');
});

معالجة الحالة والتزامن

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

الخاتمة

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

Share: