{"record":{"id":"d027081d889defdc","repo":"vercel/ai","slug":"lmnt-does-not-provide-embedding-models","errorCode":null,"errorMessage":"LMNT does not provide embedding models","messagePattern":"LMNT does not provide embedding models","errorType":"exception","errorClass":"NoSuchModelError","httpStatus":null,"severity":"error","filePath":"packages/lmnt/src/lmnt-provider.ts","lineNumber":91,"sourceCode":"    return {\n      speech: createSpeechModel(modelId),\n    };\n  };\n\n  provider.specificationVersion = 'v4' as const;\n  provider.speech = createSpeechModel;\n  provider.speechModel = createSpeechModel;\n\n  provider.languageModel = (modelId: string) => {\n    throw new NoSuchModelError({\n      modelId,\n      modelType: 'languageModel',\n      message: 'LMNT does not provide language models',\n    });\n  };\n\n  provider.embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({\n      modelId,\n      modelType: 'embeddingModel',\n      message: 'LMNT does not provide embedding models',\n    });\n  };\n\n  provider.imageModel = (modelId: string) => {\n    throw new NoSuchModelError({\n      modelId,\n      modelType: 'imageModel',\n      message: 'LMNT does not provide image models',\n    });\n  };\n\n  return provider as LMNTProvider;\n}\n\n/**","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/lmnt/src/lmnt-provider.ts#L73-L109","documentation":"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.","triggerScenarios":"Calling lmnt.embeddingModel('some-model') or passing the LMNT provider where an EmbeddingModel is expected, e.g. in embed/embedMany.","commonSituations":"Configuring an embedding registry entry to LMNT by mistake, or copy-pasting embedding setup from OpenAI/Google examples.","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"],"exampleFix":"// before\nconst { embedding } = await embed({ model: lmnt.embeddingModel('x'), value: 'text' });\n// after\nconst { embedding } = await embed({ model: openai.textEmbeddingModel('text-embedding-3-small'), value: 'text' });","handlingStrategy":"type-guard","validationCode":"// ensure the embedding provider supports embeddings\nif (providerIsLMNT(embeddingProvider)) {\n  embeddingProvider = openai.textEmbeddingModel('text-embedding-3-small');\n}","typeGuard":"function supportsEmbeddings(p: any): boolean {\n  try { p.embeddingModel?.('probe'); return true; } catch { return false; }\n}","tryCatchPattern":"try {\n  await embed({ model: lmnt.embeddingModel(id), value });\n} catch (e) {\n  if (NoSuchModelError.isInstance(e) && e.modelType === 'embeddingModel') {\n    // fall back to an embeddings-capable provider\n  } else throw e;\n}","preventionTips":["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"],"tags":["provider","no-such-model","embeddings","wrong-provider"],"backgroundTag":"unsupported-model-type","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}