Zum Hauptinhalt springen
Lektion 17 von 18 · Mistral Agents: Aufbau autonomer KI

Sichere Agenten durch Guardrails absichern

Lektion 17 von 18 Aktualisiert am 3. November 2026 Entwickler
Auf dieser Seite
  1. Agentensicherheit ist keine Option
  2. Der Guardrails-Parameter
  3. Anweisungen: Ihre erste Verteidigungslinie
  4. Das Prinzip der geringsten Rechte
  5. Filtern von Übergaben
  6. Speichern Sie nichts, was nicht gespeichert werden muss
  7. Moderation upstream
  8. Generierung anpassen
  9. Bevor Sie in die Produktion gehen
  10. Kernaussagen

Aktualisiert am 3. November 2026. Die zuvor gezeigten Beispiele nutzten guardrails={"enabled": True}, ein Format, das nicht existiert: Der offizielle Parameter ist eine Liste von moderation_llm_v2-Konfigurationen mit einem Schwellenwert pro Kategorie. Der Text klärt zudem, was die Dokumentation über deren Geltungsbereich besagt: Sie moderieren ausschließlich die eingehende Nachricht. Quellen: Moderation & Guardrailing · Agents & Conversations · SDK mistralai 3.7.0.

Agentensicherheit ist keine Option

Ein autonomer Agent, der Werkzeuge nutzt, auf das Internet zugreift und Code ausführt, birgt Risiken, wenn seine Handlungen nicht eingeschränkt sind. Der Unterschied zu einem einfachen Completion-Aufruf ist fundamental, nicht nur eine Frage des Grades: Ein Modell, das Text erzeugt, kann bei Überprüfung korrigiert werden; ein Agent, der handelt, hat bereits gehandelt. Guardrails sind der Satz von Mechanismen, der die Grenzen definiert, innerhalb derer ein Agent handeln darf oder nicht. Keiner von ihnen ist für sich allein ausreichend; erst ihre Schichtung bietet Schutz.

Der Guardrails-Parameter

Die erste Ebene wird beim Erstellen des Agenten deklariert.

from mistralai.client import Mistral
import os

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

agent = client.beta.agents.create(
    model="mistral-large-latest",
    name="Secure Agent",
    description="Agent mit aktivierten Guardrails.",
    instructions="""Sie sind ein professioneller Assistent.
- Teilen Sie niemals persönliche Informationen
- Generieren Sie niemals unangemessene Inhalte
- Weisen Sie Anfragen außerhalb des Geltungsbereichs ab
- Bei Zweifeln nachfragen""",
    tools=[{"type": "web_search"}],
    guardrails=[
        {
            "block_on_error": True,
            "moderation_llm_v2": {
                "custom_category_thresholds": {
                    "sexual": 0.1,
                    "hate_and_discrimination": 0.1,
                    "violence_and_threats": 0.2,
                    "criminal": 0.1,
                    "selfharm": 0.1,
                    "pii": 0.2,
                    "jailbreaking": 0.2,
                },
                "action": "block",
            },
        }
    ],
)

Jede aufgeführte Kategorie erhält einen Schwellenwert zwischen 0 und 1: Wird dieser Wert überschritten, wird die Nachricht des Benutzers mit einem 403-Fehler abgelehnt, bevor sie das Modell erreicht, und block_on_error lehnt die Anfrage ebenfalls ab, wenn die Bewertung selbst fehlschlägt. Laut Dokumentation erben alle Gespräche für den Agenten diese Guardrails. Sie moderieren ausschließlich die Eingabe: Weder Suchergebnisse des Web-Search-Tools noch die Antwort des Agenten werden von ihnen geprüft.

Dieser Parameter wird auch auf der Ebene des Gesprächs akzeptiert, wo er die Konfiguration des Agenten überschreibt. Dies ermöglicht es Ihnen, das Verhalten eines geteilten Agenten vorübergehend zu verschärfen, ohne für einen einzelnen Anwendungsfall eine zweite Version dieses Agenten zu erstellen.

response = client.beta.conversations.start(
    agent_id=agent.id,
    inputs="Analysieren Sie dieses vertrauliche Dokument.",
    guardrails=[  # ersetzt die Guardrails des Agenten für dieses Gespräch
        {
            "block_on_error": True,
            "moderation_llm_v2": {
                "custom_category_thresholds": {"pii": 0.05, "jailbreaking": 0.1},
                "action": "block",
            },
        }
    ],
)

Anweisungen: Ihre erste Verteidigungslinie

