zhipu-ai-provider
Version:
Vercel AI SDK Custom Provider for Services from Zhipu (Z.ai)
169 lines (127 loc) • 6.69 kB
Markdown
This is a [Zhipu](https://www.zhipuai.cn/) (Z.ai) provider for the [Vercel AI SDK](https://ai-sdk.dev/). It supports AI SDK 6 and the `LanguageModelV3` custom-provider contract for language models, plus embedding and image models provided on [bigmodel.cn](https://bigmodel.cn/) or [z.ai](https://docs.z.ai/) by [ZhipuAI](https://www.zhipuai.cn/).
```bash
npm i zhipu-ai-provider
pnpm add zhipu-ai-provider
yarn add zhipu-ai-provider
bun add zhipu-ai-provider
```
Set up your `.env` file / environment with your API key.
```bash
ZHIPU_API_KEY=<your-api-key>
```
You can import the default provider instance `zhipu` from `zhipu-ai-provider` (This automatically reads the API key from the environment variable `ZHIPU_API_KEY`):
```ts
import { zhipu } from 'zhipu-ai-provider' // for bigmodel.cn
// or
import { zai } from 'zhipu-ai-provider' // for z.ai
```
Alternatively, you can create a provider instance with custom configuration with `createZhipu`:
```ts
import { createZhipu } from 'zhipu-ai-provider';
const zhipu = createZhipu({
baseURL: "https://open.bigmodel.cn/api/paas/v4",
apiKey: "your-api-key"
});
```
You can use the following optional settings to customize the Zhipu provider instance:
- **baseURL**: *string*
- Use a different URL prefix for API calls, e.g. to use proxy servers. The default prefix is `https://open.bigmodel.cn/api/paas/v4`.
- **apiKey**: *string*
- Your API key for Zhipu [BigModel Platform](https://bigmodel.cn/). If not provided, the provider will attempt to read the API key from the environment variable `ZHIPU_API_KEY`.
- **headers**: *Record<string,string>*
- Custom headers to include in the requests.
```ts
import { generateText } from 'ai';
import { zhipu } from 'zhipu-ai-provider';
const { text } = await generateText({
model: zhipu('glm-5'), // or use 'GLM-4.7-Flash' for free
prompt: 'Why is the sky blue?',
});
console.log(result)
```
To disable thinking for hybrid models like `glm-5`, set `thinking.type` to `disabled` either in the model options or in `providerOptions.zhipu`:
```ts
const { text } = await generateText({
model: zhipu('glm-5', {
thinking: {
type: 'disabled'
},
}),
prompt: 'Explain quantum computing in simple terms.',
});
```
or
```ts
const { text } = await generateText({
model: zhipu('glm-5'),
prompt: 'Explain quantum computing in simple terms.',
providerOptions: {
zhipu: {
thinking: {
type: 'disabled'
}
}
}
});
```
Only function tools are supported. Provider-defined tools are not currently implemented.
```ts
const { embedding } = await embed({
model: zhipu.embeddingModel("embedding-3", {
dimensions: 256, // Optional, defaults to 2048
}),
value: "Hello, world!",
});
console.log(embedding);
```
`textEmbeddingModel(...)` is still available as a deprecated compatibility alias.
Zhipu supports image generation with `glm-image` or `cogview` models, but the api does not return images in base64 or buffer format, so the image urls are returned in the `providerMetadata` field.
```ts
import { experimental_generateImage as generateImage } from 'ai';
import { zhipu } from 'zhipu-ai-provider';
const { image, providerMetadata } = await generateImage({
model: zhipu.imageModel('glm-image'), // or use 'Cogview-3-Flash' for free
prompt: 'A beautiful landscape with mountains and a river',
size: '1024x1024', // optional
providerOptions: { // optional
zhipu: {
quality: 'hd'
}
}
});
console.log(providerMetadata.zhipu.images[0].url)
```
| Feature | Zhipu ([bigmodel.cn](https://bigmodel.cn/)) | Z.ai ([z.ai](https://z.ai/)) |
| --------------------------------------------------------------- | ------------------------------------------- | ---------------------------- |
| Text generation | ✓ | ✓ |
| Streaming | ✓ | ✓ |
| Embedding | ✓ | x |
| Image generation | ✓ | ✓ |
| Tools | ✓ | ✓ |
| JSON response format | ✓ | ✓ |
| Reasoning | ✓ | ✓ |
| Vision | ✓ | ✓ |
| Vision reasoning | ✓ | ✓ |
| Schema-guided structured output for reasoning and vision models | — | — |
| Provider-defined tools | — | — |
| Video models | — | — |
| Audio models | — | — |
| OCR models | — | — |
- **[Zhipu documentation](https://bigmodel.cn/dev/welcome)**
- **[Z.AI documentation](https://docs.z.ai/)**
- **[Vercel AI SDK documentation](https://sdk.vercel.ai/docs/introduction)**
- **[Zhipu AI Provider Repo](https://github.com/Xiang-CH/zhipu-ai-provider)**
Runnable maintainer-facing demo scripts live in [examples/README.md](/Users/cxiang/Projects/vercel-ai-provider-zhipu/examples/README.md). They cover text generation, streaming, reasoning, tool calls, vision prompts, embeddings, and image generation.