API JavaScript d'AI-Kit pour WordPress

AI‑Kit expose une surface d'exécution publique sous le global WP Suite :

  • globalThis.WpSuite.plugins.aiKit — l'objet du plugin (enregistré par le plugin AI‑Kit)
  • globalThis.WpSuite.plugins.aiKit.features — méthodes de fonctionnalités + aides d'interface

Toutes les méthodes de fonctionnalité sont asynchrones et renvoient une Promise.

Accès défensif

Utilisez toujours le chaînage optionnel (?.) au cas où AI-Kit ne serait pas installé sur le site ou la page courante.


Aides d'exécution (contrat partagé WP Suite)

Les plugins WP Suite partagent un petit contrat d'exécution commun (issu de @smart-cloud/wpsuite-core), notamment :

Accesseurs d'aide

Si vous regroupez @smart-cloud/wpsuite-core, vous pouvez aussi utiliser :

  • getWpSuite() → renvoie l'objet global WpSuite (ou undefined)
  • getPlugin("gatey" | "aiKit" | "...") → renvoie un objet plugin depuis le registre

(Ce sont des enveloppes fines autour de globalThis.WpSuite.)

État du plugin

WpSuite.plugins.aiKit.status peut prendre l'une des valeurs suivantes :

  • unavailable — plugin absent / pas encore initialisé
  • initializing — démarrage en cours
  • available — prêt à l'emploi
  • error — échec de l'initialisation

Attendre qu'AI-Kit soit prêt

Vous pouvez attendre de trois façons courantes :

1) onReady(cb)

globalThis.WpSuite?.plugins?.aiKit?.onReady?.(() => {
console.log("AI‑Kit is ready");
});

2) availability() (attente de disponibilité avec délai d'attente)

Résout vers available, unavailable ou error (elle ne renvoie jamais initializing).

const res = await globalThis.WpSuite?.plugins?.aiKit?.availability?.();
if (res !== "available") {
console.warn("AI‑Kit not available:", res);
}

3) Aides du cœur AI-Kit (waitForAiKitReady)

Si votre build inclut le package cœur d'AI-Kit, vous pouvez utiliser ses enveloppes de commodité :

  • getAiKitPlugin()
  • waitForAiKitReady(timeoutMs = 8000)
  • getStore(timeoutMs = 10000) (attend la disponibilité, puis renvoie la promesse du store)

Ce sont des aides minces au-dessus des événements ci-dessous.

Événements de disponibilité / erreur

AI-Kit émet des événements DOM que vous pouvez écouter :

  • wpsuite:ai-kit:ready
  • wpsuite:ai-kit:error
window.addEventListener("wpsuite:ai-kit:ready", () => console.log("ready"));
window.addEventListener("wpsuite:ai-kit:error", () => console.log("error"));
WordPress wp.events

Certaines builds réémettent aussi ces événements via WpSuite.events / wp.events. Les événements DOM ci-dessus sont l'option la plus sûre entre contextes.


API des fonctionnalités (appels programmatiques)

Les aides asynchrones sous WpSuite.plugins.aiKit.features reflètent les fonctions exportées par @smart-cloud/ai-kit-core.

Options partagées (FeatureOptions)

  • context: "admin" | "frontend" (par défaut : "admin" ; les enveloppes front-end passent automatiquement "frontend")
  • modeOverride: force un mode de capacité ponctuel - "local-only" | "backend-fallback" | "backend-only"
  • onDeviceTimeoutOverride: remplace le délai d'attente par défaut sur l'appareil de 45 s (ou 5 s pour les fonctionnalités rapides) lors de l'utilisation des API Chrome
  • signal, headers, query: transmis au répartiteur backend
  • onStatus(event): reçoit des étapes de progression telles que decide, on-device:download, backend:request, done
  • Des options spécifiques à une fonctionnalité peuvent être lues depuis le même objet (par exemple maxCandidates pour la détection de langue côté backend)

Méthodes

write(args, options?){ result: string }

  • args: { prompt, context?, sharedContext?, tone?, format?, length?, outputLanguage? }
  • Les appels backend respectent aussi knowledgeBaseId / disableKB

rewrite(args, options?){ result: string }

  • args: { text, context?, sharedContext?, tone?, format?, length?, outputLanguage? }

summarize(args, options?){ result: string }

  • args: { text, context?, sharedContext?, type?, format?, length?, outputLanguage? }

translate(args, options?){ result: string }

  • args: { text, sourceLanguage, targetLanguage }

detectLanguage(args, options?){ result: { candidates: LanguageDetectionResult[] } }

  • args: { text }
  • Pour les flux backend uniquement, vous pouvez ajouter options.maxCandidates

