Danke Sam,
Für manche einfacher als für andere. Ich gehöre zur letzteren Kategorie 
Ich spiele damit herum und habe es noch nicht zum Laufen gebracht. Ich habe keine Erfahrung mit Tools und freue mich darauf, dies zum Laufen zu bringen, um über andere Möglichkeiten nachzudenken, Tools zu nutzen.
Ich habe versucht, den Code aus Ihrem Blog mit einem API-Schlüssel zu verwenden, was nicht funktionierte. Die KI schlug vor, eine hartcodierte URL zu verwenden, also habe ich das ohne Erfolg versucht.
Der API-Schlüssel wurde nicht aufgerufen und es wurden keine Protokolle mit Fehlern erstellt.
Dies wird verwendet, um Themen bei der Erstellung automatisch zu kategorisieren
Ich werde das Thema „Einblicke aus Jesu frühen Jahren und Wunder“ in die Kategorie Neues Testament einordnen, da es sich auf das Leben und die Lehren Jesu bezieht.
Ich verschiebe das Thema jetzt…
Das ist, was ich versucht habe.
/**
- Kurzübersicht über die Tool-API
- Einstiegsfunktionen
- invoke(parameters): Hauptfunktion. Empfängt Parameter (Objekt). Muss einen JSON-serialisierbaren Wert zurückgeben.
- Beispiel:
- function invoke(parameters) { return “result”; }
- details(): Optional. Gibt eine Zeichenkette zurück, die das Tool beschreibt.
- Beispiel:
- function details() { return “Tool description.”; }
- Bereitgestellte Objekte
-
- http
- http.get(url, options?): Führt eine HTTP-GET-Anfrage durch.
- Parameter:
-
url (string): Die URL der Anfrage.
-
options (Object, optional):
-
headers (Object): Header der Anfrage.
- Gibt zurück:
-
{ status: number, body: string }
- http.post(url, options?): Führt eine HTTP-POST-Anfrage durch.
- Parameter:
-
url (string): Die URL der Anfrage.
-
options (Object, optional):
-
headers (Object): Header der Anfrage.
-
body (string): Body der Anfrage.
- Gibt zurück:
-
{ status: number, body: string }
- (auch verfügbar: http.put, http.patch, http.delete)
- Hinweis: Maximal 20 HTTP-Anfragen pro Ausführung.
-
- llm
- llm.truncate(text, length): Kürzt Text auf eine bestimmte Token-Länge.
- Parameter:
-
text (string): Zu kürzender Text.
-
length (number): Maximale Tokens.
- Gibt zurück:
-
Gekürzter String.
-
- index
- index.search(query, options?): Durchsucht indizierte Dokumente.
- Parameter:
-
query (string): Suchanfrage.
-
options (Object, optional):
-
filenames (Array): Suchanfrage auf bestimmte Dateien beschränken.
-
limit (number): Maximale Fragmente (bis zu 200).
- Gibt zurück:
-
Array von { fragment: string, metadata: string }
-
- upload
- upload.create(filename, base_64_content): Lädt eine Datei hoch.
- Parameter:
-
filename (string): Dateiname.
-
base_64_content (string): Base64-kodierter Dateiinhalt.
- Gibt zurück:
-
{ id: number, short_url: string }
-
- chain
- chain.setCustomRaw(raw): Setzt den Body des Beitrags und beendet die Kette.
- Parameter:
-
raw (string): Roher Inhalt, der dem Beitrag hinzugefügt werden soll.
- Einschränkungen
- Ausführungszeit: ≤ 2000ms
- Speicher: ≤ 10MB
- HTTP-Anfragen: ≤ 20 pro Ausführung
- Das Überschreiten der Limits führt zu Fehlern oder Beendigung.
- Sicherheit
- Sandboxed-Umgebung: Kein Zugriff auf System- oder globale Objekte.
- Kein Dateisystemzugriff: Keine Dateien lesen oder schreiben.
*/
/**
- Discourse Topic Categorizer
- Dieses Tool ermöglicht es Ihnen, die Kategorie eines Discourse-Themas
- über die Discourse-API zu ändern.
*/
/**
- Discourse Topic Categorizer
- Dieses Tool ermöglicht es Ihnen, die Kategorie eines Discourse-Themas
- über die Discourse-API zu ändern.
*/
/**
- Discourse Topic Categorizer
- Dieses Tool ermöglicht es Ihnen, die Kategorie eines Discourse-Themas
- über die Discourse-API zu ändern.
*/
function invoke(params) {
// Validierung erforderlicher Parameter
if (!params.topic_id) {
return { error: “Fehlender erforderlicher Parameter: topic_id” };
}
if (!params.category_id) {
return { error: “Fehlender erforderlicher Parameter: category_id” };
}
// Basis-URL für Ihre Discourse-Instanz
const baseUrl = “https://community.mysite.com”;
// Vollständige API-Endpunkt-URL zum Aktualisieren eines Themas
const apiUrl = ${baseUrl}/t/${params.topic_id}.json;
// Anforderungs-Body vorbereiten
const requestBody = {
category_id: params.category_id
};
// Optionaler Parameter: Titel aktualisieren, falls angegeben
if (params.title) {
requestBody.title = params.title;
}
// Verwenden Sie Ihren bereitgestellten API-Schlüssel
const apiKey = “Discourse-API-Key”;
try {
// PUT-Anfrage zur Aktualisierung des Themas stellen
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: `Fehler beim Aktualisieren der Thema-Kategorie. Status: ${response.status}`,
details: response.body
};
}
} catch (error) {
return {
error: “Ein Fehler ist bei der Aktualisierung der Thema-Kategorie aufgetreten”,
details: error.toString()
};
}
}
function details() {
return “Kategorisiert ein Thema, indem es in eine bestimmte Kategorie verschoben wird”;
}