vercel/ai · error · NoSuchModelError
AssemblyAI does not provide language models
Error message
AssemblyAI does not provide language models
What it means
The AssemblyAI provider is transcription-only. Its `languageModel` factory throws NoSuchModelError with modelType 'languageModel' and a custom message clarifying that AssemblyAI does not provide language models, regardless of the requested modelId.
Source
Thrown at packages/assemblyai/src/assemblyai-provider.ts:90
new AssemblyAITranscriptionModel(modelId, {
provider: `assemblyai.transcription`,
url: ({ path }) => `https://api.assemblyai.com${path}`,
headers: getHeaders,
fetch: options.fetch,
});
const provider = function (modelId: AssemblyAITranscriptionModelId) {
return {
transcription: createTranscriptionModel(modelId),
};
};
provider.specificationVersion = 'v4' as const;
provider.transcription = createTranscriptionModel;
provider.transcriptionModel = createTranscriptionModel;
provider.languageModel = () => {
throw new NoSuchModelError({
modelId: 'unknown',
modelType: 'languageModel',
message: 'AssemblyAI does not provide language models',
});
};
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 as AssemblyAIProvider;
}
View on GitHub (pinned to 69428b1f8b)
Solutions
- Use a language-capable provider (OpenAI, Anthropic, Google, etc.) for generateText/streamText.
- Reserve the AssemblyAI provider for `transcribe()` / transcription workflows.
- Fix provider registries so language-model lookups skip AssemblyAI.
Example fix
// before
const result = await generateText({ model: assemblyai.languageModel('universal') });
// after
const transcript = await transcribe({ model: assemblyai.transcriptionModel('universal-2'), audio });
// and use e.g. openai('gpt-4o') for generateText Defensive patterns
Strategy: type-guard
Validate before calling
if (providerId === 'assemblyai') {
throw new Error('AssemblyAI supports only transcription; use a different provider for language models');
} Type guard
function isLanguageModelProvider(p: any): boolean {
try {
p.languageModel?.('probe');
return true;
} catch (e) {
return !(NoSuchModelError.isInstance(e) && e.modelType === 'languageModel');
}
} Try / catch
try {
return assemblyai.languageModel(id);
} catch (error) {
if (NoSuchModelError.isInstance(error)) {
throw new Error(`Provider does not support language models: ${error.message}`);
}
throw error;
} Prevention
- Use AssemblyAI only via `transcribe()`/`transcriptionModel`.
- Keep separate provider entries for language vs transcription capabilities.
- Validate model-type/provider pairs in unit tests before runtime.
When it happens
Trigger: Calling `assemblyai.languageModel(...)` or passing the AssemblyAI provider where a chat/language model is expected (e.g. `generateText({ model: assemblyai(...) })`).
Common situations: Assuming every @ai-sdk provider supports chat; building a multi-provider registry that resolves language models by provider name; mistaking transcription (speech-to-text) for LLM capability.
Related errors
- embeddingModel
- imageModel
- embeddingModel
- imageModel
- The provider does not support file uploads. Make sure it exp
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/36135c76a75cb614.
Report an issue: GitHub.