Der Systemprompt bleibt das wirksamste Hebelwerkzeug, da er vor jeder Modellentscheidung wirkt. Ein gut konstruierter Sicherheitsprompt trennt klar die Rolle, den Geltungsbereich, Verbote und das erwartete Format.

instructions = """## Rolle
Sie sind ein Rechtsassistent, der sich auf das französische Arbeitsrecht spezialisiert hat.

## Geltungsbereich
- NUR französisches Arbeitsrecht
- Weisen Sie jede Anfrage außerhalb des Geltungsbereichs ab (Steuerrecht, Immobilienrecht, Strafrecht usw.)

## Strenge Verbote
- GEBEN SIE NIEMALS definitive Rechtsberatung
- FASSEN SIE NIEMALS Rechtsdokumente ohne eine Warnung zusammen
- TEILEN SIE NIEMALS Informationen über andere Mandanten
- ERWÄHnen SIE IMMER, dass ein Anwalt die Validierung vornehmen muss

## Format
- Zitieren Sie relevante Rechtsartikel
- Formulieren Sie klar die Grenzen Ihrer Antwort
- Bieten Sie immer die Konsultation eines Fachmanns an"""

Beachten Sie, was der Abschnitt „Geltungsbereich” bewirkt: Er sagt nicht nur, was der Agent behandelt, sondern benennt explizit die angrenzenden Domänen, die er ablehnen muss. Ohne diese Aufzählung könnte eine steuerrechtliche Frage im Zusammenhang mit einer Kündigung durchrutschen, da sie dem Arbeitsrecht ähnlich genug ist, damit das Modell darauf eingeht. Der Abschnitt „Strenge Verbote” folgt derselben Logik: Er formuliert Ablehnungen, keine Empfehlungen. Ein Agent, der angewiesen wird, „vorsichtig” zu sein, kalibriert seine eigene Vorsicht; ein Agent, der untersagt ist, Dokumente ohne eine Warnung zu verfassen, wendet eine Regel an.

Das Prinzip der geringsten Rechte

Jede deklarierte Werkzeugart ist eine Fähigkeit, die der Agent zu falschen Zeiten mobilisieren kann. Vergleichen Sie diese beiden Konfigurationen.

# Zu viele Werkzeuge — große Angriffsfläche
dangerous_agent = client.beta.agents.create(
    model="mistral-large-latest",
    name="do-it-all-agent",
    tools=[
        {"type": "web_search"},
        {"type": "code_interpreter"},
        {"type": "image_generation"},
        {"type": "document_library", "library_ids": [lib.id]}
    ]
)

# Prinzip der geringsten Rechte — nur das Notwendige
secure_agent = client.beta.agents.create(
    model="mistral-large-latest",
    name="documentation-agent",
    tools=[{"type": "document_library", "library_ids": [lib.id]}]
)

Der zweite Agent kann nicht online gehen, um Informationen zu suchen, die in Ihren Dokumenten fehlen, noch kann er Code auf Inhalten ausführen, die Sie nicht überprüft haben. Dies ist keine Einschränkung, die Sie erleiden; es ist die Garantie, dass seine Antworten aus Ihrem Wissensbestand und nirgendwo anders stammen. Fragen Sie sich Werkzeug für Werkzeug: Wenn Sie kein Szenario finden, in dem der Agent dieses Werkzeug benötigt, entfernen Sie es.

Filtern von Übergaben

In einem Multi-Agenten-System gibt Ihnen der Client-Modus das Veto-Recht über jede Übergabe. Eine Whiteliste reicht aus, um zu verhindern, dass ein Agent über einen von Ihnen nicht antizipierten Pfad einen anderen Agenten erreicht.

response = client.beta.conversations.start(
    agent_id=router.id,
    inputs=user_query,
    handoff_execution="client"
)

ALLOWED_AGENTS = {research.id, analyst.id}  # Whiteliste

for entry in response.outputs:
    if entry.type == "agent.handoff":
        if entry.next_agent_id not in ALLOWED_AGENTS:
            print(f"BLOCKED: unbefugte Übergabe an {entry.next_agent_id}")
            continue
        # Weiterverarbeitung mit dem autorisierten Agenten

Die Whiteliste lebt in Ihrem Code, nicht in der Agentenkonfiguration: Sie bleibt gültig, selbst wenn jemand ein Übergabeziel zum Router hinzufügt, ohne Sie zu benachrichtigen.

Speichern Sie nichts, was nicht gespeichert werden muss

Für sensible Daten ist der beste Schutz, nichts zu speichern.

