Skip to main content
You can use Vercel AI SDK 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.
npm i ai @friendliai/ai-provider
yarn add ai @friendliai/ai-provider
pnpm add ai @friendliai/ai-provider

Instantiation

Instantiate your models using a Friendli provider instance. Choose the example for your endpoint type:
import { friendli } from "@friendliai/ai-provider";

// Automatically select Model APIs
const model = friendli("zai-org/GLM-5.2");
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");
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("");
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:
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:
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.
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:
import { createOpenAI } from "@ai-sdk/openai";

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

Further Resources

Last modified on July 8, 2026