新着どんなエージェントもUberLLMにつなぐだけ。1つのキーで全モデル、定価以下で。
UberLLM

Vercel AI SDK

Vercel AI SDK は、公式の@ai-sdk/openai-compatibleプロバイダーを通じてUberLLMを利用します。 カタログ 内のすべてのチャットモデルは generateText と streamText に対応しており、画像モデルは generateImage に対応しています。

以下の例は、ai 7.0 と @ai-sdk/openai-compatible 3.0 を使用して、ライブAPIに対して実行されました。

インストール

npm i ai @ai-sdk/openai-compatible zod

Dashboard → Keys]でAPIキーを作成し、UBERLLM_API_KEYに設定してください。アカウントは$0,から開始されるため、最初の呼び出しの前にクレジットを追加してください。

プロバイダーを設定する

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 は Authorization: Bearer <key> として送信されます。モデルIDは、 uberllm.dev/models にあるIDです。例えば、 deepseek/deepseek-v4-flash、anthropic/claude-sonnet-5.5、または openai/gpt-5.5 です。

テキスト生成

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 は、この呼び出しにかかった費用(米ドル)です。

ストリーム

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);

ツール呼び出し

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);

ほとんどのチャットモデルはツールに対応しています。対応していないモデルについては、uberllm.devのモデルページにその旨が記載されています。

画像

画像モデルはuberllm.imageModel(...)をgenerateImageと使用します。SDKはb64_jsonを要求するため、画像は応答で返されます。

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は、uberllm.dev/models]の画像の下にリストされています。編集モデル(IDが-editで終わるもの)はPOST /v1/images/editsを受け取りますが、これは@ai-sdk/openai-compatibleが呼び出しません。それらには、Make a video or image]にあるREST呼び出しを使用してください。

ビデオと音楽

@ai-sdk/openai-compatible にはビデオまたは音楽モデルがありません。ビデオと音楽はジョブです: POST /v1/videos (または /v1/music) で開始し、その後ポーリングするか、コールバックを受け取ります。 ビデオまたは画像を作成する をご覧いただくか、MCPサーバー を介してエージェントに実行させてください。

料金

各呼び出しの費用は、プロバイダーが請求した金額と同額です。リクエストにUberLLMの手数料はかかりません。 カードによるクレジット追加には、5.5% + $0.50の費用がかかります。チャット呼び出しにかかる費用の上限を設定するには、リクエストボディでproviderOptionsを介してprovider.max_priceを渡してください。

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

料金 および モデルとルーティング をご覧ください。