- ما هو Vercel AI SDK؟
- AI SDK Core: generateText وstreamText وgenerateObject
- أدوات AI SDK: استدعاء الدوال واستخدام الأدوات
- بناء حلقات وكيل الذكاء الاصطناعي باستخدام Vercel AI SDK
- AI SDK React: خطاف useChat والتكامل مع Next.js
- كيفية استخدام Novita AI مع Vercel AI SDK
- اختيار مزود LLM لـ Vercel AI SDK
- الخلاصة
- الأسئلة الشائعة
- مقالات موصى بها
تعد Vercel AI SDK مجموعة أدوات TypeScript لبناء تطبيقات الذكاء الاصطناعي. فهي تتعامل مع توليد النصوص، والبث، والمخرجات المنظمة، واستدعاءات الأدوات، وحلقات الوكلاء متعددة الخطوات من خلال واجهة برمجة تطبيقات موحدة واحدة — وتعمل مع أي مزود رئيسي لنماذج LLM. إذا حاولت ربط OpenAI أو Anthropic مباشرةً بتطبيق Next.js وانتهى بك الأمر إلى صيانة ثلاثة تطبيقات بث مختلفة، فإن هذه المجموعة تحل هذه المشكلة.
يغطي هذا الدليل القدرات الأساسية للمجموعة، وكيفية ربطها بواجهة Novita AI المتوافقة مع OpenAI لنماذج LLM، وأين تتوافق مهام عمل الوكلاء للمطورين الذين يبنون أكثر من مجرد روبوت محادثة بسيط.
ما هو Vercel AI SDK؟
Vercel AI SDK (الحزمة: ai على npm) هي مكتبة مفتوحة المصدر تعمل على تجريد الاختلافات بين مزودي نماذج LLM. بدلاً من تعلّم بروتوكولات بث منفصلة لكل من OpenAI وAnthropic وGoogle، يمكنك استدعاء نفس دوال generateText أو streamText أو generateObject وتبديل المزود بتغيير استيراد واحد.
توفر المجموعة طبقتين:
- AI SDK Core يتعامل مع تفاعلات النماذج: توليد النصوص، والبث، والكائنات المنظمة، واستدعاءات الأدوات، والتضمينات، وحلقات الوكلاء.
- AI SDK UI يوفر خطافات React (
useChat،useCompletion،useObject،useAssistant) بالإضافة إلى محولات لـ Next.js وSvelteKit وNuxt تدير حالة البث في المتصفح.
هناك أيضًا حزمة @ai-sdk/openai-compatible للاتصال بأي مزود يطبّق صيغة OpenAI Chat Completions — وهي الطريقة التي تتكامل بها Novita AI.
تعمل المجموعة في Node.js وDeno وبيئات تشغيل الحافة (Cloudflare Workers وVercel Edge) وبيئات المتصفح.
AI SDK Core: generateText وstreamText وgenerateObject
ثبّت المجموعة وحزمة المزود:
npm install ai @ai-sdk/openai
generateText
للاستكمالات غير المتدفقة — المعالجة الدفعية، والتصنيف، والتوليد لمرة واحدة:
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
const { text } = await generateText({
model: openai('gpt-4o-mini'),
prompt: 'Explain how LLM embeddings work in two sentences.',
});
console.log(text);
streamText
لواجهات المحادثة حيث يكون زمن الاستجابة مهمًا:
import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
const result = streamText({
model: openai('gpt-4o-mini'),
messages: [
{ role: 'user', content: 'Walk me through setting up a Next.js app.' },
],
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
generateObject
عندما تحتاج إلى مخرجات JSON منظمة بدلاً من النص الخام — يتم التحقق من المخطط تلقائيًا باستخدام Zod:
import { generateObject } from 'ai';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';
const { object } = await generateObject({
model: openai('gpt-4o-mini'),
schema: z.object({
name: z.string(),
skills: z.array(z.string()),
experienceLevel: z.enum(['junior', 'mid', 'senior']),
}),
prompt: 'Generate a fictional software engineer profile.',
});
console.log(object.name, object.skills);
تتعامل المجموعة مع حقن موجه النظام اللازم لإجبار النموذج على إنتاج JSON صالح، وتعيد المحاولة عند المخرجات غير الصالحة.
أدوات AI SDK: استدعاء الدوال واستخدام الأدوات
تسمح الأدوات للنماذج باستدعاء دوال خارجية — واجهات برمجة تطبيقات البحث، واستعلامات قواعد البيانات، والآلات الحاسبة — أثناء التوليد. تأخذ معلمة tools في المجموعة كائنًا حيث يصبح كل مفتاح دالة قابلة للاستدعاء:
import { generateText, tool } from 'ai';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';
const { text, toolCalls } = await generateText({
model: openai('gpt-4o-mini'),
tools: {
getWeather: tool({
description: 'Get current weather for a location',
parameters: z.object({
city: z.string().describe('City name'),
unit: z.enum(['celsius', 'fahrenheit']).default('celsius'),
}),
execute: async ({ city, unit }) => {
// Replace with a real weather API call
return { city, temperature: 22, unit, condition: 'sunny' };
},
}),
},
prompt: 'What is the weather in Tokyo right now?',
});
console.log(text);
يوفر مساعد tool() استنتاج الأنواع من مخطط Zod إلى معاملات دالة execute. لا حاجة لتحليل JSON يدويًا.
استدعاءات الأدوات متعددة الخطوات
بشكل افتراضي، تتوقف generateText بعد جولة واحدة من استدعاءات الأدوات. اضبط maxSteps للسماح للنموذج باستخدام نتائج الأدوات في الاستدلال اللاحق:
const { text } = await generateText({
model: openai('gpt-4o'),
maxSteps: 5,
tools: { getWeather, searchWeb, lookupCalendar },
prompt: 'Plan my outdoor activities for this weekend in Berlin.',
});
تتعامل المجموعة تلقائيًا مع حلقة استدعاء الأداة ← النتيجة ← الاستمرار. يتم عرض كل خطوة عبر onStepFinish إذا كنت بحاجة إلى رؤية الاستدلال الوسيط.
بناء حلقات وكيل الذكاء الاصطناعي باستخدام Vercel AI SDK
الوكيل في AI SDK هو نموذج يعمل في حلقة مع الأدوات حتى يقرر أنه يملك معلومات كافية للإجابة. النمط هو نفسه استدعاء الأدوات متعدد الخطوات، لكن مع المزيد من الأدوات وقيمة maxSteps أطول:
import { generateText, tool } from 'ai';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';
const result = await generateText({
model: openai('gpt-4o'),
maxSteps: 10,
system: 'You are a research assistant. Use available tools to answer thoroughly.',
prompt: 'What are the main differences between Llama 3.1 and Qwen3?',
tools: {
search: tool({
description: 'Search the web for current information',
parameters: z.object({ query: z.string() }),
execute: async ({ query }) => searchWeb(query),
}),
summarize: tool({
description: 'Summarize a URL',
parameters: z.object({ url: z.string() }),
execute: async ({ url }) => fetchAndSummarize(url),
}),
},
onStepFinish({ stepType, toolCalls, toolResults }) {
console.log('Step:', stepType, toolCalls?.map(t => t.toolName));
},
});
لخطوط أنابيب الوكلاء في الإنتاج، اربط Novita AI كخلفية للنموذج للتحكم في التكلفة والإنتاجية على نطاق واسع — وسيتم تغطية ذلك في القسم التالي.
AI SDK React: خطاف useChat والتكامل مع Next.js
يدير خطاف useChat حالة دردشة البث دون رمز نمطي:
// app/chat/page.tsx
'use client';
import { useChat } from 'ai/react';
export default function Chat() {
const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
api: '/api/chat',
});
return (
<div>
{messages.map(m => (
<div key={m.id} className={m.role === 'user' ? 'user' : 'assistant'}>
{m.content}
</div>
))}
<form onSubmit={handleSubmit}>
<input
value={input}
onChange={handleInputChange}
placeholder="Ask something..."
disabled={isLoading}
/>
<button type="submit" disabled={isLoading}>Send</button>
</form>
</div>
);
}
معالج المسار المقابل:
// app/api/chat/route.ts
import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
export async function POST(req: Request) {
const { messages } = await req.json();
const result = streamText({
model: openai('gpt-4o-mini'),
messages,
});
return result.toDataStreamResponse();
}
toDataStreamResponse() يتعامل مع بروتوكول بث Vercel AI الذي يفهمه useChat في العميل بشكل أصلي. لبث كائنات منظمة من واجهة برمجة التطبيقات، استبدل useChat بـ useObject وstreamText بـ streamObject.
كيفية استخدام Novita AI مع Vercel AI SDK
توفر Novita AI واجهة برمجة تطبيقات متوافقة مع OpenAI على https://api.novita.ai/v3/openai، مما يجعلها بديلاً مباشرًا لأي مجموعة أدوات تستخدم صيغة OpenAI Chat Completions — بما في ذلك Vercel AI SDK.
لماذا نستخدم Novita AI مع AI SDK؟
تستضيف Novita AI أكثر من 70 نموذجًا مفتوح المصدر — Llama 3.3 70B وQwen3 وDeepSeek V3 وMistral وGemma 3 — عبر نقطة نهاية واحدة لواجهة برمجة التطبيقات. لا حاجة لإدارة البنية التحتية لوحدات معالجة الرسوميات (GPU). بالنسبة لمهام عمل الوكلاء، تتوسع واجهة برمجة التطبيقات بدون خادم من نماذج التعليمات الصغيرة 7B إلى نماذج الاستدلال الكبيرة دون تغييرات في الإعدادات.
الإعداد
ثبّت حزمة المزود المتوافقة مع OpenAI:
npm install ai @ai-sdk/openai-compatible
قم بإعداد المزود:
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
const novita = createOpenAICompatible({
name: 'novita',
baseURL: 'https://api.novita.ai/v3/openai',
apiKey: process.env.NOVITA_API_KEY,
});
هذا هو الإعداد الكامل. استخدمه الآن تمامًا مثل أي مزود آخر في AI SDK:
import { generateText } from 'ai';
const { text } = await generateText({
model: novita('meta-llama/llama-3.3-70b-instruct'),
prompt: 'What are the tradeoffs between RAG and fine-tuning for a customer support bot?',
});
البث يعمل بنفس الطريقة:
import { streamText } from 'ai';
const result = streamText({
model: novita('qwen/qwen3-235b-a22b-instruct-2507'),
messages: [
{ role: 'system', content: 'You are a helpful coding assistant.' },
{ role: 'user', content: 'Show me how to build a REST API with FastAPI.' },
],
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
استدعاءات الأدوات مع Novita AI
النماذج التي تدعم استدعاء الدوال تعمل مع واجهة أدوات AI SDK دون أي إعداد إضافي. يدعم Llama 3.3 70B Instruct وQwen3 استدعاءات الأدوات عبر واجهة Novita:
import { generateText, tool } from 'ai';
import { z } from 'zod';
const { text } = await generateText({
model: novita('meta-llama/llama-3.3-70b-instruct'),
maxSteps: 5,
tools: {
calculator: tool({
description: 'Evaluate a mathematical expression',
parameters: z.object({ expression: z.string() }),
execute: async ({ expression }) => {
return { result: eval(expression) }; // use a safe math parser in production
},
}),
},
prompt: 'What is 12% of 847, then divide by 3.14?',
});
إعداد البيئة
أضف مفتاح Novita API الخاص بك إلى .env.local:
NOVITA_API_KEY=your_novita_api_key_here
احصل على مفتاح من novita.ai — تتضمن الحسابات الجديدة أرصدة مجانية لاختبار واجهة برمجة التطبيقات.
Agent Sandbox لأحمال العمل طويلة التشغيل
بالنسبة لمهام الوكلاء التي تشغّل التعليمات البرمجية، أو تصل إلى أنظمة الملفات، أو تنفّذ مهام عمل تستغرق دقائق متعددة، توفر Agent Sandbox التابعة لـ Novita AI بيئات تنفيذ معزولة فوق واجهة LLM. يتولى AI SDK طبقة استدلال النموذج. ويتولى الصندوق التنفيذ ذا الحالة الذي لا يمكن تشغيله داخل مهلة دالة الحافة.
اختيار مزود LLM لـ Vercel AI SDK
تسهّل AI SDK تبديل المزودين، وهو أمر مفيد — لكن من المفيد فهم المقايضات قبل اختيار مزود للإنتاج.
زمن الاستجابة: الوقت حتى أول رمز (Time-to-first-token) أهم من سرعة التوليد الكلية لدردشة البث. النماذج الأصغر (8B–14B) تنتج الرموز الأولى بشكل أسرع. تم تحسين نقاط نهاية Novita AI بدون خادم لزمن استجابة منخفض عند بدء التشغيل البارد للنماذج المفتوحة.
التكلفة على نطاق واسع: GPT-4o ممتاز، لكن عند أحجام الاستعلامات العالية تصبح فجوة السعر بين النموذج الحدودي والنموذج المفتوح المضبوط جيدًا (مثل Llama 3.3 70B) كبيرة. تتيح لك AI SDK تجربة الاثنين دون إعادة كتابة منطق التطبيق.
دعم استدعاء الأدوات: لا تدعم جميع النماذج استدعاء الدوال بشكل موثوق. اختبر نموذجك المحدد مقابل مخططات أدواتك — يختلف السلوك بين المزودين حتى لنفس عائلة النموذج.
نافذة السياق: بالنسبة إلى RAG كثيفة المستندات أو سجلات المحادثات الطويلة، تحقق من حدود السياق. تدعم العديد من النماذج المفتوحة 128K رمزًا، وهو ما يغطي معظم حالات الاستخدام العملية.
الارتباط بمزود واحد: إن تجريد المزود في AI SDK مع نقطة نهاية Novita AI المتوافقة مع OpenAI يعني أنه يمكنك تبديل النماذج أو إضافة مزود احتياطي دون لمس كود التطبيق.
الخلاصة
يزيل Vercel AI SDK الرمز النمطي من بناء تطبيقات الذكاء الاصطناعي — واجهة برمجة تطبيقات واحدة لتوليد النصوص، والبث، واستدعاءات الأدوات، وحلقات الوكلاء عبر أي مزود LLM. سواء كنت تبني واجهة دردشة متدفقة باستخدام useChat، أو تستخرج بيانات منظمة باستخدام generateObject، أو تشغّل وكيلًا متعدد الخطوات يستدعي أدوات خارجية، فإن المجموعة تتولى التفاصيل التقنية حتى يمكنك التركيز على منطق التطبيق.
بالنسبة لاستدلال النماذج المفتوحة، تتكامل واجهة Novita AI المتوافقة مع OpenAI مباشرةً مع المجموعة عبر @ai-sdk/openai-compatible. تحصل على إمكانية الوصول إلى أكثر من 70 نموذجًا — Llama وQwen3 وDeepSeek وMistral — دون إدارة البنية التحتية لوحدات GPU، ويمكنك تبديل النماذج أو إضافة مزودين احتياطيين دون لمس كود التطبيق.
ابدأ الآن على novita.ai — تتضمن الحسابات الجديدة أرصدة مجانية.
الأسئلة الشائعة
ما هو ai sdk react؟
التكامل مع React في AI SDK موجود في حزمة ai/react. توفر خطافات — useChat وuseCompletion وuseObject وuseAssistant — تربط واجهة React الأمامية بمسار بث من جانب الخادم. تدير الخطافات حالة البث، وسجل الرسائل، ومؤشرات التحميل، ومعالجة الأخطاء بحيث لا تضطر إلى إدارة ReadableStream في حالة المكوّن.
ما الذي يضيفه ai sdk 5؟
أعاد AI SDK 5 (الذي صدر كنسخة تجريبية في منتصف 2025) تصميم مواصفات المزود لتحسين أمان الأنواع، وفصل إدارة حالة واجهة المستخدم عن منطق التفاعل مع النموذج، وقدّم صيغة رسائل منقحة تجعل من السهل تسلسل حالة واجهة المستخدم الوكيلة. إذا كنت تبدأ مشروعًا جديدًا في 2026، راجع ai-sdk.dev للحصول على أحدث إصدار مستقر — استمرت المجموعة في التطور عبر الإصدارين 6 و7.
هل توجد وثائق ai sdk يمكنني الرجوع إليها؟
الوثائق الرسمية موجودة على ai-sdk.dev. تتضمن أدلة إعداد المزودين، ومراجع API لجميع الدوال الأساسية، ودروسًا للتكامل مع الأطر (Next.js وNuxt وSvelteKit)، وأمثلة عملية (cookbook) للأنماط الشائعة مثل RAG وحلقات الوكلاء والاستخراج المنظم.
هل يمكنني استخدام أدوات ai sdk مع نماذج غير OpenAI؟
نعم. أي مزود يدعم استدعاء الدوال يعمل مع واجهة tool() في AI SDK. تستضيف Novita AI عدة نماذج مفتوحة تدعم استدعاء الدوال. تختلف جودة السلوك — يُعد Llama 3.3 70B وQwen3 الأكثر موثوقية لاستخدام الأدوات متعدد الخطوات بين النماذج المفتوحة المتاحة عبر واجهة Novita.
ما الفرق بين وثائق vercel ai sdk ووثائق ai-sdk.dev؟
إنهما نفس المنتج. كانت الوثائق سابقًا على sdk.vercel.ai وتعيد التوجيه إلى ai-sdk.dev. تتم صيانة المجموعة بواسطة فريق Vercel لكنها مفتوحة المصدر وغير مرتبطة بالنشر على بنية Vercel التحتية.
كيف تقارن مجموعات تطوير الذكاء الاصطناعي باستدعاء واجهة LLM مباشرةً؟
استدعاءات واجهة برمجة التطبيقات المباشرة مناسبة للطلبات البسيطة لمرة واحدة. تصبح مجموعة أدوات SDK ذات قيمة عندما تحتاج إلى عدة أشياء في الوقت نفسه: بث متكامل مع إطار عمل لواجهة المستخدم، وحلقات استدعاء أدوات متعددة الخطوات، والتحقق من المخرجات المنظمة، وتبديل موحد بين المزودين، ومعالجة متسقة لإعادة المحاولة والأخطاء عبر المزودين. يتعامل AI SDK مع كل ذلك على مستوى المكتبة، لذلك لا تعيد بناءه في كل مشروع.
