Saltar al contenido

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 SDKBase URL
5https://api.inferray.com/v1/ai
6https://api.inferray.com/v3/ai
7https://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.