BaruArahkan agen apa pun ke UberLLM — satu key, semua model, harga resmi atau lebih murah.
UberLLM

Gunakan Vercel AI SDK dengan UberLLM (model lebih murah, kode sama)

Instal @ai-sdk/openai-compatible, buat provider dengan baseURL https://api.uberllm.dev/v1 dan kunci UberLLM Anda, dan teruskan uberllm("<model id>") di mana pun aplikasi Anda meneruskan model saat ini. Tidak ada hal lain di aplikasi yang berubah.


Langkah-langkah

  1. Buat kunci di halaman kunci Anda dan tambahkan sedikit kredit (akun dimulai dari $0).
  2. Instal penyedia:
npm i ai @ai-sdk/openai-compatible
  1. Masukkan kunci di .env.local (Next.js) atau lingkungan server Anda:
UBERLLM_API_KEY=ull_your_key
  1. Buat penyedia sekali saja, misalnya di lib/uberllm.ts:
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";

export const uberllm = createOpenAICompatible({
  name: "uberllm",
  baseURL: "https://api.uberllm.dev/v1",
  apiKey: process.env.UBERLLM_API_KEY, // sent as Authorization: Bearer <key>
  includeUsage: true, // token counts on streamed answers too
});
  1. Gunakan ini di tempat Anda menggunakan model sebelumnya:
import { generateText } from "ai";
import { uberllm } from "@/lib/uberllm";

const { text } = await generateText({
  model: uberllm("deepseek/deepseek-v4.1-flash"),
  prompt: "Write a one-line welcome message.",
});

Memindahkan aplikasi yang sudah menggunakan @ai-sdk/openai

Ganti argumen model dan biarkan yang lainnya tetap sama:

// before
import { openai } from "@ai-sdk/openai";
const model = openai("gpt-4o");

// after
import { uberllm } from "@/lib/uberllm";
const model = uberllm("deepseek/deepseek-v4.1-flash");

ID model adalah ID yang ada di uberllm.dev/models dan selalu diawali dengan nama pembuatnya (openai/…, anthropic/…, deepseek/…). Begitulah cara Anda dapat menjalankan GPT, Claude, Gemini, dan model-model terbuka dari satu kunci dan membandingkannya dengan mengubah satu string.

Rute chat Next.js untuk useChat

useChat dari @ai-sdk/react mengirim ke /api/chat secara default. Rute ini menjawabnya:

// app/api/chat/route.ts
import { streamText, convertToModelMessages, type UIMessage } from "ai";
import { uberllm } from "@/lib/uberllm";

export async function POST(req: Request) {
  const { messages }: { messages: UIMessage[] } = await req.json();
  const result = streamText({
    model: uberllm("deepseek/deepseek-v4.1-flash"),
    messages: await convertToModelMessages(messages),
  });
  return result.toUIMessageStreamResponse();
}

Simpan kunci di server. Jangan pernah meletakkannya di variabel NEXT_PUBLIC_: siapa pun bisa membacanya dari halaman dan menghabiskan saldo Anda.

Batas biaya satu panggilan

Permintaan chat menerima provider.max_price (dolar per juta token). Lewatkan melalui providerOptions di bawah penyedia name yang Anda pilih:

await generateText({
  model: uberllm("deepseek/deepseek-v4.1-flash"),
  prompt: "Hi",
  providerOptions: { uberllm: { provider: { max_price: { prompt: 0.2, completion: 0.4 } } } },
});

Jika tidak ada yang menjual model tersebut di bawah harga tersebut saat ini, panggilan ditolak dengan max_price_exceeded dan tidak ada biaya yang dikenakan.

Pemecahan Masalah

  • 401 invalid_api_key: kunci tidak mencapai server. Mulai ulang next dev setelah mengedit .env.local, dan pastikan process.env.UBERLLM_API_KEY diatur di tempat kode berjalan (server, bukan browser).
  • 402 insufficient_credits: tambahkan kredit di halaman kredit.
  • 404 model_not_found: ID salah atau tidak ada pembuatnya. Salin dari halaman model.
  • 400 wrong_endpoint: Anda meneruskan model gambar atau video ke streamText. Model gambar melalui uberllm.imageModel(…) dengan generateImage; video adalah pekerjaan, lihat Buat video atau gambar.
  • Penggunaan kosong pada streaming: atur includeUsage: true pada penyedia, seperti di atas.

Baca juga

Model yang bagus untuk aplikasi

Semua ini mendukung tool calls. Yang pertama ada di kode di bawah ini.

ModelID model (tempel ini)Harga sekarang
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00022 input · $0.0025 output / 1M
Gemini 3.5 Flashgoogle/gemini-3.5-flash$0.0150 input · $0.0900 output / 1M
Claude Sonnet 5.5anthropic/claude-sonnet-5.5$0.0674 input · $0.3369 output / 1M
GPT-5.5openai/gpt-5.5$0.1250 input · $0.7500 output / 1M
Kimi K3moonshotai/kimi-k3$0.0017 input · $0.0781 output / 1M
GLM 5.3z-ai/glm-5.3$0.00052 input · $0.0234 output / 1M
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 input · $0.0020 output / 1M
Qwen3 VL 235B A22Bqwen/qwen3-vl-235b-a22b-instruct$0.0021 input · $0.0188 output / 1M

Harga pada build per jam terakhir, tanpa tambahan biaya · semua model →

FAQ

Apakah Vercel AI SDK berfungsi dengan UberLLM?

Ya. Gunakan provider resmi @ai-sdk/openai-compatible dengan baseURL https://api.uberllm.dev/v1 dan kunci UberLLM Anda. generateText, streamText, useChat, tool calls, dan generateImage berfungsi.

Apakah saya juga memerlukan @ai-sdk/openai atau @ai-sdk/anthropic?

Tidak. Satu provider @ai-sdk/openai-compatible menjangkau setiap model chat di UberLLM, termasuk Claude, GPT, dan Gemini, berdasarkan model id.

Bisakah saya membuat video dengan AI SDK?

Tidak melalui @ai-sdk/openai-compatible, yang tidak memiliki model video. Video adalah job di UberLLM: mulai satu dengan POST /v1/video/generations dan periksa statusnya, seperti yang ditunjukkan dalam dokumen media.