# Vercel AI SDK (/es/docs/guides/vercel-ai-sdk)

Usa los modelos de cheapaimodel en el Vercel AI SDK a través del proveedor compatible con OpenAI.



El AI SDK se conecta a servicios compatibles con OpenAI mediante el proveedor `@ai-sdk/openai-compatible`. Crea un proveedor para cheapaimodel y pasa sus modelos a `generateText`, `streamText` y las demás funciones del AI SDK.

|               | Parámetro del AI SDK    | Valor                                                                                                 |
| ------------- | ----------------------- | ----------------------------------------------------------------------------------------------------- |
| Base URL      | `baseURL`               | `https://api.cheapaimodel.ai/v1`                                                                      |
| Clave de API  | `apiKey`                | La clave que creaste en la página [Claves de API](https://console.cheapaimodel.ai/keys) de la consola |
| ID del modelo | `cheapaimodel(modelId)` | `deepseek-v4-1-flash` o cualquier ID del [catálogo](/es/models)                                       |

## Configuración [#set-it-up]

```bash title="Terminal"
npm install ai @ai-sdk/openai-compatible
```

```ts title="cheapaimodel.ts"
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";

export const cheapaimodel = createOpenAICompatible({
  name: "cheapaimodel",
  baseURL: "https://api.cheapaimodel.ai/v1",
  apiKey: process.env.CHEAPAIMODEL_API_KEY,
  includeUsage: true, // token usage on streamed responses
});
```

```ts title="generate.ts"
import { generateText } from "ai";
import { cheapaimodel } from "./cheapaimodel";

const { text } = await generateText({
  model: cheapaimodel("deepseek-v4-1-flash"),
  prompt: "Explain recursion in one sentence.",
});
console.log(text);
```

El proveedor envía las solicitudes a `/v1/chat/completions`. Funciona igual en un route handler de Next.js: pasa `cheapaimodel("deepseek-v4-1-flash")` como `model`.

## Streaming [#streaming]

```ts title="stream.ts"
import { streamText } from "ai";
import { cheapaimodel } from "./cheapaimodel";

const result = streamText({
  model: cheapaimodel("deepseek-v4-1-flash"),
  prompt: "Write a haiku about rivers.",
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}
console.log("\nTokens:", (await result.usage).totalTokens);
```

## Errores comunes [#common-mistakes]

* **`Unauthenticated request to AI Gateway.`** El modelo se pasó como una cadena simple, por ejemplo `model: "deepseek-v4-1-flash"`. El AI SDK envía las cadenas de modelo simples al Vercel AI Gateway, no a cheapaimodel. Mejor pasa `cheapaimodel("deepseek-v4-1-flash")`.
* **`Not Found` o `Invalid URL (POST /v1/chat/completions/chat/completions)`.** A `baseURL` le falta `/v1`, o incluye la ruta del endpoint. Defínelo exactamente como `https://api.cheapaimodel.ai/v1`; el proveedor agrega `/chat/completions` por su cuenta.
* **El uso de tokens es `undefined` en las llamadas con streaming.** El proveedor compatible con OpenAI solo pide el uso en streaming cuando defines `includeUsage: true`. Mantenlo en la configuración del proveedor.
* **Chats de varios turnos con `@ai-sdk/openai`.** Su `createOpenAI` también acepta nuestra Base URL, pero el `openai(modelId)` predeterminado llama a la API de Responses, y cuando le devuelves en `messages` las respuestas anteriores del SDK, las envía como IDs `item_reference` en lugar de su texto. Eso solo funciona si el servidor guardó esas respuestas. Usa el proveedor compatible con OpenAI de arriba, o `openai.chat(modelId)`.
