Aller au contenu
English

ModelProvider

import type { ModelProvider } from "@elie-laloum/outpost";
  • nameRequis
    string
    Nom du fournisseur : openai ou anthropic pour les fournisseurs intégrés.
  • identityOptionnel
    string | undefined
    Clé stable formée du nom du fournisseur, du chemin du protocole et de l’URL de base, par exemple openai:responses:https://api.openai.com/v1. Les fournisseurs intégrés l’inscrivent sur les blocs de raisonnement et ne les rejouent qu’à la même identité.
  • validateOptionnel
    ((model: AgentModel) => void) | undefined
    Contrôle appelé par createAgent() avec le modèle d’agent normalisé ; levez une erreur pour refuser des réglages non pris en charge avant toute requête. Le fournisseur Anthropic exige maxOutputTokens et refuse reasoning minimal ; le fournisseur OpenAI n’en définit pas.
  • requestRequis
    (request: ModelRequest) => Promise<ModelResult>
    Envoie une requête et se résout avec son résultat normalisé. Dans un harness, la requête reçoit le reasoning et le maxOutputTokens du modèle de l’agent ainsi que le signal d’annulation de l’exécution, et l’usage rapporté est comptabilisé une fois.
  • streamOptionnel
    ((request: ModelRequest) => AsyncIterable<ModelStreamEvent>) | undefined
    Variante de request en streaming : produit des événements text-delta au fil de la réponse, puis un événement result. Le harness l’utilise à la place de request quand elle est présente.
export interface ModelProvider {
  readonly name: string;
  readonly identity?: string;
  validate?(model: AgentModel): void;
  request(request: ModelRequest): Promise<ModelResult>;
  stream?(request: ModelRequest): AsyncIterable<ModelStreamEvent>;
}