Zurück zum Blog

Multimodale KI mit Mistral Pixtral bauen: Ein First-Principles-Ansatz

Vision-Fähigkeiten in n8n mit dem Pixtral-12b-Modell implementieren.

Beim Aufbau von multimodalen KI-Workflows (Text + Vision) mit Mistral erfassen Standard-Low-Code-Abstraktionen oft nicht die Komplexität der Datennutzlast. Standard-Mistral-Modelle (mistral-large, mistral-medium) sind rein textbasiert. Um Bilder zu analysieren, müssen Sie Pixtral (pixtral-12b) verwenden.

multimodal

Diese Anleitung dokumentiert den rigorosen Engineering-Ansatz zum Aufbau einer Mahlzeitenanalyse-App mit Mistral Pixtral über direkte API-Integration.

Die technische Herausforderung

n8n bietet einen vorgefertigten "Mistral Chat Model"-Knoten. Dieser Knoten ist jedoch primär für Textgenerierung optimiert und verfügt möglicherweise nicht über die spezifische Binärdateiverarbeitung, die erforderlich ist, um ein Bild effektiv in das Kontextfenster von Pixtral zu übergeben.

Um Zuverlässigkeit zu gewährleisten, gehen wir eine Abstraktionsebene tiefer. Anstatt den vorgefertigten Knoten zu verwenden, konstruieren wir rohe HTTP-Anfragen an die Mistral-API, was eine präzise Kontrolle über die Binärkodierung und Payload-Struktur ermöglicht.

Die Architektur

Wir bauen eine Pipeline, die ein Bild empfängt, es in ein Format konvertiert, das das LLM "lesen" kann (Base64), und strikt eine JSON-Ausgabe erzwingt.

The Stack
Phase 1: Die Binär-Übergabe (Webhook)

Der Einstiegspunkt bleibt Standard. Wir akzeptieren eine POST-Anfrage, die die Bilddatei enthält.

Knoten: Webhook
Methode: POST
Pfad: meal-ai
Antwortmodus: Antworten wenn letzter Knoten fertig (Entscheidend für synchrones UI-Feedback)
Phase 2: Daten-Serialisierung

APIs sind textbasierte Schnittstellen. Sie können nicht einfach "eine Datei senden" in einem JSON-Body; Sie müssen die Binärdaten in einen Textstring serialisieren.

Knoten: Code (JavaScript)
Ziel: Den eingehenden Binärstrom in eine Data-URI (Base64) konvertieren
// Zugriff auf die Binärdaten vom vorherigen Knoten // Stellen Sie sicher, dass 'data' dem in Ihren Webhook-Einstellungen definierten Schlüssel entspricht const binaryData = items[0].binary.data; const mimeType = binaryData.mimeType; const base64String = binaryData.data; return { json: { // Standard Data-URI-Format konstruieren imageUrl: `data:${mimeType};base64,${base64String}` } };
Phase 3: Die Intelligenz-Schicht (Direkter API-Aufruf)

Wir umgehen die Abstraktionen und verwenden einen generischen HTTP-Request-Knoten. Dies gibt uns volle Kontrolle über die Payload-Struktur.

Knoten: HTTP Request
Methode: POST
URL: https://api.mistral.ai/v1/chat/completions
Header:
  • Authorization: Bearer IHR_MISTRAL_API_KEY
  • Content-Type: application/json

Die Payload (JSON)

Hier rufen wir spezifisch pixtral-12b-2409 auf. Beachten Sie die dualen Inhaltstypen (text für Anweisungen, image_url für die Vision-Daten).

{ "model": "pixtral-12b-2409", "temperature": 0.1, "response_format": { "type": "json_object" }, "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Analysiere das Gericht in diesem Bild und liefere eine detaillierte Nährwertaufschlüsselung. Gib NUR gültiges JSON zurück, das diesem Schema entspricht: {\"status\": \"success\", \"food\": [{\"name\": \"string\", \"calories\": number}], \"total\": {\"calories\": number}}" }, { "type": "image_url", "image_url": "{{ $json.imageUrl }}" } ] } ] }

Hinweis: Der Parameter response_format: { "type": "json_object" } ist kritisch. Ohne ihn kann das Modell konversationellen Text anstelle von reinen Daten generieren.

Phase 4: Deserialisierung

Die API-Antwort kommt als String verschachtelt in einem JSON-Objekt an. Wir müssen ihn zurück in ein JavaScript-Objekt parsen, damit das Frontend ihn konsumieren kann.

Knoten: Code (JavaScript)
// Den Content-String aus der Mistral-API-Antwortstruktur extrahieren const content = $input.first().json.choices[0].message.content; // Den String in ein tatsächliches JSON-Objekt parsen return { json: JSON.parse(content) };

Betriebseigenschaften von Pixtral

Beim Engineering mit Pixtral-12b müssen Sie dessen spezifisches Betriebsprofil berücksichtigen.

1. Modellgröße & Nuancen

Pixtral ist ein 12-Milliarden-Parameter-Modell. Obwohl effizient, operiert es mit weniger "Weltwissen" als deutlich größere Modelle. Es verlässt sich stark auf klare visuelle Hinweise und kann bei hochgradig mehrdeutigen Bildern, bei denen der Kontext nicht sichtbar ist, Schwierigkeiten haben.

2. Anweisungsfolge

Kleinere, effiziente Modelle sind empfindlich gegenüber der Prompt-Struktur. Selbst mit aktiviertem json_object-Modus benötigt Pixtral ein robustes und einfaches JSON-Schema. Komplexe, tief verschachtelte Schemas erhöhen die Wahrscheinlichkeit von Syntaxfehlern in der Ausgabe.

3. Datensouveränität

Die Verwendung von Mistrals API oder das Self-Hosting der offenen Gewichte ermöglicht ein hohes Maß an Datenkontrolle. Diese Architektur stellt sicher, dass Bilddaten innerhalb eines bestimmten Ökosystems verarbeitet werden, was eine kritische Anforderung für viele interne Tools ist.

Operations

Fazit

Das Bauen mit Mistral Pixtral erfordert einen direkten Engineering-Ansatz—die manuelle Handhabung von Base64-Konvertierung und Schema-Durchsetzung. Diese Reibung bietet den Vorteil einer granularen Kontrolle über die Datenpipeline und die Fähigkeit, ein spezialisiertes multimodales Modell effektiv zu nutzen.