code_interpreter-Tool: Python ausführen
Auf dieser Seite
Code in der Mistral Cloud ausführen
Das code_interpreter-Tool ermöglicht es Ihrem Agenten, Python-Code innerhalb eines sandboxierten Containers zu schreiben und auszuführen. Es ist die ideale Wahl für Berechnungen, Datenanalyse, die Erstellung von Diagrammen und die Validierung von Code. Es geht hier nicht nur um Bequemlichkeit: Ein LLM, das „berechnet”, produziert ein glaubwürdiges, aber kein korrektes Ergebnis. Durch die Übertragung der Operation auf einen echten Interpreter ersetzen Sie die Token-Vorhersage durch überprüfbare Ausführung und erhalten Code, den Sie überprüfen können.
Einen Agenten mit Code-Interpreter erstellen
Die Anweisungen für diesen Agenten verlangen, dass er den Code vor der Ausführung anzeigt. Dies gibt Ihnen einen Kontrollpunkt darüber, was tatsächlich ausgeführt wird.
from mistralai.client import Mistral
import os
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
agent = client.beta.agents.create(
model="mistral-medium-latest",
name="Code Agent",
instructions="""Sie sind ein Programmierassistent für Python.
- Verwenden Sie den Code-Interpreter zum Ausführen von Code, wenn dies erforderlich ist.
- Zeigen Sie den Code immer vor der Ausführung an.
- Erklären Sie die Ergebnisse klar.""",
tools=[{"type": "code_interpreter"}],
completion_args={"temperature": 0.3, "top_p": 0.95}
)
Eine Ausführung auslösen
Eine einfache Berechnungsanfrage reicht aus, um das Tool auszulösen; eine spezielle Anweisung von Ihnen ist nicht erforderlich.
response = client.beta.conversations.start(
agent_id=agent.id,
inputs="Berechnen Sie die ersten 20 Fibonacci-Zahlen."
)
Der Agent schreibt daraufhin ein Python-Skript zur Berechnung der Folge, führt es im Sandbox-Umfeld aus und präsentiert die Ergebnisse zusammen mit Erklärungen. Die zwanzig Werte, die Sie erhalten, stammen von einer tatsächlichen Ausführung: Sie sind exakt, selbst an Stellen, an denen ein Modell normalerweise mit Fehlern beginnt.
Antwortstruktur
Sie können diesen Mechanismus direkt in den zurückgegebenen Einträgen lesen, und Ihr Code muss zwischen Text und Ausführungsergebnissen unterscheiden.
for entry in response.outputs:
if entry.type == "message.output":
# Erste Antwort: "Ich werde berechnen..." oder Endergebnis
print(f"Nachricht: {entry.content}")
elif entry.type == "tool.execution":
# Ausgeführter Code und Ergebnis
print(f"Code: {entry.info.code}")
print(f"Ausgabe: {entry.info.code_output}")
Der Agent beginnt mit einem message.output, in dem er ankündigt, was er tun wird. Anschließend folgt das tool.execution, in dem der Code ausgeführt wird: info.code enthält das Skript, und info.code_output hält seine Ausgabe. Ein zweites message.output schließt die Sequenz ab, in dem der Agent die Ergebnisse interpretiert und erklärt. Diese beiden Felder, info.code und info.code_output, sind Ihre Prüfpfade – bewahren Sie sie in den Anwendungsprotokollen auf, da Sie damit jede vom Agenten erzeugte Zahl nachvollziehen und hinterfragen können.
Was das Tool in der Praxis ändert
Die Datenanalyse ist der unmittelbarste Anwendungsfall. Geben Sie eine Reihe von Werten an und bitten Sie um Statistiken: Der Mittelwert, das Median und die Standardabweichung werden berechnet, nicht geschätzt.
response = client.beta.conversations.start(
agent_id=agent.id,
inputs="""Hier sind die monatlichen Umsätze (in K€):
Jan: 120, Feb: 135, Mar: 142, Apr: 128, Mai: 155, Jun: 168
Berechnen Sie den Mittelwert, das Median, die Standardabweichung und den Trend."""
)
Die Erstellung von Diagrammen erweitert diese Fähigkeit natürlich, da die Umgebung Plotting-Bibliotheken enthält.
response = client.beta.conversations.start(
agent_id=agent.id,
inputs="Erstellen Sie ein Balkendiagramm der Cloud-Marktteile in Europa: AWS 31%, Azure 25%, GCP 11%, OVH 8%, Sonstige 25%"
)
Der Agent verwendet matplotlib, um das Diagramm zu generieren. Das Ergebnis ist eine Bilddatei, die im Antwortobjekt zugänglich ist – stellen Sie sicher, dass Ihr Lesecode diesen Fall berücksichtigt, sonst werden Sie nur den begleitenden Textkommentar anzeigen.
Die Code-Validierung ist ein dritter Anwendungsfall, weniger offensichtlich, aber wertvoll. Senden Sie eine Funktion und die Testfälle, die abgedeckt werden sollen: Der Agent denkt nicht nur über den Code nach, sondern führt ihn aus. Im folgenden Beispiel zeigt der Eingabewert "Madam" einen Fehler auf, den eine einfache Code-Überprüfung wahrscheinlich übersehen hätte.
response = client.beta.conversations.start(
agent_id=agent.id,
inputs="""Überprüfen Sie, ob diese Funktion korrekt ist:
def is_palindrome(s):
return s == s[::-1]
Testen Sie sie mit: "radar", "hello", "kayak", "Madam"
"""
)
Angewandte Mathematik rundet die Liste ab: Lösen von Gleichungssystemen, lineare Algebra, Optimierung. Auch hier stützt sich die Antwort auf einen Solver und nicht auf Intuition.
response = client.beta.conversations.start(
agent_id=agent.id,
inputs="Lösen Sie das Gleichungssystem: 2x + 3y = 12, 4x - y = 5"
)
Kombination mit anderen Tools
Ein Agent kann mehrere Tools gleichzeitig aktivieren, und hier zeigt sich oft der wahre Wert: Die Suche bringt frische Daten, die der Code in Analysen umwandelt.
agent = client.beta.agents.create(
model="mistral-large-latest",
name="Complete Analyst",
description="Suche + Berechnung",
instructions="Suchen Sie nach aktuellen Daten und analysieren Sie diese mit Code.",
tools=[
{"type": "web_search"},
{"type": "code_interpreter"}
]
)
response = client.beta.conversations.start(
agent_id=agent.id,
inputs="Finden Sie den aktuellen Bitcoin-Preis und berechnen Sie die prozentuale Veränderung der letzten 30 Tage."
)
Der Agent wählt automatisch das Tool für jeden Schritt. In dieser Anfrage verknüpft er beide: Man kann eine Veränderung nicht berechnen, ohne zuerst die Werte zu erhalten, und man kann diese Werte nicht erhalten, ohne Webzugriff.
Einschränkungen der Sandbox
Diese isolierte Umgebung unterliegt Einschränkungen, die Sie kennen sollten, bevor Sie Ihre Anwendung entwerfen. Bibliotheken sind begrenzt: Standard-Python-Pakete sind verfügbar – numpy, pandas, matplotlib und andere – aber nicht alle Drittanbieter-Pakete, was interne Abhängigkeiten ausschließt. Der Code hat keinen Netzwerkzugriff, sodass Daten nur über den Kontext oder ein anderes Tool dorthin gelangen dürfen, niemals durch einen HTTP-Aufruf, der im Skript geschrieben ist. Die Ausführungszeit ist begrenzt, sodass langlaufende Prozesse unterbrochen werden: Zerlegen Sie große Datenmengen, statt auf einen einzelnen Durchlauf zu hoffen. Schließlich gibt es keine Persistenz zwischen Aufrufen; eine während einer Ausführung erstellte Datei wird im nächsten nicht gefunden.
Kernaussagen
code_interpreterführt Python in einer sicheren Sandbox auf der Mistral-Seite aus- Die Antwort enthält den ausgeführten Code (
info.code) und dessen Ausgabe (info.code_output) - Ideal für Berechnungen, Datenanalyse und die Erstellung von Diagrammen
- Kann mit anderen Tools kombiniert werden (z. B. web_search)
- Die Sandbox hat Einschränkungen: Kein Netzwerkzugriff, begrenzte Bibliotheken, keine Persistenz