新把任何智能体接入 UberLLM:一个密钥,所有模型,价格不高于官方价。
UberLLM

Vercel AI SDK

Vercel AI SDK 通过其官方@ai-sdk/openai-compatible提供商连接到 UberLLM。 catalog 中的每个聊天模型都支持 generateText 和 streamText,图像模型则支持 generateImage。

以下示例是针对实时 API 运行的,使用了 ai 7.0 和 @ai-sdk/openai-compatible 3.0。

安装

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

在 Dashboard → Keys 中创建 API key,并将其放入 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](uberllm.dev/models](https://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 是本次调用的费用,单位为美元。

流式传输 ```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);


---
## 工具调用

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

大多数聊天模型都支持工具。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 不会调用它。对于这些模型,请使用 制作视频或图像 中的 REST 调用。

视频和音乐

@ai-sdk/openai-compatible 没有视频或音乐模型。视频和音乐是任务: 使用 POST /v1/videos(或 /v1/music)启动一个,然后轮询它或获取回调。请参阅 制作视频或图像,或让代理通过 MCP server 来完成。

价格

每次调用费用取决于其提供商的收费。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 } } } },
});

请参阅 定价 和 模型与路由。