الكتابات/blog/2026/06
Blog29 يونيو 2026·6 دقيقة

Vercel AI SDK 7: وكلاء دائمون وصوت

يقدّم Vercel AI SDK 7 وكلاء دائمين، وموافقات الأدوات، وقياسات موحّدة، وواجهات صوت مستقرة. دليل المطوّر لما تغيّر منذ الإصدار 6 وكيفية الترقية.

اقتربت منظومة الذكاء الاصطناعي في TypeScript خطوة إضافية من بيئة الإنتاج. أصبح Vercel AI SDK 7 متاحًا الآن بشكل عام، وعلى خلاف التحديثات التدريجية لسلسلة 6.x، فإن هذا الإصدار يمثّل أساسًا مقصودًا للوكلاء ومنصّات الذكاء الاصطناعي التي تعمل في الإنتاج — مع الديمومة، وموافقات بشرية ضمن الحلقة، وقياسات موحّدة، وطبقة صوت أصبحت مستقرة.

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

يستعرض هذا الدليل ما هو جديد فعليًا، مع الشيفرة، وكيفية الترقية.

ما الذي تغيّر منذ الإصدار 6

جعل الإصدار 6 دوال generateText وstreamText وحلقات استدعاء الأدوات سهلة الاستخدام. ويحتفظ الإصدار 7 بهذه الواجهات ويضيف فوقها اهتمامات الإنتاج:

  • وكلاء دائمون وقابلون للاستئناف يصمدون أمام إعادة التشغيل وعمليات النشر
  • موافقات الأدوات مع بوابات بشرية موقّعة بـ HMAC ومحمية من إعادة التشغيل
  • قياسات موحّدة تُسجَّل مرة واحدة وتغطي كل دوال المكتبة
  • صوت ونسخ نصي مستقران إضافة إلى صوت لحظي تجريبي
  • مهلات دقيقة، وعزل سياق الأدوات، وتجريد لبيئة العزل (sandbox)

ثبّت أو رقّ باستخدام مدير الحزم المفضّل لديك:

pnpm add ai@latest
# أو
npm install ai@latest

تستمر معظم الشيفرات الحالية في العمل، ويتولّى أداة codemod الرسمية الجوانب الميكانيكية من الترقية (مشروحة في النهاية).

وكلاء دائمون يصمدون أمام النشر

الميزة الأبرز هي التنفيذ الدائم. في الإصدار 6 كان الوكيل متعدّد الخطوات يعيش بالكامل في الذاكرة: فإذا أُعيد تشغيل العملية في منتصف التنفيذ — نشر، أو تعطّل، أو حدث توسّع تلقائي — فُقد التشغيل بالكامل. يقدّم الإصدار 7 الصنف WorkflowAgent الذي تُحفظ حالته عند كل خطوة ويمكنه الاستئناف من حيث توقّف تمامًا.

import { WorkflowAgent } from 'ai';
import { openai } from '@ai-sdk/openai';
 
const agent = new WorkflowAgent({
  model: openai('gpt-5.6'),
  instructions: 'ابحث في الموضوع وأنتج ملخّصًا موثّقًا.',
  tools: { search, fetchPage },
  timeout: {
    totalMs: 60000,
    stepMs: 10000,
    chunkMs: 2000,
    toolMs: 5000,
  },
});
 
const result = await agent.run({ prompt: 'لخّص تغييرات AI SDK 7' });

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

موافقات الأدوات البشرية ضمن الحلقة

الوكلاء المستقلّون القادرون على إنفاق المال أو إرسال البريد أو حذف السجلّات يحتاجون إلى مكبح. يبني الإصدار 7 الموافقات مباشرة في طبقة الأدوات. يمكن للأداة أن تتطلّب user-approval، أو يمكنك تقديم دالة موافقة مخصّصة تقرّر عند كل استدعاء.

import { tool } from 'ai';
import { z } from 'zod';
 
const refundTool = tool({
  description: 'إصدار استرداد لعميل',
  inputSchema: z.object({ orderId: z.string(), amount: z.number() }),
  needsApproval: 'user-approval',
  execute: async ({ orderId, amount }) => issueRefund(orderId, amount),
});

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

سياق الأدوات: أوقف تسريب مفاتيح الـ API

من الإضافات الدقيقة لكن المهمّة عزلُ سياق الأدوات. سابقًا كانت الأدوات غالبًا تلتقط الأسرار من نطاق الوحدة المحيط. يتيح الإصدار 7 تعريف contextSchema بحيث تتلقّى كل أداة إعدادًا مكتوب الأنواع ومعزولًا — تبقى المفاتيح والإعدادات الخاصة بكل طلب بعيدة عن السطح المرئي للنموذج وعن الأدوات الأخرى.

const agent = new ToolLoopAgent({
  model: openai('gpt-5.6'),
  contextSchema: z.object({ apiKey: z.string(), userId: z.string() }),
  tools: { crmLookup },
});

