يتغير مشهد تطوير تطبيقات الذكاء الاصطناعي بسرعة. نحن نتحرك من هندسة المطالبات البسيطة إلى سير عمل ذاتي معقد وذو حالة. بينما هيمنت أطر عمل مثل LangChain وLlamaIndex على هذا المجال، ظهر متنافس جديد يتحدث مباشرة إلى مطوري TypeScript الحديثين: Mastra.
Mastra ليس مجرد مكتبة أخرى؛ إنه إطار عمل شامل مصمم لتبسيط إنشاء ونشر وصيانة وكلاء الذكاء الاصطناعي. من خلال الاستفادة من أمان الأنواع وأدوات TypeScript القوية، يعالج Mastra نقاط الألم الشائعة في بناء تطبيقات ذكاء اصطناعي جاهزة للإنتاج، مثل إدارة الأدوات، ومعالجة الذاكرة، والتنسيق.
لماذا Mastra؟ ميزة TypeScript
أحد أكبر العوائق أمام بناء وكلاء ذكاء اصطناعي موثوقين هو تعقيد إدارة الحالة وتكامل الأدوات. في البيئات التي تعتمد بشكل كبير على JavaScript، يؤدي نقص الأنواع الصارمة غالباً إلى أخطاء وقت التشغيل التي يصعب تصحيحها. يحل Mastra هذه المشكلة من خلال كونه "أولوية TypeScript".
يقدم طريقة إعلانية لتعريف الوكلاء والأدوية وسير العمل. هذا يعني أنه يمكنك تعريف سلوك الوكيل، والأدوات التي لديه حق الوصول إليها، وسياق الذاكرة التي يستخدمها بطريقة ذات أنواع قوية. يقلل هذا النهج بشكل كبير من العبء المعرفي على المطورين، مما يسمح لهم بالتركيز على منطق الوكيل بدلاً من دمج التعليمات البرمجية النمطية.
البنية الأساسية: الوكلاء، الأدوات، والذاكرة
ينظم Mastra واجهة برمجة التطبيقات الخاصة به حول ثلاثة مفاهيم أساسية:
- الوكلاء (Agents): متخذي القرار. يستخدمون نماذج لغوية كبيرة (LLMs) لتحديد الإجراء التالي بناءً على مدخلات المستخدم والأدوات المتاحة.
- الأدوات (Tools): القدرات. هذه هي الدوال أو استدعاءات واجهة برمجة التطبيقات التي يمكن للوكيل تنفيذها.
- الذاكرة (Memory): السياق. يوفر Mastra مزودي ذاكرة مدمجين للتعامل مع سجل المحادثات واسترجاع المعرفة القائم على المتجهات.
على عكس بعض أطر العمل حيث عليك لصق هذه المكونات يدوياً، يقدم Mastra نهجاً متكاملاً. تقوم بتعريف أدواتك كدوال TypeScript قياسية، ويتولى Mastra تلقائياً تحليل المدخلات والمخرجات لنموذج اللغة الكبير (LLM).
البدء: مثال عملي
لننظر في مدى بساطة تعريف وكيل بأداة مخصصة في Mastra. فيما يلي مثال لإنشاء وكيل للبحث عن الطقس.
import { Mastra } from '@mastra/core';
import { OpenAI } from '@mastra/core/llm';
import { createTool } from '@mastra/core/tools';
// Define a custom tool
const getWeather = createTool({
id: 'get-weather',
description: 'Get the current weather for a location',
inputSchema: z.object({
location: z.string().describe('The city and state'),
}),
execute: async ({ context }) => {
// Simulate API call
return { temperature: 72, condition: 'Sunny' };
},
});
// Initialize Mastra
const mastra = new Mastra({
llms: {
openai: new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
}),
},
tools: {
getWeather,
},
});
// Define the agent
const weatherAgent = mastra.createAgent({
name: 'Weather Agent',
instructions: 'You are a helpful weather assistant.',
model: mastra.llms.openai,
tools: {
getWeather,
},
});
في هذا المثال، لاحظ كيف يستنتج createTool تلقائياً مخطط JSON لنموذج اللغة الكبير (LLM) بناءً على مخطط التحقق من صحة Zod. هذا يوفر وقتاً كبيراً مقارنة بالكتابة اليدوية لمخططات JSON لكل أداة.
إدارة الذاكرة والحالة
أحد الميزات البارزة في Mastra هو نظام الذاكرة المعياري الخاص به. بشكل افتراضي، لا تملك الوكلاء ذاكرة، ولكن يمكنك بسهولة توصيل مزودي ذاكرة دائمة. يدعم Mastra كل من التخزين البسيط في الذاكرة للتطوير والذاكرة القائمة على المتجهات لاسترجاع المعرفة طويلة المدى.
يسمح هذا الفصل بين المسؤوليات بتبديل خلفيات الذاكرة دون تغيير منطق الوكيل الأساسي. سواء كنت بحاجة إلى تذكر حقائق من محادثة الأسبوع الماضي أو الوصول إلى قاعدة بيانات متجهة تحتوي على وثائق الشركة، يوفر Mastra الخطافات اللازمة لجعل ذلك سلساً.
الخاتمة
يمثل Mastra نضجاً في مجال أطر عمل الوكلاء. من خلال إعطاء الأولوية لسهولة استخدام TypeScript، وتقليل التعليمات البرمجية النمطية، وتوفير واجهة برمجة تطبيقات موحدة للأدوات والذاكرة، فإنه يخفض حاجز الدخول لبناء تطبيقات ذكاء اصطناعي متطورة. بالنسبة للمطورين الذين يجيدون بالفعل نظام TypeScript البيئي، يقدم Mastra مساراً مقنعاً للأمام يبدو أصلياً وليس كإضافة لاحقة. مع استمرار تطور مشهد وكلاء الذكاء الاصطناعي، من المرجح أن تصبح أطر العمل مثل Mastra، التي تعطي الأولوية لتجربة المطور وأمان الأنواع، المعيار للنشرات ذات الدرجة الإنتاجية.