الانتقال إلى المحتوى الرئيسي

نظرة عامة

النوع: إطار عمل أو منصةالمسار الأساسي: الافتراضي المتوافق مع OpenAIمستوى دعم التكامل: نمط تكامل موصى به
بالنسبة لـ TokenLab، فإن الخيار الافتراضي الأكثر استقراراً في Vercel AI SDK هو المزود المتوافق مع OpenAI (OpenAI-compatible provider). إذا كنت تحتاج تحديداً إلى سلوك Responses-native، يمكنك التبديل إلى مزود OpenAI مع الاحتفاظ بنفس عنوان URL الأساسي لـ TokenLab. يجب التعامل مع هذه الصفحة كنمط تكامل موصى به، وليس كضمان بأن كل أداة مساعدة في Vercel AI SDK مدعومة من قبل TokenLab.

حزمة مزود TokenLab

تحتفظ TokenLab أيضاً بحزمة مزود خفيفة لـ Vercel AI SDK:
npm install ai @tokenlabai/ai-sdk-provider
import { generateText } from 'ai';
import { tokenlab } from '@tokenlabai/ai-sdk-provider';

const { text } = await generateText({
  model: tokenlab.chatModel('gpt-5.4'),
  prompt: 'Explain TokenLab in one sentence.',
});

console.log(text);

الخيار الافتراضي الموصى به: المزود المتوافق مع OpenAI

npm install ai @ai-sdk/openai-compatible
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

export const tokenlab = createOpenAICompatible({
  name: 'tokenlab',
  apiKey: process.env.TOKENLAB_API_KEY,
  baseURL: 'https://api.tokenlab.sh/v1',
});

توليد النصوص (Generate Text)

import { generateText } from 'ai';
import { tokenlab } from './tokenlab';

const { text } = await generateText({
  model: tokenlab.chatModel('gpt-5.4'),
  prompt: 'Explain TokenLab in one sentence.',
});

console.log(text);

بث النصوص (Stream Text)

import { streamText } from 'ai';
import { tokenlab } from './tokenlab';

const result = await streamText({
  model: tokenlab.chatModel('gpt-5.4'),
  prompt: 'Write a short poem about coding.',
});

for await (const textPart of result.textStream) {
  process.stdout.write(textPart);
}

استدعاء الأدوات (Tool Calling)

import { generateText, tool } from 'ai';
import { z } from 'zod';
import { tokenlab } from './tokenlab';

const result = await generateText({
  model: tokenlab.chatModel('gpt-5.4'),
  prompt: 'What is the weather in San Francisco?',
  tools: {
    weather: tool({
      description: 'Get weather in a location',
      parameters: z.object({
        location: z.string(),
      }),
      execute: async ({ location }) => ({
        location,
        temperature: 72,
        condition: 'sunny',
      }),
    }),
  },
});

console.log(result.text);

المخرجات المهيكلة (Structured Output)

import { generateObject } from 'ai';
import { z } from 'zod';
import { tokenlab } from './tokenlab';

const { object } = await generateObject({
  model: tokenlab.chatModel('gpt-5.4'),
  schema: z.object({
    name: z.string(),
    role: z.string(),
  }),
  prompt: 'Generate a fake developer profile.',
});

console.log(object);

إذا كنت تحتاج صراحةً إلى سلوك Responses-Native

npm install ai @ai-sdk/openai
import { createOpenAI } from '@ai-sdk/openai';

export const tokenlabResponses = createOpenAI({
  apiKey: process.env.TOKENLAB_API_KEY,
  baseURL: 'https://api.tokenlab.sh/v1',
});
import { generateText } from 'ai';
import { tokenlabResponses } from './tokenlab-responses';

const { text } = await generateText({
  model: tokenlabResponses('gpt-5.4'),
  prompt: 'Explain TokenLab in one sentence.',
});
استخدم @ai-sdk/openai-compatible كخيار افتراضي آمن لتكاملات نمط الوكيل (proxy-style). انتقل إلى @ai-sdk/openai فقط عندما تحتاج صراحةً إلى مسار مزود مبني على /v1/responses.

متغيرات البيئة (Environment Variables)

# .env.local
TOKENLAB_API_KEY=sk-your-tokenlab-key

أفضل الممارسات

بالنسبة للبوابات الخارجية (gateways) وخلفيات الوكيل (proxy backends)، عادةً ما يكون @ai-sdk/openai-compatible هو نقطة البداية الأكثر أماناً وموثوقية.
إذا كنت بحاجة إلى سلوك مزود مرتبط بـ /v1/responses، فقم بتبديل حزمة المزود بشكل متعمد بدلاً من خلط كلا النمطين في عميل واحد.
لا تقم أبداً بكشف مفتاح API الخاص بـ TokenLab في كود جانب العميل (client-side). ضع إعدادات المزود في ملفات الخادم أو مسارات API.