vercel/ai · error · NoSuchModelError
LMNT does not provide embedding models
Error message
LMNT does not provide embedding models
What it means
LMNT provides only speech models; its embeddingModel accessor always throws NoSuchModelError with this message. Embeddings are simply not part of LMNT's offering, so this is an intentional capability guard.
Source
Thrown at packages/lmnt/src/lmnt-provider.ts:91
return {
speech: createSpeechModel(modelId),
};
};
provider.specificationVersion = 'v4' as const;
provider.speech = createSpeechModel;
provider.speechModel = createSpeechModel;
provider.languageModel = (modelId: string) => {
throw new NoSuchModelError({
modelId,
modelType: 'languageModel',
message: 'LMNT does not provide language models',
});
};
provider.embeddingModel = (modelId: string) => {
throw new NoSuchModelError({
modelId,
modelType: 'embeddingModel',
message: 'LMNT does not provide embedding models',
});
};
provider.imageModel = (modelId: string) => {
throw new NoSuchModelError({
modelId,
modelType: 'imageModel',
message: 'LMNT does not provide image models',
});
};
return provider as LMNTProvider;
}
/**View on GitHub (pinned to 69428b1f8b)
Solutions
- Use an embedding-capable provider (openai.textEmbeddingModel, google, amazon-bedrock, etc.)
- Keep LMNT only for speech: lmnt.speech(modelId)
- Fix your provider registry so the embedding slot points to an embeddings provider
Example fix
// before
const { embedding } = await embed({ model: lmnt.embeddingModel('x'), value: 'text' });
// after
const { embedding } = await embed({ model: openai.textEmbeddingModel('text-embedding-3-small'), value: 'text' }); Defensive patterns
Strategy: type-guard
Validate before calling
// ensure the embedding provider supports embeddings
if (providerIsLMNT(embeddingProvider)) {
embeddingProvider = openai.textEmbeddingModel('text-embedding-3-small');
} Type guard
function supportsEmbeddings(p: any): boolean {
try { p.embeddingModel?.('probe'); return true; } catch { return false; }
} Try / catch
try {
await embed({ model: lmnt.embeddingModel(id), value });
} catch (e) {
if (NoSuchModelError.isInstance(e) && e.modelType === 'embeddingModel') {
// fall back to an embeddings-capable provider
} else throw e;
} Prevention
- Configure embedding slots with providers that ship embedding models (openai, google, etc.)
- Keep LMNT scoped to speech in registries/config
- Document per-provider modality support for your team
- Fail fast at config load time by probing provider capabilities
When it happens
Trigger: Calling lmnt.embeddingModel('some-model') or passing the LMNT provider where an EmbeddingModel is expected, e.g. in embed/embedMany.
Common situations: Configuring an embedding registry entry to LMNT by mistake, or copy-pasting embedding setup from OpenAI/Google examples.
Related errors
- LMNT does not provide language models
- LMNT does not provide image models
- AI_NoSuchModelError
- embeddingModel
- ElevenLabs does not provide embedding models
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/d027081d889defdc.
Report an issue: GitHub.