{"record":{"id":"36135c76a75cb614","repo":"vercel/ai","slug":"assemblyai-does-not-provide-language-models","errorCode":null,"errorMessage":"AssemblyAI does not provide language models","messagePattern":"AssemblyAI does not provide language models","errorType":"exception","errorClass":"NoSuchModelError","httpStatus":null,"severity":"error","filePath":"packages/assemblyai/src/assemblyai-provider.ts","lineNumber":90,"sourceCode":"    new AssemblyAITranscriptionModel(modelId, {\n      provider: `assemblyai.transcription`,\n      url: ({ path }) => `https://api.assemblyai.com${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const provider = function (modelId: AssemblyAITranscriptionModelId) {\n    return {\n      transcription: createTranscriptionModel(modelId),\n    };\n  };\n\n  provider.specificationVersion = 'v4' as const;\n  provider.transcription = createTranscriptionModel;\n  provider.transcriptionModel = createTranscriptionModel;\n\n  provider.languageModel = () => {\n    throw new NoSuchModelError({\n      modelId: 'unknown',\n      modelType: 'languageModel',\n      message: 'AssemblyAI does not provide language models',\n    });\n  };\n\n  provider.embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n  };\n  provider.textEmbeddingModel = provider.embeddingModel;\n\n  provider.imageModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n  };\n\n  return provider as AssemblyAIProvider;\n}\n","sourceCodeStart":72,"sourceCodeEnd":108,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/assemblyai/src/assemblyai-provider.ts#L72-L108","documentation":"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.","triggerScenarios":"Calling `assemblyai.languageModel(...)` or passing the AssemblyAI provider where a chat/language model is expected (e.g. `generateText({ model: assemblyai(...) })`).","commonSituations":"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.","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."],"exampleFix":"// before\nconst result = await generateText({ model: assemblyai.languageModel('universal') });\n// after\nconst transcript = await transcribe({ model: assemblyai.transcriptionModel('universal-2'), audio });\n// and use e.g. openai('gpt-4o') for generateText","handlingStrategy":"type-guard","validationCode":"if (providerId === 'assemblyai') {\n  throw new Error('AssemblyAI supports only transcription; use a different provider for language models');\n}","typeGuard":"function isLanguageModelProvider(p: any): boolean {\n  try {\n    p.languageModel?.('probe');\n    return true;\n  } catch (e) {\n    return !(NoSuchModelError.isInstance(e) && e.modelType === 'languageModel');\n  }\n}","tryCatchPattern":"try {\n  return assemblyai.languageModel(id);\n} catch (error) {\n  if (NoSuchModelError.isInstance(error)) {\n    throw new Error(`Provider does not support language models: ${error.message}`);\n  }\n  throw error;\n}","preventionTips":["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."],"tags":["unsupported-model-type","provider-capability","transcription"],"backgroundTag":"model-type-not-supported","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}