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
대시보드 → 키에서 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는 다음에서 찾을 수 있는 ID입니다.
uberllm.dev/models](uberllm.dev/models](https://uberllm.dev/models)), 예를 들어
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]의 Images 아래에 나열되어 있습니다.
편집 모델(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 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 } } } },
});