Tool Use / Function Calling
Die Fähigkeit von Sprachmodellen, externe Werkzeuge und Funktionen aufzurufen – von Websuche über Code-Ausführung bis zu API-Aufrufen.
Ein Forschungsansatz, bei dem Sprachmodelle selbst lernen, wann und wie sie externe Tools aufrufen – ohne explizites Training auf Tool-Nutzung.
Toolformer ist ein Forschungsansatz von Meta AI, bei dem Sprachmodelle selbst lernen, wann externe Tools wie Taschenrechner oder Suchmaschinen hilfreich sind – ohne dass Menschen jeden Tool-Aufruf annotieren müssen.
Das Problem:
LLM ohne Tools:
"Was ist 3847 × 5923?"
→ "22.798.481" (oft falsch, Halluzination)
LLM mit manuell trainiertem Tool-Use:
→ Braucht tausende annotierte Beispiele
→ Aufwändig und teuer
Toolformer:
→ Lernt selbst, wann der Rechner hilft
→ Keine manuellen Annotationen nötig
Die Idee:
1. Modell generiert Text mit möglichen Tool-Aufrufen
"Was ist 3847 × 5923? [CALC(3847*5923)]"
2. Tool wird ausgeführt
[CALC(3847*5923)] → 22798481
3. Vergleich: Hilft das Tool?
- Mit Tool: Perplexity sinkt (besser!)
- Ohne Tool: Perplexity hoch (schlechter)
4. Behalte nur hilfreiche Tool-Aufrufe im Training
Schritt 1: Sampling von Tool-Aufrufen
─────────────────────────────────────
Für jeden Text im Korpus:
- Generiere mögliche Positionen für Tool-Aufrufe
- Sample verschiedene Tool-Aufrufe an jeder Position
Schritt 2: Ausführung
─────────────────────
- Führe jeden Tool-Aufruf aus
- Erhalte Ergebnis
Schritt 3: Filterung
────────────────────
- Berechne Perplexity MIT Tool-Ergebnis
- Berechne Perplexity OHNE Tool
- Behalte nur Aufrufe wo: PPL(mit) < PPL(ohne) - threshold
Schritt 4: Fine-Tuning
──────────────────────
- Trainiere Modell auf gefilterten Daten
- Modell lernt, wann Tools aufzurufen
Eingabe: "Die Hauptstadt von Frankreich ist [QA(Hauptstadt Frankreich)] Paris."
Tools im Paper:
- [CALC(expression)] → Taschenrechner
- [QA(question)] → Q&A-System
- [WIKI(query)] → Wikipedia-Suche
- [MT(text, lang)] → Übersetzer
- [CAL(event)] → Kalender
def should_keep_tool_call(text, tool_call, tool_result, model):
# Text mit Tool-Ergebnis
text_with_tool = insert_result(text, tool_call, tool_result)
ppl_with = compute_perplexity(model, text_with_tool)
# Text ohne Tool
text_without = remove_tool_call(text, tool_call)
ppl_without = compute_perplexity(model, text_without)
# Behalte wenn Tool hilft
threshold = 0.5
return ppl_with < ppl_without - threshold
| Aspekt | Toolformer | Function Calling |
|---|---|---|
| Training | Self-Supervised | Supervised auf Schemas |
| Annotationen | Keine nötig | Tool-Definitionen nötig |
| Flexibilität | Lernt selbst | Explizit definiert |
| Produktion | Forschung | Standard (OpenAI, Anthropic) |
| Kontrolle | Weniger | Mehr |
Toolformer-Ideen finden sich in:
1. Automatische Tool-Auswahl
→ Modelle entscheiden selbst, welches Tool
2. Self-Improvement
→ Modelle lernen aus Tool-Feedback
3. Agentic Systems
→ Autonome Tool-Nutzung in Agenten
Toolformer ist wie ein Kind, das selbst herausfindet, wann ein Taschenrechner hilft: Es probiert aus, merkt dass Kopfrechnen bei großen Zahlen Fehler macht, und lernt automatisch, wann das Tool besser ist.
Modell lernt selbstständig, wann Tools nützlich sind
Keine manuellen Annotationen für Tool-Aufrufe nötig
Self-Supervised Learning auf Tool-Nutzung
Automatische Tool-Integration
Modell entscheidet selbst, wann Rechner, Suche etc. nötig sind
Forschung
Grundlage für selbstlernende Tool-Nutzung in LLMs
Agenten-Entwicklung
Inspiration für autonome Tool-Auswahl
Function Calling: Modell wird explizit auf Tool-Schemas trainiert. Toolformer: Modell lernt selbst, wann Tools helfen. Function Calling ist praktischer, Toolformer ist Forschung.
Nicht direkt. Die Ideen fließen in moderne Tool-Use-Systeme ein, aber praktische Implementierungen nutzen meist explizites Function Calling (OpenAI, Anthropic).
Es generiert Tool-Aufrufe an verschiedenen Stellen, führt sie aus, und behält nur die, die die Perplexity verbessern. Self-Supervised durch Vergleich mit/ohne Tool.
Im Paper: Rechner, Q&A-System, Wikipedia-Suche, Übersetzer, Kalender. Prinzipiell erweiterbar auf beliebige APIs.