Vercel AI SDK
Vercel AI SDK truy cập UberLLM thông qua nhà cung cấp chính thức @ai-sdk/openai-compatible. Mọi mô hình trò chuyện trong danh mục tương thích với generateText và streamText, và các mô hình hình ảnh tương thích với generateImage.
Các ví dụ dưới đây đã được chạy với API trực tiếp với ai 7.0 và @ai-sdk/openai-compatible 3.0.
Cài đặt
npm i ai @ai-sdk/openai-compatible zod
Tạo một API key trong Dashboard → Keys và
đặt nó vào UBERLLM_API_KEY. Tài khoản bắt đầu từ $0,, vì vậy hãy nạp tiền trước cuộc gọi đầu tiên.
Thiết lập nhà cung cấp
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 được gửi dưới dạng Authorization: Bearer <key>. Model IDs là các ID trên
uberllm.dev/models, ví dụ như
deepseek/deepseek-v4-flash, anthropic/claude-sonnet-5.5 hoặc
openai/gpt-5.5.
Tạo văn bản
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 là chi phí của cuộc gọi, tính bằng đô la Mỹ.
Luồng ```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);
## Gọi công cụ
```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);
Hầu hết các mô hình trò chuyện đều hỗ trợ gọi công cụ. Một trang mô hình trên uberllm.dev sẽ cho biết khi nào một mô hình không hỗ trợ.
Hình ảnh
Mô hình hình ảnh sử dụng uberllm.imageModel(...) với generateImage. SDK yêu cầu
b64_json, nên hình ảnh được trả về trong câu trả lời.
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 hình ảnh được liệt kê dưới mục Hình ảnh trên uberllm.dev/models](uberllm.dev/models](https://uberllm.dev/models)).
Các mô hình chỉnh sửa (ID kết thúc bằng -edit) cần POST /v1/images/edits, mà
@ai-sdk/openai-compatible không gọi. Sử dụng lệnh gọi REST trong
Make a video or image](Make a video or image](./media)) cho những mô hình đó.
Video và âm nhạc
@ai-sdk/openai-compatible không có mô hình video hoặc âm nhạc. Video và âm nhạc là các tác vụ:
bắt đầu một tác vụ với POST /v1/videos (hoặc /v1/music), sau đó thăm dò trạng thái hoặc nhận một callback. Xem Tạo video hoặc hình ảnh, hoặc để một tác nhân thực hiện thông qua MCP server.
Giá cả
Mỗi cuộc gọi có chi phí bằng với mức nhà cung cấp của nó đã tính. Không có phí UberLLM cho các yêu cầu.
Thêm tín dụng bằng thẻ có giá 5.5% + $0.50. Để giới hạn chi phí của một cuộc gọi trò chuyện, hãy truyền
provider.max_price trong phần thân yêu cầu thông qua providerOptions:
await generateText({
model: uberllm("deepseek/deepseek-v4-flash"),
prompt: "Hi",
providerOptions: { uberllm: { provider: { max_price: { prompt: 0.2, completion: 0.4 } } } },
});
Xem Giá cả và Mô hình & định tuyến.