\n\n\n\n Ich habe meinen KI-Agenten nützlich gemacht (so geht's) Agent 101 \n

Ich habe meinen KI-Agenten nützlich gemacht (so geht’s)

📖 13 min read2,553 wordsUpdated Mar 29, 2026

Hallo, Agentenbauer! Emma hier, zurück von einer weiteren nächtlichen Kodierungs-Session, die von lauwarmem Kaffee und der reinen Freude, etwas zu sehen, das ich gebaut habe… nun ja, *etwas* macht. Heute möchte ich über etwas sprechen, das vielen von euch wahrscheinlich auf dem Herzen liegt, besonders wenn ihr gerade erst eure ersten Schritte im Bereich der KI-Agenten wagt: Wie schaffst du es, dass ein KI-Agent tatsächlich etwas Nützliches tut und nicht einfach generischen Text oder Fehlermeldungen ausspuckt?

Konkret möchte ich mich auf ein häufiges Hindernis konzentrieren, das ich oft sehe und ehrlich gesagt erst vor kurzem selbst erlebt habe: Die Kunst, deinem Agenten Werkzeuge zu geben. Es klingt einfach, oder? „Hier, Agent, benutze das.“ Aber es gibt einen Nuance, einen subtilen Tanz, bei dem du ihm genug Möglichkeiten gibst, ohne es zu überfordern, und sicherstellst, dass es *weiß*, *wann* es das nutzen soll, was du ihm gegeben hast. Vergiss für einen Moment schicke neue Frameworks; lass uns zu den Grundlagen zurückkehren. Wenn dein Agent nicht mit der realen Welt (oder zumindest der digitalen Welt außerhalb seines eigenen LLM-Gehirns) interagieren kann, ist er nur ein schicker Chatbot.

Stell dir das so vor: Du möchtest, dass dein Kleinkind ein wunderschönes Lego-Schloss baut. Du kannst ihm genau sagen, was es tun soll, aber wenn du ihm nicht die Lego-Steine (die Werkzeuge) gibst, wird es nur verwirrt dastehen. Ähnlich, wenn du ihm eine gesamte Werkstatt voller Elektrowerkzeuge ohne Anleitung gibst, wirst du am Ende mit… nun ja, wahrscheinlich einem Chaos und vielleicht einem Besuch in der Notaufnahme dastehen. Unsere KI-Agenten sind ein bisschen wie dieses Kleinkind, jedoch mit etwas weniger Verletzungsrisiko.

Warum Werkzeuge die Superkraft deines Agenten sind (und manchmal dein Kopfweh)

Als ich anfing, mit Agenten zu experimentieren, verbrachte ich eine peinlich lange Zeit damit, zu versuchen, einen LLM dazu zu bringen, Dinge zu „erinnern“ oder Informationen rein durch geschickte Eingaben „nachzuschlagen“. Ich schrieb Eingaben, länger als meine Einkaufsliste, in dem Versuch, den gesamten Kontext, den er benötigte, einzubetten. Und weißt du was? Es scheiterte meistens. Oder es halluzinierte. Viel. Mein Agent sagte mir selbstbewusst, dass das aktuelle Wetter in der Antarktis angenehme 75 Grad Fahrenheit und sonnig sei. Offensichtlich nicht ideal, um eine Reise zu planen.

Der Aha-Moment kam, als ich erkannte, dass der LLM selbst nicht dazu gedacht ist, eine Datenbank oder einen Internetbrowser zu sein. Seine Superkraft liegt im Verstehen und Generieren menschenähnlicher Texte basierend auf den Daten, mit denen er trainiert wurde. Seine Schwäche? Echtzeitinformationen, spezifische Berechnungen oder die Interaktion mit externen Systemen. Hier kommen die Werkzeuge ins Spiel. Werkzeuge sind diese kleinen Funktionen oder APIs, die du bereitstellst, damit dein Agent über sein neuronales Netzwerk hinaus in die tatsächliche Welt gelangt.

Stell dir einen Agenten vor, dessen Aufgabe es ist, dir bei der Planung eines Wochenendausflugs zu helfen. Ohne Werkzeuge kann es generische Reiseziele oder Aktivitäten basierend auf seinen Trainingsdaten vorschlagen. Mit Werkzeugen? Es kann:

  • Echtzeitflugpreise überprüfen.
  • Aktuelle Wettervorhersagen für eine bestimmte Stadt abrufen.
  • Verfügbare Hotelzimmer und deren Preise finden.
  • Bewertungen von lokalen Restaurants lesen.
  • Sogar eine Autovermietung buchen!

Plötzlich ist dein Agent nicht nur ein Gesprächspartner; er ist ein persönlicher Assistent mit echtem Nutzen.

Mein erster Versuch: Das Google-Suchdebakel

Mein erster Versuch, einem Agenten ein Werkzeug zu geben, war, wie zu erwarten, ein Chaos. Ich wollte einen Agenten, der Fragen zu aktuellen Ereignissen beantworten konnte. Einfach, oder? Mein erster Gedanke war: „Gib ihm einfach Zugang zu Google!“

Ich endete damit, eine Bibliothek zu verwenden, die ein einfaches Suchwerkzeug bereitstellte. Das Problem lag nicht am Werkzeug selbst; es war mein Verständnis davon, wie der Agent es *nutzen* würde. Ich erklärte einfach das Werkzeug, sagte dem Agenten, dass es existierte, und erwartete Magie. Der Agent, segne sein digitales Herz, suchte oft nach Dingen, die bereits in meiner Eingabe waren, oder er suchte nach obskuren Dingen, wenn eine direkte Antwort verfügbar war. Es war, als würde man einem Kind einen Taschenrechner geben und es versuchen lassen, damit seine Freunde anzurufen.

Die wichtige Erkenntnis, die ich gewann, war diese: Es reicht nicht aus, einem Agenten einfach ein Werkzeug zu geben. Du musst ihm sagen, wofür das Werkzeug gedacht ist, welche Art von Eingabe es erwartet und welche Art von Ausgabe es erhalten wird. Und entscheidend ist, dass du seinen Entscheidungsprozess darüber lenkst, *wann* es dieses Werkzeug nutzen sollte.

Die Anatomie eines guten Werkzeugs (für deinen Agenten)

Lass uns aufschlüsseln, was ein Werkzeug für einen KI-Agenten effektiv macht. Ich halte dieses Framework für einen Moment neutral, da die Prinzipien gelten, egal ob du LangChain, CrewAI oder deinen eigenen benutzerdefinierten Agentenloop verwendest.

1. Klare Funktionssignatur

Dein Werkzeug benötigt einen Namen und, falls es Argumente benötigt, klare Parameterdefinitionen. Denk daran wie an eine Funktion in Python. Der Agent muss wissen, wie man es aufruft und was er übergeben soll.

2. Kurze Beschreibung

Dies ist wahrscheinlich der am meisten übersehene Teil! Die Beschreibung ist deine direkte Verbindung zur Logik des LLM. Es ist, wie du dem Agenten in einfacher Sprache sagst, was dieses Werkzeug tut, warum es nützlich ist und wann es in Betracht ziehen sollte, es zu verwenden. Sei nicht vage! Statt „Ein Suchwerkzeug“ versuche „Durchsucht das Internet nach aktuellen Informationen zu jedem Thema. Verwende dies, wenn du aktuelle Fakten, externe Daten oder zur Überprüfung von Informationen benötigst, die in meinen Trainingsdaten veraltet sein könnten.“.

3. Zuverlässige Implementierung

Der tatsächliche Code, den das Werkzeug ausführt, muss konsistent funktionieren. Wenn dein Werkzeug gelegentlich fehlschlägt oder fehlerhafte Daten zurückgibt, wird dein Agent verwirrt und könnte aufhören, diesem Werkzeug zu vertrauen. Das bedeutet, dass Fehlerbehandlung dein Freund ist!

Praktisches Beispiel: Ein einfacher Faktenprüfungs-Agent

Lass uns einen super einfachen Agenten bauen, der Fragen beantworten kann und, falls er sich unsicher ist oder die Informationen veraltet erscheinen, eine Suchmaschine verwendet, um aktuelle Daten zu erhalten. Für dieses Beispiel werde ich ein sehr vereinfachtes Python-Beispiel verwenden, das sich auf die Werkzeugdefinition konzentriert.

Schritt 1: Definiere unser „Such“-Werkzeug

Wir werden eine Python-Funktion erstellen, die eine Websuche simuliert. In einer echten Anwendung würde dies mit einer Such-API (wie SerpAPI, Google Custom Search oder sogar einfach `requests`, um eine Website zu scrapen, obwohl das Scrapen seine eigenen Herausforderungen hat) verbunden werden.

import requests
import json

def web_search_tool(query: str) -> str:
 """
 Durchsucht das Internet nach aktuellen Informationen zu jedem Thema. 
 Verwende dieses Werkzeug, wenn du aktuelle Fakten, externe Daten, 
 oder zur Überprüfung von Informationen benötigst, die in meinen Trainingsdaten veraltet sein könnten.
 Gib eine kurze Suchanfrage an.
 """
 try:
 # Simuliere einen echten API-Aufruf zur Websuche
 # In einem echten Szenario wäre dies ein tatsächlicher API-Aufruf, z.B. zu SerpAPI
 # Zur Vereinfachung mocken wir nur einige Ergebnisse basierend auf gängigen Anfragen.
 mock_results = {
 "aktuelles Wetter in London": "Es sind 12 °C und bewölkt in London, UK, Stand 22. März 2026.",
 "Bevölkerung von Tokio": "Die aktuelle geschätzte Bevölkerung von Tokio liegt bei etwa 14 Millionen Menschen (Stand Anfang 2026).",
 "neueste Nachrichten zu KI-Agenten": "Diese Woche wurden neue Fortschritte in multi-Agenten-Orchestrierungsframeworks bekannt gegeben.",
 "Hauptstadt von Frankreich": "Die Hauptstadt von Frankreich ist Paris.", # Beispiel, wo LLM es möglicherweise bereits weiß
 "wer den Super Bowl letztes Jahr gewonnen hat": "Die Kansas City Chiefs gewannen den Super Bowl LVIII im Februar 2025."
 }
 
 # Eine sehr vereinfachte Übereinstimmung zu Demonstrationszwecken
 for key, value in mock_results.items():
 if key.lower() in query.lower():
 return value
 
 # Wenn keine spezifische Übereinstimmung gefunden wird, gebe ein generisches Suchergebnis zurück
 return f"Suchergebnisse für '{query}': [Simuliertes Ergebnis: Informationen, die auf einer aktuellen Nachrichten-Website oder Wikipedia in Bezug auf '{query}' gefunden wurden]"
 except Exception as e:
 return f"Fehler bei der Durchführung der Websuche: {str(e)}"

# Beispiel, wie das Werkzeug von einem Agenten verwendet werden könnte:
# print(web_search_tool("aktuelles Wetter in London"))
# print(web_search_tool("Bevölkerung von Tokio"))
# print(web_search_tool("wer den Super Bowl letztes Jahr gewonnen hat"))
# print(web_search_tool("zufällige obskure Tatsache"))

Beachte die Docstring für `web_search_tool`? Das ist die Beschreibung deines Werkzeugs! Sie sagt dem Agenten, *was* es tut und *wann* es zu verwenden ist. Der `query: str` ist der klare Eingabeparameter.

Schritt 2: Integrieren des Werkzeugs mit einem Agenten (vereinfacht)

Wie würde ein Agent also „wissen“, wie man dieses Werkzeug verwendet? Die meisten Agentenframeworks abstrahieren dies, aber im Kern betrifft es:

  1. Dem LLM die Beschreibung und die Funktionssignatur des Werkzeugs bereitzustellen.
  2. Das LLM entscheiden zu lassen, ob es das Werkzeug aufrufen soll.
  3. Die Python-Funktion des Werkzeugs auszuführen.
  4. Die Ausgabe des Werkzeugs an das LLM zurückzuspeisen.

Lass uns eine sehr vereinfachte Agentenschleife unter Verwendung eines hypothetischen LLM-Wrappers vorstellen:

# Dies ist ein konzeptionelles Beispiel, das nicht ohne eine echte LLM-Integration 
# und ein Agenten-Framework ausführbar ist.

class SimpleAgent:
 def __init__(self, llm_model):
 self.llm = llm_model
 self.tools = {
 "web_search": web_search_tool
 }
 self.tool_descriptions = {
 "web_search": {
 "name": "web_search",
 "description": """Durchsucht das Internet nach aktuellen Informationen zu jedem Thema. 
 Verwenden Sie dieses Tool, wenn Sie aktuelle Fakten, externe Daten 
 oder zur Überprüfung von Informationen benötigen, die möglicherweise 
 in meinen Trainingsdaten veraltet sind.
 Geben Sie eine prägnante Suchanfrage als Eingabe an.""",
 "parameters": {"query": "string"} # Vereinfachte Parameterbeschreibung
 }
 }

 def run(self, prompt: str) -> str:
 # Schritt 1: LLM entscheidet, ob ein Tool benötigt wird
 # In einem echten Framework würde das LLM mit der Anfrage des Nutzers 
 # UND den Beschreibungen verfügbarer Tools angesprochen werden. Es würde 
 # dann eine strukturierte Ausgabe generieren, die angibt, ob es ein Tool 
 # verwenden möchte und mit welchen Argumenten.

 # Zur Demonstration lassen Sie uns etwas LLM "denken" hartcodieren
 if "aktuell" in prompt.lower() or "neueste" in prompt.lower() or "auf dem neusten Stand" in prompt.lower():
 print("\nAGENT GEDANKEN: Diese Frage erfordert wahrscheinlich aktuelle Informationen. Ich sollte das Tool web_search verwenden.")
 search_query = prompt.replace("Was ist das ", "").replace("was ist ", "").strip("?.").strip()
 print(f"AGENT AKTION: Aufruf von web_search mit Anfrage: '{search_query}'")
 tool_output = self.tools["web_search"](search_query)
 print(f"TOOL AUSGABE: {tool_output}")
 
 # Schritt 2: LLM verarbeitet die Toolausgabe und generiert die endgültige Antwort
 final_answer = f"Basierend auf meiner Suche: {tool_output}"
 else:
 print("\nAGENT GEDANKEN: Diese Frage könnte aus meinem internen Wissen beantwortet werden.")
 # In einem echten LLM würde es direkt eine Antwort generieren
 final_answer = f"Innenwissen des LLM sagt: [Simulierte Antwort für: '{prompt}']"
 
 return final_answer

# --- Anwendungsbeispiel ---
# Angenommen, 'my_llm_model' ist ein instanziiertes LLM-Client (z.B. OpenAI, Anthropic)
# agent = SimpleAgent(my_llm_model)

# print(agent.run("Was ist das aktuelle Wetter in London?"))
# print("\n---")
# print(agent.run("Was ist die Hauptstadt von Frankreich?")) # Dies könnte basierend auf unserer einfachen Logik keine Suche auslösen
# print("\n---")
# print(agent.run("Erzählen Sie mir die neuesten Nachrichten über KI-Agenten."))

Dies ist natürlich eine stark vereinfachte Darstellung. Echte Agenten-Frameworks handhaben die Logik des Toolaufrufs des LLM viel eleganter, oft unter Verwendung von Funktionsaufruf-Funktionen, die in Modelle wie OpenAI’s GPT-Serie oder Anthropic’s Claude integriert sind.

Die zentrale Idee bleibt: Das LLM erhält die Eingabeaufforderung und die Toolbeschreibungen. Basierend auf seinem Verständnis entscheidet es, ein Tool zu “rufen” und die Argumente bereitzustellen. Ihr Code führt dann dieses Tool aus und gibt das Ergebnis an das LLM zurück, das dieses Ergebnis verwendet, um seine endgültige Antwort zu formulieren.

Meine neueste Besessenheit: Orchestrierungstools

Über einfache Suchen hinaus habe ich mit Tools experimentiert, die nicht nur Informationen abrufen, sondern auch *äußere* Aktionen orchestrieren. Denken Sie an ein “E-Mail senden”-Tool oder ein “Kalenderereignis erstellen”-Tool. Diese sind mächtig, weil sie es dem Agenten ermöglichen, über bloße Gespräche hinauszugehen und tatsächlich *Dinge* in Ihrem digitalen Leben zu *tun*.

Ein aktuelles Projekt bestand darin, einen Agenten zu bauen, der helfen konnte, mein überquellendes Postfach zu verwalten. Anstatt nur E-Mails zusammenzufassen (was cool, aber begrenzt ist), wollte ich, dass er Folgendes kann:

  • `summarize_thread(thread_id)`: Eine spezifische E-Mail-Konversation zusammenfassen.
  • `draft_reply(thread_id, context, tone)`: Eine Antwort entwerfen, die auf dem Thread, ein bisschen Kontext, den ich gebe, und dem gewünschten Ton basiert.
  • `add_to_todo_list(task_description, due_date)`: Ein Element zu meiner Todoist-Liste hinzufügen.

Das Tool `draft_reply` war faszinierend, weil es selbst eine Art interne Denkweise des Agenten beinhaltete: “Okay, der Benutzer möchte, dass ich eine Antwort entwerfe. Zuerst muss ich `summarize_thread` verwenden, um den Kontext zu verstehen. Dann kann ich diese Zusammenfassung und den gewünschten Ton des Benutzers verwenden, um den Entwurfstext zu generieren.” Dies demonstriert, wie Agenten Tools für komplexere Aufgaben verknüpfen können.

Das Tool `add_to_todo_list` war ein einfacher API-Aufruf an Todoist. Die Magie lag nicht im API-Aufruf selbst, sondern darin, dass der Agent *entscheiden* musste, wann eine E-Mail einen umsetzbaren Punkt enthielt, der verfolgt werden musste, und dann korrekt die Aufgabenbeschreibung und ein mögliches Fälligkeitsdatum aus dem E-Mail-Text extrahieren musste, um es an das Tool weiterzugeben.

Handlungsfähige Erkenntnisse für Ihre Agentenreise

  1. Beginnen Sie einfach: Versuchen Sie nicht, Ihrem Agenten auf einmal 50 Tools zu geben. Beginnen Sie mit ein oder zwei wirklich nützlichen Tools (wie einer Websuche oder einem einfachen Rechner) und meistern Sie, wie Ihr Agent mit ihnen interagiert.
  2. Beschreibungen sind entscheidend: Verbringen Sie Zeit damit, klare, prägnante und lehrreiche Beschreibungen für jedes Tool zu erstellen. Denken Sie darüber nach, was ein Mensch wissen müsste, um zu entscheiden, wann und wie man dieses Tool verwendet. Betonen Sie seinen Zweck und die idealen Anwendungsfälle.
  3. Klarheit bei Eingabe/Ausgabe: Stellen Sie sicher, dass die Funktionssignatur Ihres Tools kristallklar darüber ist, welche Argumente es erwartet (Typ-Hinweise sind großartig!) und in welchem Format seine Ausgabe vorliegen wird. Der Agent muss beides verstehen.
  4. Fehler elegant behandeln: Ihre Tools *werden* manchmal fehlschlagen. Implementieren Sie eine Fehlerbehandlung innerhalb Ihrer Toolfunktionen, damit, wenn etwas schiefgeht (z.B. API-Zeitüberschreitung, ungültige Eingabe), das Tool eine sinnvolle Fehlermeldung zurückgibt, anstatt abzustürzen, wodurch der Agent möglicherweise erneut versuchen oder den Benutzer informieren kann.
  5. Denken Sie über Ketten nach: Sobald Sie mit der Verwendung einzelner Tools vertraut sind, beginnen Sie darüber nachzudenken, wie Agenten Tools verknüpfen können. Ein einfaches Beispiel: “Informationen suchen” -> “Informationen zusammenfassen” -> “Benutzer antworten.”
  6. Iterieren, iterieren, iterieren: Sie werden selten die Tool-Integration beim ersten Versuch perfekt hinbekommen. Beobachten Sie, wie Ihr Agent seine Tools verwendet (oder *missbraucht*), passen Sie Ihre Toolbeschreibungen an und verfeinern Sie die Eingabeaufforderung Ihres Agenten, um sein Verhalten zu steuern.

Ihren KI-Agenten mit Tools auszustatten, ist der Ort, an dem es wirklich magisch wird. Es ist der Schritt, der einen cleveren Chatbot in einen wirklich nützlichen, interaktiven Assistenten verwandelt, der tatsächlich *Dinge* in der Welt *tun* kann. Es braucht etwas Übung, eine Prise Geduld und eine Menge sorgfältige Beschreibungsarbeit, aber glauben Sie mir, die Belohnung ist riesig. Also gehen Sie voran, aktivieren Sie Ihre Agenten und lassen Sie mich wissen, welche unglaublichen Dinge Sie sie bauen lassen!

Bis zum nächsten Mal, viel Spaß beim Agenten-Bauen!

Emma Walsh

agent101.net

Verwandte Artikel

🕒 Published:

🎓
Written by Jake Chen

AI educator passionate about making complex agent technology accessible. Created online courses reaching 10,000+ students.

Learn more →

Leave a Comment

Your email address will not be published. Required fields are marked *

Browse Topics: Beginner Guides | Explainers | Guides | Opinion | Safety & Ethics

Partner Projects

BotsecBotclawAgntaiBot-1
Scroll to Top