Bloga dön

API ve SDKKılavuz

Özel temel URL ile Vercel AI SDK: TypeScript'te CheapTokens

Vercel AI SDK'yı createOpenAICompatible ile CheapTokens'a yönlendirin: çalışan bir generateText ve streamText örneği, token kullanımı ve yaygın hatalar için düzeltmeler.

Yazan: CheapTokens TeamYayınlanma tarihi: 4 dk okuma

createOpenAICompatible ve CheapTokens temel URL'i ile Vercel AI SDK kodu
Bu sayfada
  1. Kurulum ve sağlayıcı oluşturma
  2. generateText: tek bir yanıt ve token sayısı
  3. streamText: kelimeleri geldikçe yazdırma
  4. Geri kalanına dokunmadan modeli değiştirme
  5. Çalışmazsa

Vercel AI SDK'yi CheapTokens üzerinde çalıştırmak için @ai-sdk/openai-compatible paketini kurun, baseURL: 'https://api.cheaptokens.dev/v1' ve anahtarınızla bir sağlayıcı oluşturun ve provider('deepseek-ai/DeepSeek-V4-Flash-0731') değerini model olarak geçirin. Uygulamanızdaki diğer her şey, generateText, streamText, istemleriniz olduğu gibi kalır.

Yani AI SDK aracılığıyla barındırılan bir modelle konuşan bir Next.js route'unuz veya Node betiğiniz varsa üç şeyi değiştirirsiniz: temel URL, anahtar ve model kimliği. Bu kılavuz, kurulumu AI SDK'nın OpenAI uyumlu sağlayıcılar sayfasına göre kontrol eder (29 Ekim 2026). CheapTokens API'sinin Chat Completions arayüzünü kullanır; bu sağlayıcının konuştuğu arayüz de budur.

Kurulum ve sağlayıcı oluşturma#

İki paket: çekirdek ai paketi ve OpenAI uyumlu sağlayıcı.

bash
npm install ai @ai-sdk/openai-compatible
export CHEAPTOKENS_API_KEY=ct_your_key_here

İş sırası kısadır:

Sıraya koy

Kurulumu sıraya koyun

  1. Bakiyeyi yükleyin ve bir API anahtarı oluşturun
  2. Anahtarı bir ortam değişkenine koyun
  3. Sağlayıcıyı CheapTokens baseURL'i ile oluşturun
  4. Tam model kimliğini generateText'e geçirin

Sağlayıcının kendisi createOpenAICompatible için tek bir çağrıdır:

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

export const cheaptokens = createOpenAICompatible({
  name: 'cheaptokens',
  apiKey: process.env.CHEAPTOKENS_API_KEY,
  baseURL: 'https://api.cheaptokens.dev/v1',
  includeUsage: true,
});

name yalnızca kendi günlükleriniz için bir etikettir. includeUsage: true, akış yanıtlarında da token sayılarını ister; bu olmadan varsayılan false gibi davranır. cheaptokens('model-id') çağrısı size bir sohbet modeli verir; cheaptokens.chatModel('model-id') ve cheaptokens.languageModel('model-id') aynı şeyi yapar.

Bir isteğin yolu: uygulamanız, createOpenAICompatible, CheapTokens API
Kodunuz AI SDK'yı çağırmaya devam eder; yalnızca altındaki sağlayıcı değişir

Model kimliği tam olanı olmalıdır: deepseek-ai/DeepSeek-V4-Flash-0731. deepseek-v4-flash-0731 gibi kısa bir ad, fiyat tablolarında gördüğünüz addır ve API bunu kabul etmez. Ne yazacağınızdan emin değilseniz, GET /v1/models ile modelleri listeleyin ve kimliği oradan kopyalayın.

generateText: tek bir yanıt ve token sayısı#

İşte eksiksiz bir betik. Kısa bir yanıt ister ve hem metni hem de usage nesnesini yazdırır.

typescript
import { generateText } from 'ai';
import { cheaptokens } from './provider';

const result = await generateText({
  model: cheaptokens('deepseek-ai/DeepSeek-V4-Flash-0731'),
  prompt: 'Explain in two sentences what a base URL is.',
});

console.log(result.text);
console.log(result.usage);

