Skip to content

Evaluation von Tool-Nutzung und Function Calling

Wie du die Tool-Aufrufe eines Agenten über Trace-Formate hinweg annotierst und beurteilst (OpenAI, Anthropic, ReAct, LangChain), mit Bewertungen je Schritt in Potato.

Ruft ein Agent ein Tool auf, eine Suche, einen Taschenrechner, eine API, eine Datenbank, dann steckt in jedem Aufruf eine Entscheidung, die sich beurteilen lässt: War das das richtige Tool? Stimmten die Argumente? Wurde das Ergebnis richtig weiterverwendet? Die Evaluation der Tool-Nutzung macht aus diesen Entscheidungen Labels je Schritt entlang eines Agenten-Traces.

Das ist die Ergänzung durch menschliches Urteil zu automatischen Benchmarks für Function Calling: Ein Aufruf kann syntaktisch einwandfrei und für die Aufgabe trotzdem falsch sein.

Was du bei jedem Tool-Aufruf beurteilst

  • Tool-Wahl: War das das passende Tool, oder wäre ein anderes (oder gar keines) richtig gewesen?
  • Argumente: Waren die Parameter korrekt und vollständig?
  • Notwendigkeit: Brauchte es den Aufruf überhaupt, oder war er redundant?
  • Umgang mit dem Ergebnis: Hat der Agent die Ausgabe richtig gelesen und genutzt?

Traces aus beliebigen Frameworks lesen

Potato überführt 15 Trace-Formate in eine gemeinsame Schrittansicht. Du kannst die Tool-Nutzung also unabhängig davon beurteilen, womit der Agent gebaut wurde: Tool- und Funktionsaufrufe von OpenAI und Anthropic, ReAct-Traces aus Gedanke, Aktion und Beobachtung, LangChain, LangFuse und weitere. Siehe Agentische Annotation.

Bewertung je Schritt einrichten

Häng an jeden Schritt (also an jeden Tool-Aufruf) eine Bewertung, mit einer bedingten Nachfrage für die Fehlschläge:

yaml
annotation_schemes:
  - annotation_type: trajectory_eval
    name: tool_call_correctness
    description: "For each tool call, judge whether it was the right call."
    steps_key: agentic_steps
    correctness_options: ["Correct", "Wrong tool", "Wrong arguments", "Unnecessary"]
  - annotation_type: text
    name: notes
    description: "If not correct, what should it have done?"
    label_requirement:
      required: false

Worauf du bei der Qualität achtest

  • Zeig die Ausgabe des Tools, nicht nur den Aufruf; sonst kann niemand beurteilen, was der Agent mit dem Ergebnis gemacht hat.
  • Gib JSON-Argumente und -Antworten formatiert aus, damit sie lesbar bleiben (in der Agenten-Trace-Anzeige macht Potato das von selbst).
  • Trenn falsches Tool von richtigem Tool mit falschen Argumenten, dahinter stecken verschiedene Probleme im Modell.

Weiterführende Lektüre