> ## Documentation Index
> Fetch the complete documentation index at: https://docs.deepinfra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# AI SDK (Vercel)

> Use DeepInfra models with the Vercel AI SDK for TypeScript/JavaScript.

The [AI SDK](https://sdk.vercel.ai/) by Vercel is the AI toolkit for TypeScript and JavaScript from the creators of Next.js. DeepInfra has a first-party AI SDK provider.

See the [full AI SDK docs for DeepInfra](https://sdk.vercel.ai/providers/ai-sdk-providers/deepinfra).

## Installation

```bash theme={null}
npm install ai @ai-sdk/deepinfra
```

Get your API key from the [Dashboard](https://deepinfra.com/dash/api_keys).

## Text generation

```javascript theme={null}
import { createDeepInfra } from "@ai-sdk/deepinfra";
import { generateText } from "ai";

const deepinfra = createDeepInfra({ apiKey: "$DEEPINFRA_TOKEN" });

const { text, usage, finishReason } = await generateText({
  model: deepinfra("deepseek-ai/DeepSeek-V3"),
  prompt: "Write a vegetarian lasagna recipe for 4 people.",
});

console.log(text);
```

With a system message:

```javascript theme={null}
const { text } = await generateText({
  model: deepinfra("deepseek-ai/DeepSeek-V3"),
  prompt: "Write a vegetarian lasagna recipe for 4 people.",
  system: "You are a professional writer. You write simple, clear, and concise content.",
});
```

## Streaming

```javascript theme={null}
import { createDeepInfra } from "@ai-sdk/deepinfra";
import { streamText } from "ai";

const deepinfra = createDeepInfra({ apiKey: "$DEEPINFRA_TOKEN" });

const result = streamText({
  model: deepinfra("deepseek-ai/DeepSeek-V3"),
  prompt: "Invent a new holiday and describe its traditions.",
  system: "You are a professional writer. You write simple, clear, and concise content.",
});

for await (const textPart of result.textStream) {
  process.stdout.write(textPart);
}
```

## Conversations

```javascript theme={null}
const { text } = await generateText({
  model: deepinfra("deepseek-ai/DeepSeek-V3"),
  messages: [
    { role: "system", content: "Respond like a michelin starred chef." },
    { role: "user", content: "Can you name at least two different techniques to cook lamb?" },
    { role: "assistant", content: "Bonjour! Let me tell you..." },
    { role: "user", content: "Tell me more about the second method." },
  ],
});
```

Streaming conversations work the same way — use `streamText` with `messages`.

## Structured data

Generate typed, structured output using Zod schemas:

```javascript theme={null}
import { createDeepInfra } from "@ai-sdk/deepinfra";
import { generateObject } from "ai";
import { z } from "zod";

const deepinfra = createDeepInfra({ apiKey: "$DEEPINFRA_TOKEN" });

const { object } = await generateObject({
  model: deepinfra("deepseek-ai/DeepSeek-V3"),
  schema: z.object({
    recipe: z.object({
      name: z.string(),
      ingredients: z.array(z.object({ name: z.string(), amount: z.string() })),
      steps: z.array(z.string()),
    }),
  }),
  prompt: "Generate a lasagna recipe.",
});

console.log(object.recipe.name);
```

Enum output:

```javascript theme={null}
const { object } = await generateObject({
  model: deepinfra("deepseek-ai/DeepSeek-V3"),
  output: "enum",
  enum: ["action", "comedy", "drama", "horror", "sci-fi"],
  prompt: 'Classify: "A group of astronauts travel through a wormhole..."',
});
```

## Tool / function calling

```javascript theme={null}
import { createDeepInfra } from "@ai-sdk/deepinfra";
import { generateText, tool } from "ai";
import { z } from "zod";

const deepinfra = createDeepInfra({ apiKey: "$DEEPINFRA_TOKEN" });

const result = await generateText({
  model: deepinfra("deepseek-ai/DeepSeek-V3"),
  tools: {
    weather: tool({
      description: "Get the weather in a location",
      parameters: z.object({
        location: z.string().describe("The location to get the weather for"),
      }),
      execute: async ({ location }) => ({
        location,
        temperature: 72 + Math.floor(Math.random() * 21) - 10,
      }),
    }),
  },
  prompt: "What is the weather in San Francisco?",
  maxSteps: 2,
});

console.log(result.text);
```
