System-Prompt: Tool-Enforcement nur bei ToolChoice=any
Die Abschnitte 'KRITISCH: Tool-Nutzung', 'Verhalten' und 'ERINNERUNG' werden nur noch in den System-Prompt eingefügt, wenn der Agent ToolChoice=any hat. Bei auto erhält der Agent weiterhin die Tool-Beschreibungen und Workspace-Info, aber ohne die strikten Enforcement-Regeln.
This commit is contained in:
1 parent
9af837a9e5
commit
90a49563cf
1 file changed
+12
-4
@@ -16,12 +16,17 @@ public static class SystemPromptBuilder
|
||||
if (!string.IsNullOrWhiteSpace(agent.Instructions))
|
||||
parts.Add($"## Instructions\n{agent.Instructions}");
|
||||
|
||||
bool toolAny = string.Equals(agent.ToolChoice, "any", System.StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(session.Workspace))
|
||||
{
|
||||
parts.Add(@$"## KRITISCH: Tool-Nutzung
|
||||
JEDE Datei-Operation und JEDER Shell-Befehl MUSS über einen Tool-Aufruf erfolgen. NIEMALS eine Aktion nur beschreiben oder behaupten - IMMER das Tool tatsächlich aufrufen.
|
||||
if (toolAny)
|
||||
{
|
||||
parts.Add(@$"## KRITISCH: Tool-Nutzung
|
||||
JEDE Datei-Operation und JEDER Shell-Befehl MUSS über einen Tool-Aufruf erfolgen. NIEMALS eine Aktion nur beschreiben oder behaupten - IMMER das Tool tatsächlich aufrufen.");
|
||||
}
|
||||
|
||||
## Tools
|
||||
parts.Add(@$"## Tools
|
||||
Du hast Tools zur Verfügung (read_file, write_file, edit_file, list_files, delete_file, execute). Benutze sie um Dateien zu lesen, schreiben und bearbeiten.
|
||||
|
||||
Der Workspace-Pfad ist: `{session.Workspace}`
|
||||
@@ -33,7 +38,9 @@ Wenn der User auf eine bestimmte Zeile in einer Datei verweist (z.B. `[Datei: fo
|
||||
if (!string.IsNullOrWhiteSpace(session.Context))
|
||||
parts.Add($"## Kontext\n{session.Context}");
|
||||
|
||||
parts.Add(@"## Verhalten
|
||||
if (toolAny)
|
||||
{
|
||||
parts.Add(@"## Verhalten
|
||||
- Wenn du Dateien lesen, schreiben, bearbeiten, erstellen oder löschen willst: IMMER das entsprechende Tool aufrufen. NIEMALS den Inhalt nur in die Antwort schreiben.
|
||||
- Wenn du Shell-Befehle ausführen willst: IMMER das execute-Tool verwenden.
|
||||
- Behaupte NIEMALS etwas getan zu haben (Datei geschrieben, Commit gemacht, Befehl ausgeführt) ohne das entsprechende Tool tatsächlich aufgerufen zu haben. Wenn kein Tool-Aufruf stattgefunden hat, ist nichts passiert.
|
||||
@@ -41,6 +48,7 @@ Wenn der User auf eine bestimmte Zeile in einer Datei verweist (z.B. `[Datei: fo
|
||||
|
||||
## ERINNERUNG
|
||||
Diese Regel hat höchste Priorität und gilt für JEDE Antwort: Wenn eine Datei gelesen, geschrieben, bearbeitet, erstellt oder gelöscht werden soll, oder ein Befehl ausgeführt werden soll, MUSS der entsprechende Tool-Aufruf erfolgen. Ohne Tool-Aufruf ist NICHTS passiert. Beschreibe keine Änderungen - führe sie durch.");
|
||||
}
|
||||
|
||||
return string.Join("\n\n", parts);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user