Agent Frameworks

Mastra برای هوش مصنوعی بدون سرور: استقرار عامل‌های باحالت روی توابع لبه با Vercel

ساخت عامل‌های هوش مصنوعی مقیاس‌پذیر یک تعادل ظریف است. شما به هماهنگ‌سازی محکم یک چارچوب، تأخیر کم محاسبات لبه و کارآمدی هزینه معماری‌های بدون سرور نیاز دارید. اینجاست که ترکیب Mastra و توابع لبه Vercel درخشان می‌شود. Mastra یک مجموعه ابزار جامع برای ساخت برنامه‌های مبتنی بر LLM ارائه می‌دهد، در حالی که محیط اجرای لبه Vercel اطمینان حاصل می‌کند که عامل‌های شما با حداقل سربار به‌صورت جهانی اجرا شوند.

در این راهنما، ما بررسی می‌کنیم که چگونه یک عامل هوش مصنوعی باحالت را با استفاده از Mastra بسازیم و آن را به عنوان یک تابع لبه Vercel استقرار دهیم. ما به چالش‌های رایج، مانند مدیریت حالت در محیط‌های بدون سرور و بهینه‌سازی شروع‌های سرد، می‌پردازیم.

چرا Mastra + Vercel Edge؟

Mastra یک چارچوب متن‌باز است که به‌طور خاص برای ساخت عامل‌ها و جریان‌های کاری هوش مصنوعی طراحی شده است. این چارچوب موارد زیر را ارائه می‌دهد:

  • عامل‌ها: قابلیت‌های LLM کپسوله‌شده با ابزارها و حافظه.
  • جریان‌های کاری: فرآیندهای چندمرحله‌ی قطعی با منطق شاخه‌بندی.
  • ارزیاب‌ها: معیارهای داخلی تست و ارزیابی برای خروجی هوش مصنوعی.

توابع لبه Vercel در لبه، نزدیک به کاربران شما اجرا می‌شوند. آن‌ها موارد زیر را فراهم می‌کنند:

  • تأخیر کم: اجرا در میلی‌ثانیه در سراسر مناطق جهانی.
  • کارآمدی هزینه: مدل صورتحساب بر اساس درخواست.
  • پشتیبانی از زبان: پشتیبانی کامل از TypeScript و JavaScript.

ترکیب این فناوری‌ها به شما امکان می‌دهد عامل‌های هوش مصنوعی پیچیده‌ای بسازید که در کمتر از 100 میلی‌ثانیه پاسخ می‌دهند، صرف‌نظر از محل قرارگیری کاربران شما.

راه‌اندازی پروژه شما

اول، یک پروژه جدید Vercel را با محیط اجرای Edge راه‌اندازی کنید. سپس، Mastra را نصب کنید:


npm create vercel@latest
cd your-project
npm install mastra

فایلی با نام edge.ts در ریشه پروژه خود ایجاد کنید. این فایل نقطه ورود تابع لبه شما را تعریف خواهد کرد.

ساخت عامل باحالت با Mastra

یکی از چالش‌های توابع لبه، ماهیت موقت آن‌هاست. حالت باید به‌صورت خارجی یا در زمینه درخواست مدیریت شود. Mastra این کار را با کلاس Agent خود ساده می‌کند که می‌تواند مدیریت حافظه و زمینه را انجام دهد.


import { Agent } from 'mastra';
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';

// Define your agent with memory capabilities
const myAgent = new Agent({
  name: 'SupportAgent',
  description: 'An agent that handles customer support queries.',
  model: openai('gpt-4o'),
  tools: {
    // Example tool: lookup_order
    lookup_order: {
      description: 'Looks up an order by ID',
      execute: async ({ orderId }: { orderId: string }) => {
        // In a real app, this would query a database
        return { status: 'shipped', trackingId: '1Z999AA10123456784' };
      },
    },
  },
});

export async function GET(request: Request) {
  const { message, userId } = await request.json();

  try {
    // Mastra handles the agent loop, tool execution, and response formatting
    const result = await myAgent.generate({
      messages: [
        { role: 'user', content: message },
      ],
      // Pass userId for state management if using Mastra's memory features
      metadata: { userId },
    });

    return new Response(JSON.stringify({
      text: result.text,
      usage: result.usage,
    }), {
      headers: { 'Content-Type': 'application/json' },
    });
  } catch (error) {
    return new Response(JSON.stringify({ error: error.message }), {
      status: 500,
      headers: { 'Content-Type': 'application/json' },
    });
  }
}

مدیریت حالت در محیط‌های بدون سرور

توابع لبه به‌طور طراحی بی‌حالت هستند. اگر عامل شما به حافظه نیاز دارد (مثلاً تاریخچه مکالمه)، دو گزینه دارید:

  1. حالت سمت کلاینت: کل تاریخچه مکالمه را با هر درخواست ارسال کنید. این کار ساده است اما می‌تواند منجر به حجم‌های داده بزرگ شود.
  2. ذخیره‌سازی خارجی: از یک پایگاه داده سازگار با بدون سرور مانند Vercel KV، Upstash Redis یا یک نمونه Postgres (مثلاً Neon) برای ذخیره وضعیت مکالمه استفاده کنید. Mastra می‌تواند از طریق ابزارهای سفارشی یا میانی‌افزارها با این‌ها یکپارچه شود.

برای برنامه‌های با مقیاس بالا، استفاده از یک کش خارجی با TTL (زمان ماندگاری) توصیه می‌شود تا هزینه‌ها را پایین نگه دارد و تأخیر را به حداقل برساند.

بهینه‌سازی شروع‌های سرد

شروع‌های سرد می‌توانند تأخیر را به عامل هوش مصنوعی شما اضافه کنند. در اینجا برخی از بهترین روش‌ها آورده شده است:

  • اندازه باندل: باندل تابع لبه خود را کوچک نگه دارید. فقط اجزای خاصی از Mastra که به آن‌ها نیاز دارید را وارد کنید.
  • پیش‌گرم کردن: از ویژگی keepAlive Vercel یا فراخوانی‌های زمان‌بندی‌شده برای گرم نگه داشتن تابع خود در ساعات اوج استفاده کنید.
  • کش کردن مدل: اگر از مدل‌های محلی یا LLMهای کوچک‌تر استفاده می‌کنید، در نظر بگیرید وزن‌های مدل را در حافظه کش کنید (اگر توسط محیط اجرای شما پشتیبانی شود) یا از ارائه‌دهندگان SDK ai Vercel که مدیریت استخر اتصال را انجام می‌دهند، استفاده کنید.

استقرار در Vercel

استقرار ساده است:


vercel deploy

اطمینان حاصل کنید که vercel.json شما محیط اجرای Edge را برای تابع شما پیکربندی می‌کند:


{
  "functions": {
    "edge.ts": {
      "runtime": "edge"
    }
  }
}

نتیجه‌گیری

استقرار عامل‌های هوش مصنوعی باحالت روی توابع لبه Vercel با Mastra ترکیبی قدرتمند از عملکرد، مقیاس‌پذیری و تجربه توسعه‌دهنده را فراهم می‌کند. با بهره‌گیری از هماهنگ‌سازی عامل‌های Mastra و شبکه لبه جهانی Vercel، می‌توانید برنامه‌های هوش مصنوعی پاسخگو و مقرون‌به‌صرفه بسازید که به‌راحتی مقیاس‌پذیر هستند. با یک عامل کوچک شروع کنید، تأخیر و هزینه‌های خود را پایش کنید و برای ساخت ویژگی‌های محکم مبتنی بر هوش مصنوعی برای کاربران خود، تکرار کنید.

Share: