MastraModelGateway
Classe de base abstraite permettant d'implémenter des gateways de modèles personnalisées. Les gateways gèrent la logique propre au Provider pour accéder aux modèles de langage, notamment la configuration du Provider, l'authentification, la construction des URL et l'instanciation des modèles.
Utilisez MastraModelGatewayInterface lorsque vous souhaitez fournir une gateway sous forme d'objet simple au lieu d'étendre la classe de base.
Présentation de la classeLien direct vers Présentation de la classe
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)
}
}
Propriétés requisesLien direct vers Propriétés requises
id:
name:
Méthodes requisesLien direct vers Méthodes requises
fetchProviders()Lien direct vers fetchproviders
Récupère les configurations des Providers depuis la gateway.
Renvoie : Promise<Record<string, ProviderConfig>>
Structure de ProviderConfig :
name:
models:
apiKeyEnvVar:
gateway:
url?:
apiKeyHeader?:
docUrl?:
buildUrl()Lien direct vers buildurl
Construit l'URL de l'API pour une combinaison précise de modèle et de Provider.
Si l'URL de votre Provider contient des espaces réservés tels que ${ACCOUNT_ID}, résolvez-les dans buildUrl() à partir de envVars ou de process.env avant de renvoyer l'URL finale.
Paramètres :
modelId:
envVars?:
Renvoie : string | undefined | Promise<string | undefined>
getApiKey()Lien direct vers getapikey
Récupère la clé API nécessaire à l'authentification.
Paramètres :
modelId:
Renvoie : Promise<string>
resolveAuth()Lien direct vers resolveauth
Résout les identifiants avant que Mastra ne crée le modèle de langage. Implémentez ce hook facultatif lorsque la gateway gère l'authentification. En cas d'omission, Mastra se rabat sur getApiKey().
Paramètres :
request:
Renvoie : GatewayAuthResult | undefined | Promise<GatewayAuthResult | undefined>
Un GatewayAuthResult peut comprendre apiKey, bearerToken, headers ainsi qu'un champ facultatif source permettant de retracer l'origine de l'authentification.
resolveLanguageModel()Lien direct vers resolvelanguagemodel
Crée une instance de modèle de langage.
Paramètres :
modelId:
providerId:
apiKey:
Renvoie : Promise<LanguageModelV2> | LanguageModelV2
Méthodes d'instanceLien direct vers Méthodes d'instance
getId()Lien direct vers getid
Renvoie l'identifiant unique de la gateway.
Renvoie : string - Propriété id de la gateway
Format des identifiants de modèlesLien direct vers Format des identifiants de modèles
Pour les véritables gateways, l'identifiant de la gateway sert de préfixe et les modèles sont accessibles au format suivant :
[gateway-id]/[provider]/[model]
Exemples :
- Gateway avec
id = 'custom':'custom/my-provider/model-1'
Implémentations intégréesLien direct vers Implémentations intégrées
- NetlifyGateway - Intégration de Netlify AI Gateway
- ModelsDevGateway - Registre de Providers compatibles avec OpenAI
Ressources associéesLien direct vers Ressources associées
- Guide des gateways personnalisées : guide complet pour créer des gateways personnalisées
- Mastra.addGateway() : ajoute une gateway à Mastra
- Mastra.getGateway() : obtient une gateway à partir de sa clé d'enregistrement
- Mastra.getGatewayById() : obtient une gateway à partir de son identifiant
- Mastra.listGateways() : répertorie toutes les gateways