TaskMonkey Handbuch

KBs in Chats nutzen

Such-Tools definieren, tunen und in Assistenten einbinden.

Das Modell redet nie direkt mit der KB. Es ruft ein Such-Tool auf, das du definierst — und bekommt die Treffer zurück.

Shared Tool getKnowledge

Die Plattform liefert ein Standard-Such-Tool. Nutze es als Basis:

// tools/kb/searchFaq.php
return [
    'tools' => [
        'searchFaq' => [
            'extends' => 'getKnowledge',
            'description' => 'Kunden-FAQ durchsuchen (Versand, Rückgabe, Zahlung).',
            'args_fixture' => ['query' => 'Rückgabe'],
        ],
    ],
];

extends: getKnowledge zieht die Basis-Implementation. Du überschreibst nur, was du anders haben willst.

Wichtigstes Feld: description

Die Beschreibung entscheidet, wann das Modell das Tool aufruft. Beispiele:

Zu generisch (schlecht):

'description' => 'Wissen durchsuchen.'

Das Modell weiß nicht, wann es passt — oder ruft es inflationär auf.

Spezifisch (gut):

'description' => 'Kunden-FAQ durchsuchen. Nutze dies für Fragen zu Versand, Rückgabe, Zahlung, Kontakt.'

Jetzt hat das Modell klare Kriterien.

Mehrere KBs, mehrere Such-Tools

Wenn dein Workspace unterschiedliche Wissensdomänen hat, leg ein eigenes Such-Tool pro Domäne an:

'searchFaq' => [
    'extends' => 'getKnowledge',
    'description' => 'Kunden-FAQ. Nutze für Fragen zu Versand, Rückgabe, Zahlung.',
],

'searchProducts' => [
    'extends' => 'getKnowledge',
    'description' => 'Produkt-Katalog-Wissen: Features, Materialien, Pflegehinweise.',
],

'searchHandbook' => [
    'extends' => 'getKnowledge',
    'description' => 'Internes Mitarbeiter-Handbuch: Urlaub, IT-Zugang, Prozesse.',
],

Das Modell lernt aus den Beschreibungen, welches Tool zu welcher Frage passt.

Options fürs Tuning

'searchFaq' => [
    'extends' => 'getKnowledge',
    'description' => '...',
    'options' => [
        'knowledge_base' => 'faq',   // welche KB (per Slug/ID)
        'limit' => 3,                 // max. 3 Treffer zurückgeben
        'min_score' => 5.0,           // Relevanz-Schwelle
    ],
],
Option Bedeutung
knowledge_base Auf welche KB beschränken — sonst wird in allen des Workspace gesucht
limit Wie viele Treffer zurückgeben (default 5)
min_score Minimaler Relevanz-Score; Treffer darunter werden verworfen

Im Task einbinden

// assistants/support.php
'assistants.support' => [
    'name' => 'Kunden-Support',
    'tools' => [
        'searchFaq',
        'searchProducts',
        'createTicket',
        'setSuggestions',
    ],
],

'assistants.support.prompt' => <<<PROMPT
Du bist der Support-Assistent.

Ablauf:
1. Bei allgemeinen Fragen: searchFaq nutzen.
2. Bei produktspezifischen Fragen: searchProducts.
3. Wenn keine Antwort in der KB zu finden: createTicket aufrufen.

Zitiere bei Bedarf die Quelle (Entry-Titel).
PROMPT,

Das Modell dazu bringen, die KB zu zitieren

Wenn du willst, dass der Benutzer weiß, woher eine Aussage kommt:

Nutze das Ergebnis der Suche direkt. Nenne am Ende den Titel
des Entries als Quelle, z. B. "Quelle: Retouren-Richtlinie".

So wird aus „weiche Aussage" eine nachvollziehbare Antwort.

Wenn Antworten schlecht sind

Drei typische Probleme:

1. Modell findet nichts, obwohl Inhalt da ist.

  • Query zu spezifisch — das Modell suchte nach „AGB Paragraf 7", die KB hat nur „Vertragsbedingungen". → Keywords in den Entries ergänzen.
  • min_score zu hoch gesetzt — senke ihn.

2. Modell findet zu viel Irrelevantes.

  • Die KB enthält viel Rauschen (Navigations-Text, Cookies). → Sources prüfen, ggf. schlecht zerschnittene Entries manuell bereinigen.
  • limit reduzieren.

3. Modell ignoriert das Suchergebnis.

  • Prompt explizit machen: „Antworte ausschließlich basierend auf dem Suchergebnis. Wenn nichts gefunden: sage das, erfinde keine Antworten."

Debug-Zyklus

# Suche direkt testen
tm test-tool searchFaq query="Rückgabe"

# Chat-Verhalten testen
tm test-chat "wie kann ich zurückgeben?" --task support

# Verlauf angucken
tm history --task support

Wenn Suche grün ist, Chat aber daneben — liegt's am Prompt, nicht an der KB.

Zuletzt aktualisiert: 2026-04-19