Capacités
Interfaces d'exécution standardisées que les fournisseurs implémentent et que la plateforme résout, configure et orchestre.
Au-delà des outils et des déclencheurs, une extension peut exposer des capacités — des interfaces d'exécution standardisées que la plateforme sait orchestrer. Les capacités de modèle se déclarent une FAMILLE à la fois dans provides.models, chacune construite avec defineModels({ family, runtime }), où runtime est un objet simple typé par la configuration de capacité de la famille ; webSearch, webhooks et discovery appartiennent en revanche à un toolkit.
Comment la plateforme résout une capacité
Lorsqu'un workflow demande « un LLM » ou « STT », la plateforme parcourt le registre d'extensions dans un ordre fixe. C'est ce qui vous permet de substituer OpenAI par un vLLM auto-hébergé sans toucher aux définitions des workflows.
Aucun repli silencieux. Si rien ne correspond, le résolveur retourne null et la plateforme répond par une erreur typée 409 CAPABILITY_NOT_CONFIGURED — jamais une substitution discrète vers un fournisseur que l'organisation n'a jamais installé.
Les capacités
Chat, complétion, streaming. La surface complète de fournisseur LLM.
Reconnaissance vocale — batch + WebSocket temps réel / SSE.
Synthèse vocale — batch + streaming temps réel.
Génération d'embeddings vectoriels.
Classification de sûreté du contenu avec décisions de politique d'organisation et contrôles de gouvernance.
Synthèse d'images à partir de prompts textuels.
Génération de vidéos à partir de prompts textuels.
Reconnaissance optique de caractères et analyse de documents.
Recherche internet sélectionnée par fournisseur pour des liens de résultats classés, avec une fenêtre de récence et des dates de publication.
Vérifier, transformer, souscrire, interroger et tester les webhooks fournisseur.
Sélecteurs, navigation dans les ressources, portées d'accès.
| Capacité | Helper | Référence par défaut | Direction |
|---|---|---|---|
| LLM | defineModels({ family: "llm" }) | MMLU · HumanEval · GPQA | plus élevé = meilleur |
| STT | defineModels({ family: "stt" }) | WER | plus bas = meilleur |
| TTS | defineModels({ family: "tts" }) | MOS | plus élevé = meilleur |
| Embedding | defineModels({ family: "embedding" }) | MTEB · MIRACL | plus élevé = meilleur |
| Image | defineModels({ family: "image" }) | — | — |
| Vidéo | defineModels({ family: "video" }) | — | — |
| OCR | defineModels({ family: "ocr" }) | — | — |
| Modération | defineModels({ family: "moderation" }) | — | — |
| Recherche web | defineWebSearch() (sur un toolkit) | — | — |
| Webhook | defineWebhooks() (sur un toolkit) | n/a | — |
| Discovery | defineDiscovery() (sur un toolkit) | n/a | — |
Comment les capacités apparaissent dans l'interface
La page d'administration Paramètres → Plateforme → Extensions est centrée sur les produits. Cliquer sur un fournisseur ouvre sa fiche ; l'onglet Inclus répond à « qu'est-ce que cette extension m'apporte » en deux sections, dans cet ordre :
- Modèles — ce sur quoi tournent les appels IA, en premier, parce que c'est la première chose qu'apporte un fournisseur. Une ligne par famille de modèles déclarée par le fournisseur — LLM, Embeddings, Reconnaissance vocale, Synthèse vocale, Génération d'images, Vidéo, OCR et Modération — portant le nom de la famille, son nombre de modèles (4 modèles), les noms des modèles en une phrase, et via Microsoft Excel lorsqu'un seul produit la fournit. Ouvrir une ligne affiche les fournisseurs derrière cette famille et son éditeur de liste d'autorisation. Le modèle par défaut de l'organisation ne se choisit pas ici : il vit dans l'onglet Modèles & valeurs par défaut de la page Extensions.
- Outils d'agents — une ligne par produit apportant des outils, des déclencheurs ou une capacité hors modèle : ce que fait le produit en mots, puis ses décomptes (9 outils, 2 déclencheurs), puis l'interrupteur Activé · à l'échelle de l'organisation, qui indique Non activé lorsqu'il est éteint. Les déclencheurs ne forment pas une section à part — ils sont comptés dans la phrase de la ligne. L'en-tête de section porte les totaux (36 outils, 4 déclencheurs sur 8 produits), et un fournisseur long replie la fin en N produits de plus. La recherche web sélectionne un fournisseur et non un modèle : elle apparaît donc en pastille sur la ligne du produit qui la déclare, et non sous Modèles.
Un fournisseur sans modèles ni produits à outils affiche Rien à lister pour cette extension à la place des deux sections.
Politique de modèle (mode liste d'autorisation)
Pour les capacités d'intelligence, les administrateurs peuvent restreindre les modèles utilisables :
| Mode | Comportement |
|---|---|
| Tous (par défaut) | Chaque modèle fourni par le fournisseur est disponible |
| Liste d'autorisation | Seuls les modèles explicitement activés sont disponibles |
Stocké par fournisseur et par capacité via l'API de politique d'organisation. Périmètre organisation — différentes organisations peuvent choisir différents sous-ensembles du même fournisseur.
Désactiver et remplacer un fournisseur
Avant de désactiver un fournisseur, l'interface d'administration calcule les workflows et les bases de connaissances concernés. Si cet impact ne peut pas être calculé, il est affiché comme inconnu et doit être reconnu ; il n'est jamais considéré comme nul.
Pour chaque capacité que possède le fournisseur, vous pouvez sélectionner un remplaçant activé. Seuls les défauts sélectionnés et les références prises en charge sont migrés. Les capacités sans remplaçant activé sont listées explicitement, et les ressources qui exigent une migration sémantique (par exemple, la réindexation d'une base de connaissances d'embeddings) ne sont pas réécrites silencieusement. L'opération peut être relancée sans risque : les remplacements et les défauts sont appliqués avant la désactivation des produits, et un échec partiel laisse les produits restants disponibles afin que vous puissiez relancer l'opération en toute sécurité.
Scores de référence
Toutes les capacités d'intelligence supportent des benchmarks optionnels sur les définitions de modèles, affichés dans l'interface des extensions pour aider les administrateurs à comparer.
interface BenchmarkScore {
name: string; // e.g. "MTEB Average", "WER", "MOS"
score: number;
source?: string; // e.g. "Artificial Analysis"
updatedAt?: string; // ISO date
}Combiner les capacités
Une extension peut fournir un toolkit et autant de familles de modèles que nécessaire. Chaque famille est un élément fourni à part entière, avec son propre identifiant : une organisation peut activer le LLM sans activer l'OCR.
export default defineExtension({
id: "my-ai-service",
// ...
provides: {
toolkits: [
defineToolkit({
id: "my-ai-service",
name: "My AI Service",
tools: [chatTool, imageTool],
webSearch: webSearchCapability,
webhooks: webhookCapability,
discovery: discoveryCapability,
block: myBlock,
triggers: [],
}),
],
models: [
defineModels({ id: "my-ai-service-llm", name: "My AI Service", family: "llm", runtime: llmCapability, models: [/* … */], defaultModel: "…" }),
defineModels({ id: "my-ai-service-stt", name: "My AI Service", family: "stt", runtime: sttCapability }),
defineModels({ id: "my-ai-service-tts", name: "My AI Service", family: "tts", runtime: ttsCapability }),
defineModels({ id: "my-ai-service-embedding", name: "My AI Service", family: "embedding", runtime: embeddingCapability }),
defineModels({ id: "my-ai-service-image", name: "My AI Service", family: "image", runtime: imageCapability }),
defineModels({ id: "my-ai-service-video", name: "My AI Service", family: "video", runtime: videoCapability }),
defineModels({ id: "my-ai-service-ocr", name: "My AI Service", family: "ocr", runtime: ocrCapability }),
defineModels({ id: "my-ai-service-moderation", name: "My AI Service", family: "moderation", runtime: moderationCapability }),
],
},
});L'identifiant d'un élément fourni est unique sur l'ensemble de provides.toolkits et provides.models. Un toolkit qui embarque aussi des runtimes de modèles conserve son identifiant sur le TOOLKIT et nomme chaque famille <toolkit>-<family> : les identifiants d'outils enregistrés ne bougent jamais. Les familles s'enregistrent automatiquement dans l'index des capacités de la plateforme — il n'y a aucune étape d'enregistrement manuelle.
Sessions temps réel
STT et TTS prennent en charge le streaming temps réel via WebSocket ou SSE. Les sessions
s'exécutent dans le WorkerThreadBackend propre aux capacités, qui maintient la connexion
persistante au fournisseur. Cette durée de vie est distincte de l'exécution des outils et ne prouve
pas qu'un outil Agent non-Scrydon a utilisé la frontière microVM vendor_archive à usage unique.
interface RealtimeSession {
sessionId: string;
send(chunk: ArrayBuffer | string): void;
onMessage(handler: (data: RealtimeMessage) => void): void;
close(): Promise<void>;
}
interface RealtimeMessage {
type: "interim" | "final" | "audio" | "error" | "metadata";
data: unknown;
timestamp: number;
}