Vercel AI SDK
Vercel AI SDK mengakses UberLLM melalui penyedia resminya @ai-sdk/openai-compatible. Setiap model chat di katalog berfungsi dengan generateText dan streamText, dan model gambar berfungsi dengan generateImage.
Contoh-contoh di bawah ini dijalankan terhadap API langsung dengan ai 7.0 dan @ai-sdk/openai-compatible 3.0.
Instal
npm i ai @ai-sdk/openai-compatible zod
Buat API key di Dashboard → Keys dan
masukkan ke UBERLLM_API_KEY. Akun dimulai dari $0, jadi isi saldo sebelum
panggilan pertama.
Siapkan penyedia
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
export const uberllm = createOpenAICompatible({
name: "uberllm",
apiKey: process.env.UBERLLM_API_KEY,
baseURL: "https://api.uberllm.dev/v1",
includeUsage: true, // token usage on streamed responses too
});
apiKey dikirim sebagai Authorization: Bearer <key>. ID model adalah ID yang ada di
uberllm.dev/models, misalnya
deepseek/deepseek-v4-flash, anthropic/claude-sonnet-5.5 atau
openai/gpt-5.5.
Hasilkan teks
import { generateText } from "ai";
const { text, usage } = await generateText({
model: uberllm("deepseek/deepseek-v4-flash"),
prompt: "Say hello in one short sentence.",
});
console.log(text, usage);
usage.raw.cost_usd adalah biaya panggilan, dalam dolar AS.
Streaming ```ts
import { streamText } from "ai";
const result = streamText({ model: uberllm("deepseek/deepseek-v4-flash"), prompt: "Count from 1 to 5.", }); for await (const delta of result.textStream) { process.stdout.write(delta); } console.log(await result.usage);
---
## Pemanggilan Alat
```ts
import { generateText, tool, stepCountIs } from "ai";
import { z } from "zod";
const { text, steps } = await generateText({
model: uberllm("deepseek/deepseek-v4-flash"),
tools: {
weather: tool({
description: "Get the current temperature in a city, in Celsius",
inputSchema: z.object({ city: z.string() }),
execute: async ({ city }) => ({ city, celsius: 21 }),
}),
},
stopWhen: stepCountIs(3), // call the tool, then answer
prompt: "What is the temperature in Paris right now?",
});
console.log(text);
Sebagian besar model chat mendukung alat. Halaman model di uberllm.dev menyatakan kapan suatu model tidak mendukungnya.
Gambar
Model gambar menggunakan uberllm.imageModel(...) dengan generateImage. SDK meminta
b64_json, jadi gambar akan kembali dalam respons.
import { generateImage } from "ai";
const { image } = await generateImage({
model: uberllm.imageModel("black-forest-labs/flux.2-klein-4b"),
prompt: "A red bicycle on a white background",
size: "1024x1024",
});
// image.uint8Array holds the PNG
ID gambar tercantum di bawah Gambar di uberllm.dev/models.
Model pengeditan (ID yang berakhiran -edit) membutuhkan POST /v1/images/edits, yang
@ai-sdk/openai-compatible tidak panggil. Gunakan panggilan REST di
Buat video atau gambar untuk itu.
Video dan musik
@ai-sdk/openai-compatible tidak memiliki model video atau musik. Video dan musik adalah tugas:
mulai satu dengan POST /v1/videos (atau /v1/music), lalu lakukan polling atau dapatkan callback. Lihat Buat video atau gambar, atau biarkan agen melakukannya melalui server MCP.
Harga
Setiap panggilan dikenakan biaya sesuai yang dibebankan oleh penyedianya. Tidak ada biaya UberLLM untuk permintaan.
Penambahan kredit melalui kartu dikenakan biaya 5.5% + $0.50. Untuk membatasi biaya panggilan chat, kirimkan provider.max_price dalam request body melalui providerOptions:
await generateText({
model: uberllm("deepseek/deepseek-v4-flash"),
prompt: "Hi",
providerOptions: { uberllm: { provider: { max_price: { prompt: 0.2, completion: 0.4 } } } },
});
Lihat Harga dan Model & routing.