npx tsx index.ts ile çalıştırın. Yanıtı result.text içinde bir dize olarak alırsınız ve result.usage o çağrının giriş ve çıkış token sayılarını tutar. İçindeki her şeyi görmeniz için nesnenin tamamını yazdırıyoruz. streamText için AI SDK referansında (29 Ekim 2026'da kontrol edildi) usage içinde inputTokens, outputTokens ve totalTokens bulunur; bunları bir panoya bağlamadan önce kurulu sürümünüzün türlerini kontrol edin.

Neden usage okumakla uğraşasınız ki? Çünkü ödediğiniz sayı odur. Diyelim ki uygulamanız 1.500 token'lık bir istem gönderiyor ve 600 token'lık bir yanıt alıyor. Bu istek mevcut fiyatlarla $0.000083 tutar ve bunlardan bin tanesi şöyle görünür:

Model İstek başına 1.000 istek OpenRouter, 1.000 istek
GLM-5.3-Flash $0.000054 $0.054 $0.107
DeepSeek-V4-Flash $0.000083 $0.0825 $0.165
MiniMax-M2.7 $0.00017 $0.165 $1.17

İstek başına 1.500 giriş ve 600 çıkış token'ı. 1M token başına fiyatlar günceldir ve tarifelerimizle birlikte değişir; OpenRouter sütunu aynı iş yükü için referans fiyatları gösterir.

CheapTokens sütunu toplamda, giriş ve çıkış birlikte, tablodaki her model için OpenRouter'dan daha ucuzdur. usage değerini işleyen bir bütçeye dönüştürmek isterseniz, agent token maliyetini izleme fikri Python'da gösterir; aritmetik TypeScript'te aynıdır.

streamText: kelimeleri geldikçe yazdırma#

Bir sohbet arayüzü için model hâlâ yazarken metnin görünmesini istersiniz. streamText size metin parçalarından oluşan bir async iterable verir.

typescript
import { streamText } from 'ai';
import { cheaptokens } from './provider';

const result = streamText({
  model: cheaptokens('deepseek-ai/DeepSeek-V4-Flash-0731'),
  prompt: 'Write a 100-word product description for a pocket notebook.',
});

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

console.log('\n', await result.usage);

streamText(...) önünde await olmadığına dikkat edin: hemen döner ve akışı siz tüketirsiniz. usage, akış bittiğinde sonuçlanan bir promise'tir, bu yüzden döngüden sonra await edersiniz. Bir Next.js route handler'ında stdout'a yazmak yerine akışı tarayıcıya döndürürsünüz; sağlayıcı kısmı birebir aynıdır. Aynı şeyi düz OpenAI SDK ile yapmak isterseniz, Node.js'te akışlı sohbet yanıtları sayfasına bakın.

Uzun yanıtlar burada sorun değil: CheapTokens üzerinde DeepSeek-V4-Flash tek bir yanıtta 32.768 token'a kadar yazabilir, 380K bağlam penceresine sahiptir ve her saatte tek fiyatı vardır. Model sayfası /en/cheap-deepseek/ adresinde ve güncel fiyatlar fiyatlandırma sayfasında.

Geri kalanına dokunmadan modeli değiştirme#

Yalnızca model kimliği değiştiği için başka bir modeli denemek tek satırlık bir düzenlemedir. GLM-5.3-Flash 390K bağlam penceresine sahiptir ve 8.192 token'a kadar yanıt verir; mevcut fiyatlarla 1M giriş token'ı başına $0.02 ve 1M çıkış token'ı başına $0.04 tutar.

Kendin deneDeneyin: aynı betiği GLM-5.3-Flash üzerinde çalıştırmak için hangi satırı değiştirirsiniz?Cevabı göster

Yalnızca model kimliğini: cheaptokens('zai-org/GLM-5.3-Flash'). Sağlayıcı, anahtar, baseURL ve betiğin geri kalanı aynı kalır.

Kullanışlı bir kalıp, kimliği bir ortam değişkeninde (process.env.MODEL_ID) tutmaktır; böylece yeniden derleme yapmadan aynı istem üzerinde iki modeli karşılaştırabilirsiniz. DeepSeek vs GLM vs MiniMax karşılaştırması hangilerini denemeye değer olduğunu seçmenize yardımcı olur.

Çalışmazsa#

Hataların çoğu üç şeyden biridir: anahtar, URL veya model kimliği.

  • 401, anahtarın eksik veya yanlış olduğu anlamına gelir. CHEAPTOKENS_API_KEY değerinin betiği çalıştıran kabukta ayarlı olduğunu kontrol edin (bir Next.js sunucusu bunu .env.local içinde ve yeniden başlatma ile ister).
  • 404 genellikle baseURL'in /v1 kısmını kaybettiği veya model kimliğinin kısa ad olduğu anlamına gelir. https://api.cheaptokens.dev/v1 ve tam kimliği kullanın.
  • Yanıt cümle ortasında duruyor. Model bir çıkış sınırına ulaştı; finish_reason "length" düzeltmesi bunu açıklar.

İlk ikisinin daha uzun anlatımı API 401 veya 404: yanlış anahtar, temel URL veya model kimliği sayfasındadır.

Kontrol listesi

Betiği çalıştırmadan önce

Diğer araçları bağlamak ve ilk isteği elle yapmak için CheapTokens dokümanlarından başlayın.