MớiTrỏ bất kỳ agent nào về UberLLM — một key, mọi model, bằng giá niêm yết hoặc rẻ hơn.
UberLLM

Sử dụng Vercel AI SDK với UberLLM (mô hình rẻ hơn, cùng mã)

Cài đặt @ai-sdk/openai-compatible, tạo một provider với baseURL https://api.uberllm.dev/v1 và khóa UberLLM của bạn, và truyền uberllm("<model id>") vào bất cứ đâu ứng dụng của bạn đang truyền một model. Không có gì khác trong ứng dụng thay đổi.

Các bước

  1. Tạo một khóa trên trang khóa của bạn và nạp một ít tín dụng (tài khoản bắt đầu từ $0).
  2. Cài đặt nhà cung cấp:
npm i ai @ai-sdk/openai-compatible
  1. Đặt khóa vào .env.local (Next.js) hoặc môi trường máy chủ của bạn:
UBERLLM_API_KEY=ull_your_key
  1. Tạo nhà cung cấp một lần, ví dụ trong 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. Sử dụng nó ở nơi bạn đã sử dụng một mô hình trước đây:
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.",
});

Di chuyển một ứng dụng đã sử dụng @ai-sdk/openai

Đổi đối số model và giữ nguyên mọi thứ khác:

// 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 là các ID trên uberllm.dev/models và luôn có tên nhà cung cấp ở phía trước (openai/…, anthropic/…, deepseek/…). Đó là cách bạn có thể chạy GPT, Claude, Gemini và các model mở từ một khóa và so sánh chúng bằng cách thay đổi một chuỗi.

Một route chat Next.js dành cho useChat

useChat từ @ai-sdk/react gửi đến /api/chat theo mặc định. Route này sẽ trả lời nó:

// 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();
}

Giữ key trên server. Đừng bao giờ đặt nó vào biến NEXT_PUBLIC_: bất kỳ ai cũng có thể đọc nó từ trang và tiêu tốn số dư của bạn.

Giới hạn chi phí một cuộc gọi

Yêu cầu trò chuyện chấp nhận provider.max_price (đô la cho mỗi triệu token). Truyền nó qua providerOptions với nhà cung cấp name bạn đã chọn:

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

Nếu hiện tại không ai bán mô hình dưới mức giá đó, cuộc gọi sẽ bị từ chối với max_price_exceeded và không có phí nào được tính.

Khắc phục sự cố

  • 401 invalid_api_key: khóa không đến được máy chủ. Khởi động lại next dev sau khi chỉnh sửa .env.local, và kiểm tra process.env.UBERLLM_API_KEY đã được đặt ở nơi mã chạy (máy chủ, không phải trình duyệt).
  • 402 insufficient_credits: thêm tín dụng trên trang tín dụng.
  • 404 model_not_found: id sai hoặc thiếu nhà sản xuất. Sao chép nó từ trang của mô hình.
  • 400 wrong_endpoint: bạn đã truyền một mô hình hình ảnh hoặc video cho streamText. Các mô hình hình ảnh đi qua uberllm.imageModel(…) với generateImage; video là một công việc, xem Tạo video hoặc hình ảnh.
  • Mức sử dụng trống trên các luồng: đặt includeUsage: true trên nhà cung cấp, như trên.

Đọc thêm

Các model tốt cho một ứng dụng

Tất cả các tác vụ này đều hỗ trợ tool calls. Cái đầu tiên nằm trong đoạn mã bên dưới.

ModelModel id (dán cái này)Giá hiện tại
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

Giá ở lần dựng hằng giờ gần nhất, không cộng phí · mọi model →

Câu hỏi thường gặp

Vercel AI SDK có hoạt động với UberLLM không?

Có. Sử dụng nhà cung cấp chính thức @ai-sdk/openai-compatible với baseURL https://api.uberllm.dev/v1 và khóa UberLLM của bạn. generateText, streamText, useChat, tool calls và generateImage hoạt động.

Tôi có cần @ai-sdk/openai hay @ai-sdk/anthropic nữa không?

Không. Một nhà cung cấp @ai-sdk/openai-compatible có thể truy cập mọi mô hình trò chuyện trên UberLLM, bao gồm Claude, GPT và Gemini, bằng model id.

Tôi có thể tạo video bằng AI SDK không?

Không phải thông qua @ai-sdk/openai-compatible, vì nó không có mô hình video. Video là các tác vụ trên UberLLM: bắt đầu một tác vụ với POST /v1/video/generations và kiểm tra trạng thái của nó, như được trình bày trong tài liệu về media.