داخل prepareStep() يتوفّر سياق التشغيل هذا كمتغيّرات مكتوبة الأنواع، فتستطيع تغيير السلوك حسب الطلب دون تمرير متغيّرات عامة عبر شيفرتك. وبالنسبة للتطبيقات متعدّدة المستأجرين، هذه أنظف طريقة لمنع وصول بيانات اعتماد مستخدم إلى تنفيذ أداة مستخدم آخر.

الصوت يصبح مستقرًا: التحويل والنسخ

عاملت سلسلة 6.x الصوت كميزة تجريبية. يرفع الإصدار 7 تحويل النص إلى كلام والنسخ النصي إلى دوال من الدرجة الأولى ومستقلّة عن المزوّد.

import { generateSpeech, transcribe } from 'ai';
import { openai } from '@ai-sdk/openai';
 
// من النص إلى الكلام
const audio = await generateSpeech({
  model: openai.speech('tts-1'),
  text: 'مرحبًا بكم في مدوّنة نقطة للمطوّرين.',
  voice: 'alloy',
});
 
// من الكلام إلى النص
const { text } = await transcribe({
  model: openai.transcription('whisper-1'),
  audio: audioBuffer,
});

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

الصوت اللحظي والأدوات المدفوعة من العميل

إلى جانب الصوت الدُفعي، يضيف الإصدار 7 الدالة experimental_useRealtime() — دعم لحظي مستقل عن المزوّد عبر جلسات WebSocket مباشرة في المتصفّح، مع نسخ صوتي واستدعاء أدوات مدفوع من العميل. هذه هي البدائية وراء وكلاء الصوت ثنائيي الاتجاه: يمكن للمستخدم أن يتكلّم ويُحدَّث في الوقت نفسه، ويمكن للنموذج استدعاء الأدوات في منتصف المحادثة دون ربط واجهتك بصيغة أحداث مزوّد واحد. وتعرض بوّابة الذكاء الاصطناعي (AI Gateway) القدرة نفسها على جانب الخادم عبر جلسة لحظية موحّدة، فتحتفظ بواجهة واحدة عبر المزوّدين.

قياسات تُسجَّل مرة واحدة

كانت المراقبة في الإصدار 6 تعني ربط experimental_telemetry بكل استدعاء. يعكس الإصدار 7 ذلك: سجّل القياسات مرة واحدة فتغطّي كل دوال المكتبة عالميًا.

import { registerTelemetry } from 'ai';
 
registerTelemetry({
  // OpenTelemetry وفق اصطلاحات GenAI الدلالية
  serviceName: 'noqta-agents',
});

تتحدّث بلغة OpenTelemetry مع اصطلاحات GenAI الدلالية، فتتدفّق الآثار إلى Datadog وLangfuse وBraintrust وSentry وLangsmith وغيرها دون شيفرة متكرّرة لكل استدعاء. وتعرض كل دالة الآن كائن performance يحتوي على responseTimeMs وtimeToFirstOutputMs وoutputTokensPerSecond، إضافة إلى استدعاءات دورة حياة onStart وonEnd متّسقة عبر المكتبة. ولكل من حاول مقارنة زمن الاستجابة بين المزوّدين، يمثّل وجود شكل مقياس واحد متّسق ترقية هادئة لكنها حقيقية.

الترقية من الإصدار 6

الترقية مصمّمة لتكون قليلة الجهد. شغّل أداة codemod الرسمية فتعيد كتابة التغييرات الميكانيكية نيابة عنك:

npx @ai-sdk/codemod v7

ويوجد أيضًا مسار قائم على المهارات إذا كنت تستخدم محرّرًا وكيليًا:

npx skills add vercel/ai --skill migrate-ai-sdk-v6-to-v7

التحوّلات المعمارية التي يجب تذكّرها: الواجهات أصبحت أكثر استقلالًا عن المزوّد، وعزل سياق الأدوات يغيّر طريقة تمرير الأسرار، وطبقة الديمومة اختيارية عبر WorkflowAgent. تبقى استدعاءاتك الحالية لـ generateText وstreamText كما هي إلى حدّ كبير. اطّلع على إعلان Vercel عن AI SDK 7 وتوثيق الصوت للمرجع الكامل قبل اعتماد الديمومة في الإنتاج.

هل ينبغي أن ترقّي؟

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

للمزيد من التعمّق في بناء وكلاء الإنتاج بـ TypeScript، راجع أدلّتنا حول Vercel AI SDK 6، والتنفيذ الدائم لوكلاء الذكاء الاصطناعي، ومراقبة نماذج اللغة في الإنتاج.


تبني منتجات مدعومة بالذكاء الاصطناعي لسوق الشرق الأوسط وشمال إفريقيا؟ تساعد نقطة الفرق على تصميم وبناء وإطلاق تطبيقات ذكاء اصطناعي جاهزة للإنتاج. تواصل معنا.