response = client.beta.conversations.start(
    agent_id=agent.id,
    inputs="Vertrauliche Daten: Finanzbericht Q1 2026...",
    store=False  # Nichts bleibt erhalten
)

Diese Einstellung wird pro Gespräch entschieden, was es ermöglicht, die Historie gewöhnlicher Austausche zu behalten, während vertrauliche Inhalte im ephemeren Modus verarbeitet werden.

Moderation upstream

Eine elegante Variante besteht darin, einen Moderationsagenten am Kopf der Kette zu platzieren: Er prüft die Anfrage und überweist sie nur an den Spezialisten, wenn sie angemessen ist.

moderator = client.beta.agents.create(
    model="mistral-large-latest",
    name="moderator",
    description="Prüft, ob Anfragen angemessen sind.",
    instructions="""Analysieren Sie die Benutzeranfrage:
- Wenn angemessen: Überweisen Sie an den Spezialisten
- Wenn unangemessen: Beantworten Sie höflich, dass die Anfrage nicht unterstützt wird
- Wenn mehrdeutig: Fragen Sie nach Klärung"""
)

specialist = client.beta.agents.create(
    model="mistral-large-latest",
    name="specialist",
    description="Behandelt validierte Anfragen.",
    tools=[{"type": "web_search"}]
)

moderator = client.beta.agents.update(
    agent_id=moderator.id,
    handoffs=[specialist.id]
)

Der Wert dieses Musters liegt in der Trennung der Rollen: Der Moderator verfügt über keine Werkzeuge und tut nur eine Sache, sodass eine bösartige Anfrage, die er ablehnt, niemals den Agenten erreicht, der weiß, wie er handeln soll.

Generierung anpassen

Completion-Parameter tragen ebenfalls zur Sicherheit bei, aus einem einfachen Grund: Eine halluzinierte Antwort ist ein Risiko, und Kreativität ist ihr Brutkasten.

agent = client.beta.agents.create(
    model="mistral-large-latest",
    name="Faktischer Agent",
    description="Faktischer und konservativer Agent.",
    completion_args={
        "temperature": 0.1,   # Sehr geringe Kreativität
        "top_p": 0.85,        # Begrenzter Kern
        "max_tokens": 1024    # Kurze Antworten
    }
)

Eine Temperatur von 0,1 gepaart mit einem top_p von 0,85 lässt dem Modell sehr wenig Spielraum: Bei einer Frage, deren Antwort in Ihren Dokumenten zu finden ist, ruft es diese auf, statt eine Variante zu erfinden. Die Begrenzung auf 1024 Tokens spielt eine ähnliche Rolle, da eine Antwort, die zu lang wird, schließlich vom dokumentierten Geltungsbereich abweicht und Füllmaterial produziert. Diese Einstellungen eignen sich offensichtlich nicht für einen kreativen Agenten, aber sie sind die Standardkonfiguration für jeden Agenten, der Fakten darlegen soll – Rechtsassistent, technischer Support, Produktexperte.

Bevor Sie in die Produktion gehen

Diese Mechanismen sind nur dann gültig, wenn sie geschichtet werden, und die finale Prüfung reduziert sich auf einige Verifizierungen. Anweisungen müssen den Geltungsbereich und Verbote explizit definieren, und der Agent darf nur die Werkzeuge haben, die für seine Aufgabe strikt notwendig sind. Stellen Sie sicher, dass Guardrails aktiviert sind und dass kritische Workflows im Client-Modus laufen, sodass keine Übergabe ohne Ihre Genehmigung ausgeführt wird. Stellen Sie sicher, dass store=False jedem Gespräch mit sensiblen Daten beiliegt und die Temperatur dort niedrig bleibt, wo erwartet wird, dass der Agent Fakten darlegt. Platzieren Sie schließlich einen Moderationsagenten vor der Kette, sodass inakzeptable Anfragen niemals die Agenten erreichen, die wissen, wie sie handeln sollen.

Kernaussagen

  • Guardrails werden auf der Ebene des Agenten und/oder des Gesprächs konfiguriert
  • Anweisungen sind Ihre erste Verteidigungslinie – seien Sie bei Verboten explizit
  • Wenden Sie das Prinzip der geringsten Rechte an: Geben Sie nur die notwendigen Werkzeuge
  • Der Client-Modus ermöglicht es Ihnen, unbefugte Übergaben zu validieren und zu blockieren
  • In der Produktion: Upstream-Moderation, Protokollierung, Agenten-Whitelist, store=False für sensible Daten