MastraModelGateway
用于实现自定义模型 gateway 的抽象基类。Gateway 负责访问语言模型时特定于 Provider 的逻辑,包括 Provider 配置、身份验证、URL 构造和模型实例化。
如果要提供普通对象形式的 gateway,而不是扩展基类,请使用 MastraModelGatewayInterface。
类概览类概览的直接链接
import { MastraModelGateway, type ProviderConfig } from '@mastra/core/llm'
import { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5'
import type { LanguageModelV2 } from '@ai-sdk/provider-v5'
class MyCustomGateway extends MastraModelGateway {
readonly id = 'custom'
readonly name = 'My Custom Gateway'
async fetchProviders(): Promise<Record<string, ProviderConfig>> {
return {
'my-provider': {
name: 'My Provider',
models: ['openai/gpt-5.6-sol', 'anthropic/claude-sonnet-4-6'],
apiKeyEnvVar: 'MY_API_KEY',
gateway: this.id,
},
}
}
buildUrl(modelId: string, envVars?: Record<string, string>): string {
return 'https://api.my-provider.com/v1'
}
async getApiKey(modelId: string): Promise<string> {
const apiKey = process.env.MY_API_KEY
if (!apiKey) throw new Error('MY_API_KEY not set')
return apiKey
}
async resolveLanguageModel({
modelId,
providerId,
apiKey,
}: {
modelId: string
providerId: string
apiKey: string
}): Promise<LanguageModelV2> {
const baseURL = this.buildUrl(`${providerId}/${modelId}`)
return createOpenAICompatible({
name: providerId,
apiKey,
baseURL,
}).chatModel(modelId)
}
}
必需属性必需属性的直接链接
id:
name:
必需方法必需方法的直接链接
fetchProviders()fetchproviders的直接链接
从 gateway 获取 Provider 配置。
返回值: Promise<Record<string, ProviderConfig>>
ProviderConfig 结构:
name:
models:
apiKeyEnvVar:
gateway:
url?:
apiKeyHeader?:
docUrl?:
buildUrl()buildurl的直接链接
为指定的模型/Provider 组合构建 API URL。
如果 Provider URL 包含 ${ACCOUNT_ID} 等占位符,请先在 buildUrl() 内从 envVars 或 process.env 解析它们,再返回最终 URL。
参数:
modelId:
envVars?:
返回值: string | undefined | Promise<string | undefined>
getApiKey()getapikey的直接链接
获取用于身份验证的 API key。
参数:
modelId:
返回值: Promise<string>
resolveAuth()resolveauth的直接链接
在 Mastra 创建语言模型之前解析凭据。当 gateway 自行负责身份验证时,请实现此可选 hook。如果省略,Mastra 会回退到 getApiKey()。
参数:
request:
返回值: GatewayAuthResult | undefined | Promise<GatewayAuthResult | undefined>
GatewayAuthResult 可包含 apiKey、bearerToken、headers,以及用于追踪身份验证来源的可选 source 字段。
resolveLanguageModel()resolvelanguagemodel的直接链接
创建语言模型实例。
参数:
modelId:
providerId:
apiKey:
返回值: Promise<LanguageModelV2> | LanguageModelV2
实例方法实例方法的直接链接
getId()getid的直接链接
返回 gateway 的唯一标识符。
返回值: string - gateway 的 id 属性
模型 ID 格式模型 ID 格式的直接链接
对于真正的 gateway,gateway ID 会用作前缀,并通过以下格式访问模型:
[gateway-id]/[provider]/[model]
示例:
id = 'custom'的 gateway:'custom/my-provider/model-1'
内置实现内置实现的直接链接
- NetlifyGateway - Netlify AI Gateway 集成
- ModelsDevGateway - OpenAI 兼容 Provider 的注册表
相关内容相关内容的直接链接
- 自定义 Gateway 指南: 创建自定义 gateway 的完整指南
- Mastra.addGateway(): 将 gateway 添加到 Mastra
- Mastra.getGateway(): 按注册键获取 gateway
- Mastra.getGatewayById(): 按 ID 获取 gateway
- Mastra.listGateways(): 列出所有 gateway