proofread(args, options?){ result: ProofreadResult }

  • args: { text, expectedInputLanguages?, includeCorrectionTypes?, includeCorrectionExplanations?, correctionExplanationLanguage? }

prompt(args, options?){ result: string, sessionId?, metadata? }

  • args: { messages, sharedContext?, outputLanguage?, images?, responseConstraint?, topK?, temperature?, maxTokens?, knowledgeBaseId?, disableKB? }
  • metadata.stopReason === "max_tokens" signifie que le modèle a atteint la limite de sortie ; metadata.maxTokens affiche la limite backend appliquée.

sendChatMessage(args, options?){ result: string, sessionId?, metadata? }

  • args: { sessionId?, message, sharedContext?, images?, topK?, temperature?, maxTokens?, knowledgeBaseId?, disableKB? }
  • Enregistre automatiquement l'historique de chat lorsque sessionId est omis

sendFeedbackMessage(args, options?){ result: string, sessionId?, metadata? }

  • args: { feedbackType: "accepted" | "rejected", feedbackMessageId, sessionId }

sendSearchMessage(args, options?){ result: string, sessionId?, citations?, metadata? }

  • args: { query, sessionId?, sharedContext?, knowledgeBaseId?, topK?, temperature?, maxTokens? }
  • Renvoie dans result une réponse/synthèse courte ainsi que des citations facultatives (docs + chunks) lorsqu'elles sont disponibles.

Aides pour les options de fonctionnalité

Lorsque vous avez besoin des options brutes create() de l'API Chrome (par exemple pour précharger des modèles), utilisez :

  • getWriteOptions(partialArgs) / getRewriteOptions(partialArgs)
  • getSummarizeOptions(partialArgs) / getTranslateOptions(partialArgs)
  • getProofreadOptions() / getPromptOptions(partialArgs)

Chaque aide renvoie la structure *CreateCoreOptions correspondante des API Chrome Built-in AI.

Exemple : traduire une chaîne

const f = globalThis.WpSuite?.plugins?.aiKit?.features;
if (!f) return;

const { result } = await f.translate({
text: "Hello world",
sourceLanguage: "en",
targetLanguage: "de",
});
console.log(result);

Exemple : résumer le contenu actuel (avec progression)

const aiKit = globalThis.WpSuite?.plugins?.aiKit;
const f = aiKit?.features;
if (!aiKit || !f) return;

const ok = (await aiKit.availability?.()) === "available";
if (!ok) return;

const { result } = await f.summarize(
{ text: "Long article text...", type: "tldr", length: "short" },
{
onStatus: (ev) => {
// ev.step: "decide" | "on-device:download" | "backend:request" | ...
console.log(ev.step, ev.progress);
},
},
);

console.log(result);

Injection d'interface (renderFeature)

Pour les thèmes/plugins personnalisés, AI-Kit peut rendre son interface interactive dans un élément cible :

  • WpSuite.plugins.aiKit.features.renderFeature(args) → renvoie un AiWorkerHandle

C'est ainsi que le bloc / shortcode AI-Kit Feature peut créer une interface sur le front-end.

Exemple minimal : rendre une interface de traduction modale

const f = globalThis.WpSuite?.plugins?.aiKit?.features;
if (!f) return;

let handle;
handle = await f.renderFeature({
mode: "translate",
title: "Translate",
variation: "modal",
onClose: () => handle?.close?.(),
autoRun: false,
default: {
text: "Hello world",
inputLanguage: "en",
outputLanguage: "de",
},
});

Nettoyage

Le handle retourné inclut généralement :

  • container — l'élément racine
  • close() — ferme l'interface (le cas échéant)
  • unmount() — démontage + nettoyage

Pour les thèmes/plugins personnalisés, AI-Kit peut aussi rendre l'interface Doc Search dans un élément cible :

  • WpSuite.plugins.aiKit.features.renderSearchComponent(args) → renvoie un AiWorkerHandle

C'est ce que le bloc / shortcode AI-Kit Doc Search utilise côté front-end.

Exemple minimal : rendre Doc Search dans un conteneur

const f = globalThis.WpSuite?.plugins?.aiKit?.features;
if (!f) return;

let handle;
handle = await f.renderSearchComponent({
target: "#doc-search",
title: "Search docs",
autoRun: false,
topK: 10,
snippetMaxChars: 160,
});

Accès au store (avancé)

AI-Kit expose un store créé à la demande :

  • WpSuite.plugins.aiKit.features.storePromise<Store>

C'est utile si vous construisez une interface personnalisée et souhaitez observer les paramètres ou les diagnostics.

const storePromise = globalThis.WpSuite?.plugins?.aiKit?.features?.store;
const store = storePromise ? await storePromise : null;