Grazie Sam,
Più facile per alcuni che per altri. Io appartengo a quest’ultima categoria 
Ci sto armeggiando e non ci sono riuscito. Non ho esperienza con gli strumenti, quindi non vedo l’ora di farlo funzionare per pensare ad altri modi di usare gli strumenti.
Ho provato a usare il codice del tuo blog con una chiave API che non ha funzionato. L’IA mi ha suggerito di usare un URL codificato in modo fisso, quindi ho provato senza successo.
La chiave API non è stata chiamata e non ci sono log creati con errori.
Questo viene utilizzato per categorizzare automaticamente gli argomenti al momento della creazione
Classificherò l’argomento “Insights from Jesus’ early years and miracles” nella categoria Nuovo Testamento, poiché si riferisce alla vita e agli insegnamenti di Gesù.
Sto spostando l’argomento ora…
Questo è quello che ho provato.
/**
- Riferimento rapido all’API dello strumento
- Funzioni di ingresso
- invoke(parameters): Funzione principale. Riceve parametri (Object). Deve restituire un valore serializzabile in JSON.
- Esempio:
- function invoke(parameters) { return “result”; }
- details(): Opzionale. Restituisce una stringa che descrive lo strumento.
- Esempio:
- function details() { return “Descrizione dello strumento.”; }
- Oggetti forniti
-
- http
- http.get(url, options?): Esegue una richiesta HTTP GET.
- Parametri:
-
url (string): URL della richiesta.
-
options (Object, opzionale):
-
headers (Object): Intestazioni della richiesta.
- Restituisce:
-
{ status: number, body: string }
- http.post(url, options?): Esegue una richiesta HTTP POST.
- Parametri:
-
url (string): URL della richiesta.
-
options (Object, opzionale):
-
headers (Object): Intestazioni della richiesta.
-
body (string): Corpo della richiesta.
- Restituisce:
-
{ status: number, body: string }
- (disponibili anche: http.put, http.patch, http.delete)
- Nota: Massimo 20 richieste HTTP per esecuzione.
-
- llm
- llm.truncate(text, length): Tronca il testo a una lunghezza di token specificata.
- Parametri:
-
text (string): Testo da troncare.
-
length (number): Token massimi.
- Restituisce:
-
Stringa troncata.
-
- index
- index.search(query, options?): Cerca documenti indicizzati.
- Parametri:
-
query (string): Query di ricerca.
-
options (Object, opzionale):
-
filenames (Array): Limita la ricerca a file specifici.
-
limit (number): Frammenti massimi (fino a 200).
- Restituisce:
-
Array di { fragment: string, metadata: string }
-
- upload
- upload.create(filename, base_64_content): Carica un file.
- Parametri:
-
filename (string): Nome del file.
-
base_64_content (string): Contenuto del file codificato in Base64.
- Restituisce:
-
{ id: number, short_url: string }
-
- chain
- chain.setCustomRaw(raw): Imposta il corpo del post ed esce dalla catena.
- Parametri:
-
raw (string): Contenuto grezzo da aggiungere al post.
- Vincoli
- Tempo di esecuzione: ≤ 2000 ms
- Memoria: ≤ 10 MB
- Richieste HTTP: ≤ 20 per esecuzione
- Il superamento dei limiti comporterà errori o interruzioni.
- Sicurezza
- Ambiente Sandboxed: Nessun accesso agli oggetti di sistema o globali.
- Nessun accesso al file system: Impossibile leggere o scrivere file.
*/
/**
- Categorizzatore di argomenti Discourse
- Questo strumento consente di modificare la categoria di un argomento Discourse
- utilizzando l’API di Discourse.
*/
/**
- Categorizzatore di argomenti Discourse
- Questo strumento consente di modificare la categoria di un argomento Discourse
- utilizzando l’API di Discourse.
*/
/**
- Categorizzatore di argomenti Discourse
- Questo strumento consente di modificare la categoria di un argomento Discourse
- utilizzando l’API di Discourse.
*/
function invoke(params) {
// Validazione dei parametri richiesti
if (!params.topic_id) {
return { error: “Parametro richiesto mancante: topic_id” };
}
if (!params.category_id) {
return { error: “Parametro richiesto mancante: category_id” };
}
// URL di base per la tua istanza Discourse
const baseUrl = “https://community.mysite.com”;
// URL completo dell’endpoint API per l’aggiornamento di un argomento
const apiUrl = ${baseUrl}/t/${params.topic_id}.json;
// Prepara il corpo della richiesta
const requestBody = {
category_id: params.category_id
};
// Parametro opzionale: aggiorna il titolo se fornito
if (params.title) {
requestBody.title = params.title;
}
// Usa la tua chiave API fornita
const apiKey = “Discourse-API-Key”;
try {
// Esegui la richiesta PUT per aggiornare l’argomento
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: `Impossibile aggiornare la categoria dell'argomento. Stato: ${response.status}`,
details: response.body
};
}
} catch (error) {
return {
error: “Si è verificato un errore durante l’aggiornamento della categoria dell’argomento”,
details: error.toString()
};
}
}
function details() {
return “Categorizza un argomento spostandolo in una categoria specificata”;
}