vercel/ai · error · NoSuchModelError
No such imageModel: ${modelId}
Error message
No such imageModel: ${modelId} What it means
The z.ai provider does not implement image models; its imageModel factory unconditionally throws NoSuchModelError with modelType 'imageModel'. Only language models are supported by this provider, so any imageModel lookup fails immediately without a network call.
Source
Thrown at packages/zai/src/zai-provider.ts:97
new ZaiChatLanguageModel(modelId, {
provider: 'zai.chat',
baseURL,
headers: getHeaders,
fetch: options.fetch,
});
const provider = (modelId: ZaiChatModelId) => createLanguageModel(modelId);
provider.specificationVersion = 'v4' as const;
provider.languageModel = createLanguageModel;
provider.chat = createLanguageModel;
provider.embeddingModel = (modelId: string) => {
throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });
};
provider.textEmbeddingModel = provider.embeddingModel;
provider.imageModel = (modelId: string) => {
throw new NoSuchModelError({ modelId, modelType: 'imageModel' });
};
return provider;
}
export const zai = createZai();
View on GitHub (pinned to 69428b1f8b)
Solutions
- Use an image-capable provider, e.g. openai.image('gpt-image-1') or another provider implementing image models.
- Restrict zai usage to text/chat workloads in your model registry.
- Check @ai-sdk/zai release notes for future image model support.
Example fix
// before
const { image } = await generateImage({ model: zai.imageModel('cogview-4'), prompt });
// after
import { openai } from '@ai-sdk/openai';
const { image } = await generateImage({ model: openai.image('gpt-image-1'), prompt }); Defensive patterns
Strategy: fallback
Validate before calling
const ZAI_SUPPORTS_IMAGES = false;
function getImageModel(preferred: 'zai' | 'openai') {
if (preferred === 'zai' && !ZAI_SUPPORTS_IMAGES) {
return openai.image('gpt-image-1');
}
// ...
} Type guard
function supportsImages(provider: any): boolean {
return typeof provider?.imageModel === 'function' &&
!/NoSuchModelError/.test(provider.imageModel.toString());
} Try / catch
try {
return await generateImage({ model: zai.imageModel(id), prompt });
} catch (e) {
if (NoSuchModelError.isInstance(e) && e.modelType === 'imageModel') {
return await generateImage({ model: openai.image('gpt-image-1'), prompt });
}
throw e;
} Prevention
- Check the provider README for supported capabilities (language/image/embedding) before wiring generateImage.
- Centralize image model selection so zai cannot be chosen for image tasks.
- Add CI tests asserting image routes resolve to image-capable providers.
When it happens
Trigger: zai.imageModel('cogview-4') called directly; generateImage() with model: zai('some-model'); provider factories that resolve image models by provider string.
Common situations: Multi-provider image pipelines routing to zai by mistake; assuming z.ai image APIs are wrapped by the SDK; configuration tables listing providers without per-capability support flags.
Related errors
- AI_NoSuchModelError
- imageModel
- ElevenLabs does not provide image models
- No such embeddingModel: ${modelId}
- imageModel
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/5b99f89980c6c754.
Report an issue: GitHub.