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

# Vercel AI SDK

> Use the Vercel AI SDK with FriendliAI for streaming chat UIs in Next.js and React. Connect to Model APIs or Dedicated Endpoints with minimal setup.

You can use [**Vercel AI SDK**](https://sdk.vercel.ai) to interact with FriendliAI.
This makes migration of existing applications already using Vercel AI SDK particularly easy.

## How to Use

Before you start, ensure you've already obtained the `API_KEY` from the [Friendli Suite > Personal Settings > API Keys](https://friendli.ai/suite/~/setting/keys).

<CodeGroup>
  ```bash npm theme={null}
  npm i ai @friendliai/ai-provider
  ```

  ```bash yarn theme={null}
  yarn add ai @friendliai/ai-provider
  ```

  ```bash pnpm theme={null}
  pnpm add ai @friendliai/ai-provider
  ```
</CodeGroup>

### Instantiation

Instantiate your models using a FriendliAI provider instance.
Choose the example for your endpoint type:

<CodeGroup>
  ```ts Model APIs {2-4} theme={null}
  import { friendli } from "@friendliai/ai-provider";

  // Automatically select Model APIs
  const model = friendli("zai-org/GLM-5.2");
  ```

  ```ts Dedicated Endpoints {2-7} theme={null}
  import { createFriendli } from "@friendliai/ai-provider";

  const friendli = createFriendli({
    baseURL: "dedicated",
  });

  // Replace YOUR_ENDPOINT_ID with the ID of your endpoint, e.g. "zbimjgovmlcb"
  const model = friendli("YOUR_ENDPOINT_ID");
  ```

  ```ts Friendli Container {2-9} theme={null}
  import { createFriendli } from "@friendliai/ai-provider";

  const friendli = createFriendli({
    // Update with the URL where your container is running.
    baseURL: "http://localhost:8000/v1",
  });

  // Containers do not require a model id.
  const model = friendli("");
  ```
</CodeGroup>

To target a specific endpoint type explicitly, pass `baseURL` when creating the provider with `createFriendli`. Accepted values include `"serverless"`, `"dedicated"`, or a full API URL (for example, `https://api.friendli.ai/serverless/v1`).

### Example: Generating Text

Generate a response with the `generateText` function:

```ts theme={null}
import { friendli } from "@friendliai/ai-provider";
import { generateText } from "ai";

const { text } = await generateText({
  model: friendli("zai-org/GLM-5.2"),
  prompt: "Write a vegetarian lasagna recipe for 4 people.",
});

console.log(text);
```

### Example: Using Enforcing Patterns (Regex)

Specify a specific pattern (e.g., CSV), character sets, or specific language characters (e.g., Korean Hangul characters) for your LLM's output.
Pass the regex as a string via `providerOptions.friendliai.regex`:

```ts {6-10} theme={null}
import { friendli } from "@friendliai/ai-provider";
import { generateText } from "ai";

const { text } = await generateText({
  model: friendli("zai-org/GLM-5.2"),
  prompt: "조선 왕조의 첫번째 왕은 누구입니까 (Who is the first king of the Joseon Dynasty)?",
  providerOptions: {
    friendliai: {
      regex: "[\n ,.?!0-9\uac00-\ud7af]*",
    },
  },
});

console.log(text);
```

## OpenAI Compatibility

You can also use `@ai-sdk/openai` as the APIs are OpenAI-compatible.

```ts theme={null}
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";

const friendli = createOpenAI({
  baseURL: "https://api.friendli.ai/serverless/v1",
  apiKey: process.env.API_KEY,
});

const { text } = await generateText({
  model: friendli.chat("zai-org/GLM-5.2"),
  prompt: "Say hello in one short sentence.",
});
```

If you are using Dedicated Endpoints:

```ts {4-5} theme={null}
import { createOpenAI } from "@ai-sdk/openai";

const friendli = createOpenAI({
  baseURL: "https://api.friendli.ai/dedicated/v1",
  apiKey: process.env.API_KEY,
});
```

## Further Resources

* [Implementing a simple streaming chat with Next.js](https://sdk.vercel.ai/examples/next-app/basics/streaming-text-generation)
* [Build a Next.js app with the Vercel AI SDK](https://sdk.vercel.ai/docs/getting-started/nextjs-app-router)
* [Explore the Vercel AI SDK Core Reference](https://sdk.vercel.ai/docs/ai-sdk-core/overview)
