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.
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 globalWpSuite(ouundefined)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 coursavailable— prêt à l'emploierror— é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:readywpsuite:ai-kit:error
window.addEventListener("wpsuite:ai-kit:ready", () => console.log("ready"));
window.addEventListener("wpsuite:ai-kit:error", () => console.log("error"));
wp.eventsCertaines 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 Chromesignal,headers,query: transmis au répartiteur backendonStatus(event): reçoit des étapes de progression telles quedecide,on-device:download,backend:request,done- Des options spécifiques à une fonctionnalité peuvent être lues depuis le même objet (par exemple
maxCandidatespour 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.maxTokensaffiche 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
sessionIdest 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
resultune réponse/synthèse courte ainsi que descitationsfacultatives (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 unAiWorkerHandle
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 racineclose()— ferme l'interface (le cas échéant)unmount()— démontage + nettoyage
Injection d'interface (Doc Search)
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 unAiWorkerHandle
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.store→Promise<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;
