Bis hierhin haben wir ĂŒber Agenten als ein System gesprochen, das:
- ein Ziel hat
- versucht zu handeln
- das Ergebnis prĂŒft
- und es erneut versucht, wenn es nicht klappt
Aber das klingt immer noch nach Theorie.
Also schreiben wir jetzt den einfachsten Agenten, der wirklich funktioniert.
Keine Frameworks. Kein Memory. Keine komplexe Logik.
Nur ein Loop.
Stell dir einen Agenten wie ein Kind vor

Ein Kind will eine TĂŒr öffnen.
Es:
- probiert die Klinke -> geht nicht auf
- probiert stÀrker -> klappt nicht
- probiert es noch einmal -> offen!
Ein Agent arbeitet genauso. Er "denkt" nicht im menschlichen Sinn.
Er macht einfach:
-> Probieren
-> Schauen, was passiert ist
-> Aktion Àndern
-> Wieder probieren
Aufgabe fĂŒr den Agenten
Geben wir dem Agenten eine einfache Aufgabe:
Schreibe eine Zahl gröĂer als 10
Aber wir machen es trickreich. Statt eines Modells starten wir mit random, um die Mechanik ohne unnötiges Rauschen zu sehen.
Manchmal bekommt der Agent 3, manchmal 7, manchmal 15. Er muss das unterscheiden und entweder stoppen oder erneut versuchen.
Code: Agent ohne LLM
import random
goal = 10
max_steps = 5
for step in range(max_steps):
print(f"\nđ€ Step {step + 1}: Agent is trying...")
# "Modell" erzeugt eine Antwort
number = random.randint(1, 20)
print(f"đŹ Generated: {number}")
if number > goal:
print(f"â
Goal reached! {number} > {goal}")
break
else:
print(f"â Not enough. {number} †{goal}. Trying again...")
else:
print("\nâ ïž Max steps reached without success")
Starte es ein paar Mal. Schau, wie der Agent selbst entscheidet, ob er weitermacht oder stoppt.
Was passiert hier
- Der Agent bekommt ein Ziel - eine Zahl > 10 finden
- Probiert - "erzeugt" eine Antwort
- PrĂŒft - ist das Ziel erreicht?
- Wenn nein - probiert erneut (maximal 5 Mal)
- Wenn ja - stoppt
Das ist der ganze Loop:
Modell vs Agent
| Modell | Agent | |
|---|---|---|
| Erzeugt eine Antwort | â | â |
| PrĂŒft das Ergebnis | â | â |
| Entscheidet, was als NĂ€chstes passiert | â | â |
Das Modell ist fĂŒr Act verantwortlich.
Der Agent ist fĂŒr Check -> Retry -> Stop verantwortlich.
Warum ist das schon ein Agent und nicht nur eine Funktion?
Eine Funktion wĂŒrde einen Versuch machen und fertig.
Ein Agent:
- hat ein Ziel
- prĂŒft das Ergebnis
- kann erneut handeln ohne deine Beteiligung
Du gibst die Aufgabe, und er arbeitet selbststÀndig. Auch wenn er Fehler macht.
Was, wenn wir eine echte LLM anschlieĂen?
random.randint() durch einen AI API-Call zu ersetzen ist eine Ănderung.
Der Agenten-Loop bleibt genau gleich.
Genau das ist der Kern: Ein Agent ist nicht "intelligentes Modell". Es ist Struktur: Ziel -> Aktion -> PrĂŒfung -> Wiederholung.
Kurz gesagt
Du hast gerade den Basis-Loop eines Agenten verstanden:
- Ziel - eine Zahl > 10 finden
- Act - erzeugt eine Antwort
- Check - ist das Ziel erreicht?
- Retry - falls nötig
- Stop - wenn das Ziel erreicht ist oder die Schritte aufgebraucht sind
Das ist das Fundament. Alles andere ist eine Erweiterung dieses Schemas.
FAQ
Q: Warum steht hier max_steps = 5 und kein unendlicher Loop?
A: Ein Agent, der nicht selbst stoppt, ist gefĂ€hrlich. Er kann Geld fĂŒr API-Calls ausgeben, in einem Loop feststecken oder endlos laufen, wenn das Ziel unerreichbar ist. max_steps ist eine Absicherung.
Q: Warum haben wir mit random angefangen und nicht direkt mit LLM?
A: Damit du die Agent-Mechanik ohne unnötiges Rauschen siehst. Das Modell ist nur ein Detail. Der Loop ist wichtiger.
Q: Warum weiĂ der Agent nicht vor der PrĂŒfung, dass die Zahl "schlecht" ist?
A: Das Modell erzeugt nur. Es kennt das Ziel nicht. Das Ziel ist Verantwortung des Agenten, nicht des Modells.
Wie geht es weiter
Hast du max_steps = 5 bemerkt?
Das ist kein Zufall. Ein Agent, der nicht selbst stoppt, kann:
- endlos laufen
- Geld fĂŒr API-Calls ausgeben
- in einem Loop feststecken, wenn das Ziel unerreichbar ist
Darum braucht jeder Agent Grenzen.
-> Lies weiter: Wann ein Agent Grenzen braucht
Willst du das selbst ausfĂŒhren?
Wenn du eine vollstÀndige Implementierung mit echter LLM sehen willst, in Module aufgeteilt und sofort startbar, findest du sie hier: