55 lines
1.1 KiB
Markdown
55 lines
1.1 KiB
Markdown
# Aufgabe 02: Tool Calling simulieren
|
|
|
|
## Ziel
|
|
|
|
Du lernst, wie ein LLM nicht nur Text erzeugt, sondern Aktionen auslösen kann.
|
|
|
|
## Szenario
|
|
|
|
Der User fragt:
|
|
|
|
```text
|
|
Wie viele Personen sind im Raum?
|
|
```
|
|
|
|
Das LLM soll nicht raten, sondern ein Tool anfordern:
|
|
|
|
```json
|
|
{
|
|
"tool": "count_people",
|
|
"arguments": {}
|
|
}
|
|
```
|
|
|
|
## Aufgabe
|
|
|
|
Baue ein Programm mit mindestens 3 Tools:
|
|
|
|
- `get_time()`
|
|
- `count_people()` - erstmal fake: gibt z. B. `2` zurück
|
|
- `look(direction)` - erstmal fake: gibt `looked left` zurück
|
|
|
|
Das Programm soll:
|
|
|
|
1. User-Input entgegennehmen
|
|
2. LLM entscheiden lassen, ob ein Tool nötig ist
|
|
3. Tool ausführen
|
|
4. Ergebnis zurück ans LLM geben
|
|
5. finale Antwort ausgeben
|
|
|
|
## Lernpunkte
|
|
|
|
- Warum Tool Calling für Robotik zentral ist
|
|
- Warum ein LLM nicht direkt Motoren steuern sollte
|
|
- Wie man Tools typisiert und validiert
|
|
- Wie man gefährliche Aktionen begrenzt
|
|
|
|
## Akzeptanzkriterien
|
|
|
|
- Frage nach Uhrzeit ruft `get_time()` auf.
|
|
- Frage nach Personen ruft `count_people()` auf.
|
|
- Befehl "schau nach links" ruft `look("left")` auf.
|
|
|
|
## Erweiterung
|
|
|
|
Logge jeden Tool-Call mit Timestamp, Argumenten und Ergebnis. |