Merci Sam,
Plus facile pour certains que pour d’autres. Je fais partie de la seconde catégorie 
Je bidouille avec ça et je n’arrive pas à le faire fonctionner. Je n’ai aucune expérience des outils, j’ai donc hâte de faire fonctionner cela pour réfléchir à d’autres façons d’utiliser les outils.
J’ai essayé d’utiliser le code de votre blog avec une clé API, ce qui n’a pas fonctionné. L’IA m’a suggéré d’utiliser une URL codée en dur, alors j’ai essayé cela sans succès.
La clé API n’a pas été appelée et aucun journal n’a été créé avec des erreurs.
Ceci est utilisé pour catégoriser automatiquement les sujets lors de leur création
Je classerai le sujet « Insights from Jesus’ early years and miracles » dans la catégorie Nouveau Testament, car il concerne la vie et les enseignements de Jésus.
Passage du sujet maintenant…
Voici ce que j’ai essayé.
/**
- Référence rapide de l’API de l’outil
- Fonctions d’entrée
- invoke(parameters): Fonction principale. Reçoit des paramètres (Objet). Doit retourner une valeur sérialisable en JSON.
- Exemple :
- function invoke(parameters) { return “result”; }
- details(): Optionnel. Retourne une chaîne décrivant l’outil.
- Exemple :
- function details() { return “Description de l’outil.”; }
- Objets fournis
-
- http
- http.get(url, options?): Effectue une requête HTTP GET.
- Paramètres :
-
url (string): L'URL de la requête.
-
options (Object, optionnel) :
-
headers (Object): En-têtes de la requête.
- Retourne :
-
{ status: number, body: string }
- http.post(url, options?): Effectue une requête HTTP POST.
- Paramètres :
-
url (string): L'URL de la requête.
-
options (Object, optionnel) :
-
headers (Object): En-têtes de la requête.
-
body (string): Corps de la requête.
- Retourne :
-
{ status: number, body: string }
- (également disponible : http.put, http.patch, http.delete)
- Note : Max 20 requêtes HTTP par exécution.
-
- llm
- llm.truncate(text, length): Tronque le texte à une longueur de jeton spécifiée.
- Paramètres :
-
text (string): Texte à tronquer.
-
length (number): Jetons maximum.
- Retourne :
-
Chaîne tronquée.
-
- index
- index.search(query, options?): Recherche des documents indexés.
- Paramètres :
-
query (string): Requête de recherche.
-
options (Object, optionnel) :
-
filenames (Array): Limite la recherche à des fichiers spécifiques.
-
limit (number): Fragments maximum (jusqu'à 200).
- Retourne :
-
Tableau de { fragment: string, metadata: string }
-
- upload
- upload.create(filename, base_64_content): Télécharge un fichier.
- Paramètres :
-
filename (string): Nom du fichier.
-
base_64_content (string): Contenu du fichier encodé en Base64.
- Retourne :
-
{ id: number, short_url: string }
-
- chain
- chain.setCustomRaw(raw): Définit le corps du post et quitte la chaîne.
- Paramètres :
-
raw (string): Contenu brut à ajouter au post.
- Contraintes
- Temps d’exécution : ≤ 2000 ms
- Mémoire : ≤ 10 Mo
- Requêtes HTTP : ≤ 20 par exécution
- Le dépassement des limites entraînera des erreurs ou une terminaison.
- Sécurité
- Environnement sandboxé : Pas d’accès aux objets système ou globaux.
- Pas d’accès au système de fichiers : Impossible de lire ou d’écrire des fichiers.
*/
/**
- Catégoriseur de sujets Discourse
- Cet outil vous permet de changer la catégorie d’un sujet Discourse
- en utilisant l’API Discourse.
*/
/**
- Catégoriseur de sujets Discourse
- Cet outil vous permet de changer la catégorie d’un sujet Discourse
- en utilisant l’API Discourse.
*/
/**
- Catégoriseur de sujets Discourse
- Cet outil vous permet de changer la catégorie d’un sujet Discourse
- en utilisant l’API Discourse.
*/
function invoke(params) {
// Validation des paramètres requis
if (!params.topic_id) {
return { error: “Paramètre requis manquant : topic_id” };
}
if (!params.category_id) {
return { error: “Paramètre requis manquant : category_id” };
}
// URL de base pour votre instance Discourse
const baseUrl = “https://community.mysite.com”;
// URL complète du point d’accès API pour la mise à jour d’un sujet
const apiUrl = ${baseUrl}/t/${params.topic_id}.json;
// Préparation du corps de la requête
const requestBody = {
category_id: params.category_id
};
// Paramètre optionnel : mise à jour du titre si fourni
if (params.title) {
requestBody.title = params.title;
}
// Utilisez votre clé API fournie
const apiKey = “Discourse-API-Key”;
try {
// Effectuer une requête PUT pour mettre à jour le sujet
const response = http.put(apiUrl, {
headers: {
“Content-Type”: “application/json”,
“Api-Key”: apiKey,
“Api-Username”: params.api_username || “system”
},
body: JSON.stringify(requestBody)
});
if (response.status >= 200 && response.status < 300) {
return {
success: true,
topic_id: params.topic_id,
category_id: params.category_id,
response: JSON.parse(response.body)
};
} else {
return {
error: `Échec de la mise à jour de la catégorie du sujet. Statut : ${response.status}`,
details: response.body
};
}
} catch (error) {
return {
error: “Une erreur s’est produite lors de la mise à jour de la catégorie du sujet”,
details: error.toString()
};
}
}
function details() {
return “Catégorise un sujet en le déplaçant vers une catégorie spécifiée”;
}