Best Practices and Next Steps
Auf dieser Seite
Was Sie bereits gelernt haben
Sie haben die gesamte Mistral Agents API durchlaufen. Lassen Sie uns vor dem Einstieg in die produktionsreifen Praktiken einen Rückblick wagen, da jeder Teil dieses Kurses auf dem vorhergehenden aufbaut.
Die ersten drei Lektionen legten das Fundament: Ein KI-Agent ist ein autonomes System mit einem Wahrnehmungs-Aktions-Loop; die API basiert auf drei Objekten – Agent, Conversation und Entry; und was einen Agenten von einem Chatbot unterscheidet, sind Persistenz, Tools und Handoffs. Die Lektionen 4 bis 7 machten diese Objekte nutzbar: Erstellen und Konfigurieren von Agenten mit client.beta.agents.create(), Aufrechterhalten persistenter Gespräche mit conversations.start() und conversations.append(), sowie Nutzung des Direktmodus ohne Agenten, wenn Sie prototypisieren und Persistenz keinen Mehrwert bietet.
Die Lektionen 8 bis 11 fügten Fähigkeiten hinzu. web_search gibt Ihnen Zugriff auf aktuelle Informationen mit automatischen Zitierungen; code_interpreter führt Python in einer Sandbox aus und liefert dem Agenten exakte Ergebnisse, wo das Modell allein nur Näherungswerte liefern würde; image_generation erzeugt visuelle Inhalte aus Textprompts; document_library bringt integriertes RAG für Ihre eigenen Dokumente. Die Lektionen 12 bis 16 zeigten dann mehrere Agenten, die zusammenarbeiten: Handoffs übertragen die Kontrolle von einem Agenten auf einen anderen, die Referenzarchitektur koppelt einen zentralen Router mit Spezialisten, Server-Modus automatisiert, wo Client-Modus Sie im Lauf hält, und unendliche Verkettung zerfällt in lineare, sternförmige und hybride Muster. Schließlich fasste Lektion 17 alles mit Sicherheitsvorkehrungen, dem Prinzip der geringsten Rechte und der upstream-Moderation zusammen.
Design von Agenten, die standhalten
Ein Satz fasst den gesamten Kurs zusammen: Ein Agent, eine Verantwortung, eine Beschreibung, die sagt, wann er aufgerufen werden soll. Der folgende Kontrast macht den Unterschied greifbar.
# GUT — spezialisierter Agent mit präziser Beschreibung
agent = client.beta.agents.create(
model="mistral-large-latest",
name="invoice-processor",
description="Verarbeitet Rechnungen: extrahiert Beträge, Daten, Lieferanten.",
instructions="Extrahieren Sie Rechnungsdaten in strukturiertes JSON.",
tools=[{"type": "document_library", "library_ids": [invoices_lib.id]}]
)
# SCHLECHT — generischer, vager Agent
agent = client.beta.agents.create(
model="mistral-large-latest",
name="helper",
description="Ein hilfreicher Agent.",
tools=[{"type": "web_search"}, {"type": "code_interpreter"}, {"type": "image_generation"}]
)
Der zweite Agent wird auf zwei Arten gleichzeitig versagen. Kein Router wird wissen, wann er eine Anfrage an ihn weiterleiten soll, da „ein hilfreicher Agent” keine Situation beschreibt. Und wenn er doch aufgerufen wird, lassen seine drei Tools ihn frei, im Internet nach etwas zu suchen, das er hätte berechnen sollen, oder etwas zu illustrieren, das er analysieren sollte.
Fehlerbehandlung
Netzwerkanfragen scheitern früher oder später. Ein Retry mit exponentiellem Backoff absorbiert vorübergehende Vorfälle, ohne dass ein momentaner Verzug zu einer sichtbaren Ausfallzeit wird.
import time
def safe_conversation(agent_id, query, max_retries=3):
"""Conversation with error handling and retry."""
for attempt in range(max_retries):
try:
response = client.beta.conversations.start(
agent_id=agent_id,
inputs=query
)
return response
except Exception as e:
if attempt == max_retries - 1:
raise
time.sleep(2 ** attempt) # Exponential backoff
return None
Exponentielles Backoff – eine Sekunde, dann zwei, dann vier – unterscheidet einen zivilisierten Retry-Versuch von einem Hämmern auf einen Dienst, der ohnehin unter Druck steht. Beachten Sie auch, dass der letzte Versuch die Ausnahme neu wirft, statt None zurückzugeben: Ihr Aufrufer muss wissen, dass die Operation gescheitert ist.
Beobachtung des Ablaufs
In der Produktion wird ein mehragentischer Workflow, den man nicht beobachten kann, zum undurchschaubaren Debugging-Objekt. Client-Modus bietet Ihnen genau die Haken, die Sie benötigen.
import logging
import time
logger = logging.getLogger("agents")
def monitored_conversation(agent_id, query):
"""Conversation with monitoring."""
start = time.time()
response = client.beta.conversations.start(
agent_id=agent_id,
inputs=query,
handoff_execution="client"
)
handoff_count = 0
tool_count = 0
for entry in response.outputs:
if entry.type == "agent.handoff":
handoff_count += 1
logger.info(f"Handoff #{handoff_count}: → {entry.next_agent_id}")
elif entry.type == "tool.execution":
tool_count += 1
logger.info(f"Tool #{tool_count}: {entry.tool_name}")
duration = time.time() - start
logger.info(f"Finished in {duration:.1f}s — {handoff_count} handoffs, {tool_count} tools")
return response
Diese beiden Zähler sind mehr wert, als ihre Einfachheit vermuten lässt: Eine Drift im durchschnittlichen Handoff-Anzahl signalisiert einen Router, der zögert; ein Anstieg der Tool-Aufrufe weist auf kostspielige Abfragen hin.
Kostenkontrolle reduziert sich dann auf konkrete Entscheidungen. Überwachen Sie Tokens pro Conversation, da dies die eigentliche Abrechnungseinheit ist. Nutzen Sie mistral-medium-latest, wo mistral-large-latest nichts hinzufügt – die erste Unterstützungsebene ist ein Lehrbuchbeispiel. Begrenzen Sie max_tokens in completion_args, um endlose Antworten auf einfache Fragen zu vermeiden, und deaktivieren Sie die Speicherung mit store=False, wenn Persistenz nicht erforderlich ist.
Testen der Routing-Logik
Testen Sie ein mehragentisches System wie jede Vermittlungsstelle: Füttern Sie es Fälle, deren erwartetes Ziel Sie kennen, und überprüfen Sie, wo sie landen.
def test_agent_routing():
"""Verifies that the router distributes correctly."""
test_cases = [
("What is the price of Bitcoin?", "web-search-agent"),
("Calculate 25 * 48", "calculator-agent"),
("Summarize this document", "doc-agent"),
]
for query, expected_agent_name in test_cases:
response = client.beta.conversations.start(
agent_id=router.id,
inputs=query,
handoff_execution="client"
)
for entry in response.outputs:
if entry.type == "agent.handoff":
target = client.beta.agents.get(agent_id=entry.next_agent_id)
assert target.name == expected_agent_name, \
f"Incorrect routing for '{ query}': {target.name} instead of {expected_agent_name}"
Bauen Sie diese Testsuite im Laufe der Zeit aus: Jede fehlgeleitete Anfrage, die Sie in der Produktion auffangen, wird zu einer weiteren Zeile in test_cases, und Sie werden wissen, dass das Umschreiben einer Beschreibung den gezielten Fall behebt, ohne einen anderen zu brechen.
Referenzarchitektur
Für ein produktionsreifes Projekt ist dies eine empfohlene Architektur:
Application
│
▼
Moderator Agent (filtert Anfragen)
│
▼
Router Agent (verteilt an Spezialisten)
├── Search Agent (web_search)
├── Analysis Agent (code_interpreter)
├── Documents Agent (document_library)
└── Creation Agent (image_generation)
│
▼
Logging + Monitoring + Alerting
Sie vereint alles aus diesem Kurs: Der Moderator filtert vor jeder Ausführung, der Router leitet ohne selbst zu antworten, jeder Spezialist trägt ein Tool und eine Verantwortung, und die Beobachtung umhüllt das gesamte System.
Wo es weitergeht
Vier Richtungen erweitern, was Sie jetzt tun können. Function calling ermöglicht es Ihnen, eigene benutzerdefinierte Tools jenseits der integrierten zu bauen: Rufen Sie eine Business-API auf, query eine Datenbank, lösen Sie einen internen Service aus. MCP Servers integrieren das Model Context Protocol, das standardisiert, wie Tools exponiert werden. Structured outputs zwingen Antworten in ein JSON-Schema, was alles ändert, wenn die Ausgabe eines Agenten ein anderes System statt eines menschlichen Lesers füttert. Schließlich streaming gibt Antworten in Echtzeit statt in einem Block zurück – entscheidend bei langen Ketten, wo stilles Warten unangenehm wird.
Drei Ressourcen begleiten diesen nächsten Schritt: die offizielle Dokumentation unter docs.mistral.ai/agents, die Mistral Cookbooks, die vollständige Implementierungsbeispiele bieten, und die API Reference, die jeden Endpunkt im Detail dokumentiert.
Kernaussagen
- Spezialisieren Sie Ihre Agenten – ein Agent = eine Verantwortung
- Überwachen Sie – protokollieren Sie jeden Handoff und jede Tool-Ausführung
- Testen Sie – validieren Sie Routing und die Antworten jedes Agenten
- Sichern Sie – Sicherheitsvorkehrungen, geringste Rechte, upstream-Moderation
- Kosten optimieren – passgenau dimensioniertes Modell, max_tokens, store=False, wo möglich
- Mistral Agents befinden sich in der Beta – bleiben Sie auf API-Änderungen im Lauf
Wissen prüfen
Agenten, integrierte Tools, Handoffs: Hat die Agents API noch blinde Flecken?
1. Wann ist ein Agent notwendig – und wann reicht ein Chatbot?
Antwort: Ein Agent ist gerechtfertigt, wenn Sie Tools, Persistenz und mehrstufige Entscheidungen benötigen; für einfache Q&A reicht eine Standard-Conversation – die Architektur folgt dem Bedarf.
2. Was verwalten persistente Gespräche in der Agents API?
Antwort: Historie auf der Mistral-Seite: Sie setzen eine Conversation mit ihrer ID fort, ohne den gesamten Kontext erneut zu senden – der Zustand wird zum Service.
3. Listen Sie die integrierten Tools auf und deren Verwendung.
Antwort: web_search (Echtzeit-Informationen), code_interpreter (Python ausführen), image_generation (Bilder erstellen), document_library (Fragen-Antworten zu Ihren Dateien) – sofort einsatzbereite Fähigkeiten, keine Implementierung erforderlich.
4. Wie funktioniert ein mehragentisches System mit Handoffs?
Antwort: Ein Router qualifiziert die Anfrage und leitet sie an den zuständigen Spezialisten-Agenten weiter; jeder Agent bleibt einfach, Orchestrierung bietet Abdeckung – und Handoffs ketten sich in der Tiefe.
5. Wie sichern Sie Agenten in der Produktion?
Antwort: Mit Sicherheitsvorkehrungen für Eingaben/Ausgaben, eng umschriebenen Tools, Nachvollziehbarkeit von Aktionen und menschlicher Validierung bei hochriskanten Entscheidungen – Autonomie wird durch Kontrolle verdient.
Spezialisierte Agenten, integrierte Tools, Routing, Sicherheitsvorkehrungen: Die vollständige Architektur fasst sich in vier Wörtern zusammen – und dieser Kurs hat Sie jeden davon bauen lassen.