Vercel AI SDK
AI SDK funciona con Inferray a través de sus providers estándar. Elige el que tenga el formato de API que prefieras; todos dan acceso a los mismos modelos.
Provider compatible con OpenAI
La opción más directa: Chat Completions para todos los modelos.
npm install ai @ai-sdk/openai-compatible
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
import { generateText, streamText } from "ai";
const inferray = createOpenAICompatible({
name: "inferray",
baseURL: "https://api.inferray.com/v1",
apiKey: process.env.INFERRAY_API_KEY,
});
const { text } = await generateText({
model: inferray("claude-sonnet-4-6"),
prompt: "Write a haiku about caching.",
});
const result = streamText({
model: inferray("gpt-5.5"),
prompt: "Explain backpressure in two sentences.",
});
for await (const delta of result.textStream) process.stdout.write(delta);
Herramientas
import { generateText, stepCountIs, tool } from "ai";
import { z } from "zod";
const { text } = await generateText({
model: inferray("gpt-5.5"),
tools: {
weather: tool({
description: "Current weather for a city",
inputSchema: z.object({ city: z.string() }),
execute: async ({ city }) => ({ city, temperatureC: 18 }),
}),
},
stopWhen: stepCountIs(5),
prompt: "Do I need a jacket in Berlin?",
});
generateObject y la salida estructurada funcionan igual, en los modelos que admiten salidas estructuradas.
Imágenes y embeddings
import { embedMany, generateImage } from "ai";
const { image } = await generateImage({
model: inferray.imageModel("gpt-image-2"),
prompt: "A lighthouse in a storm, oil painting",
});
const { embeddings } = await embedMany({
model: inferray.textEmbeddingModel("text-embedding-3-small"),
values: ["first document", "second document"],
});
Las versiones anteriores de AI SDK exportan generateImage como experimental_generateImage.
Providers de OpenAI y Anthropic
@ai-sdk/openai usa la Responses API, y @ai-sdk/anthropic la Messages API. Ambos aceptan una Base URL:
import { createOpenAI } from "@ai-sdk/openai";
import { createAnthropic } from "@ai-sdk/anthropic";
const openai = createOpenAI({ baseURL: "https://api.inferray.com/v1", apiKey: process.env.INFERRAY_API_KEY });
const anthropic = createAnthropic({ baseURL: "https://api.inferray.com/v1", apiKey: process.env.INFERRAY_API_KEY });
await generateText({ model: anthropic("claude-opus-4-8"), prompt: "Hello" });
Úsalos cuando necesites opciones específicas del provider, como las opciones de provider thinking o cacheControl de Anthropic.
Strings de modelo simples (protocolo gateway)
Cuando pasas un string simple —model: "claude-sonnet-4-6"—, AI SDK lo resuelve con su provider gateway predeterminado, que usa su propio protocolo. Inferray también habla ese protocolo, así que a una app escrita de esa forma solo hay que cambiarle el provider:
import { createGateway } from "@ai-sdk/gateway";
globalThis.AI_SDK_DEFAULT_PROVIDER = createGateway({
baseURL: "https://api.inferray.com/v3/ai",
apiKey: process.env.INFERRAY_API_KEY,
});
| AI SDK | Base URL |
|---|---|
| 5 | https://api.inferray.com/v1/ai |
| 6 | https://api.inferray.com/v3/ai |
| 7 | https://api.inferray.com/v4/ai |
Usa los IDs de modelo de Inferray tal como aparecen en el catálogo, sin prefijo de provider. gateway.getAvailableModels() lista los modelos de texto que tu key puede usar, y gateway.getCredits() devuelve tu saldo. Este protocolo admite generación de texto, streaming, function tools y entradas de imagen; las herramientas nativas de cada provider no son compatibles.