Hier ist der Code, um Pixtral Large (das europäische Flaggschiff-Modell von Mistral) direkt in deine Next.js App zu integrieren.

Damit kannst du einen direkten "A/B-Test" gegen Gemini 3 Flash fahren.
1. Vorbereitung

Du brauchst das Mistral SDK und einen API Key von console.mistral.ai.
Bash

npm install @mistralai/mistralai

Füge deinen Key in die .env ein (nicht NEXT_PUBLIC_!): MISTRAL_API_KEY=dein_key_hier
2. Der Code (Server Action)

Erstelle eine neue Datei, z.B. app/actions/scan-mistral.ts.
TypeScript

'use server'

import { Mistral } from '@mistralai/mistralai';

const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY });

export async function scanWithPixtral(base64Image: string, mimeType: string) {
  // Pixtral braucht das Bild als Data-URL
  const dataUrl = `data:${mimeType};base64,${base64Image}`;

  try {
    const chatResponse = await client.chat.complete({
      model: 'pixtral-large-latest', // Das beste Modell (Stand Dez 2025)
      messages: [
        {
          role: 'user',
          content: [
            { 
              type: 'text', 
              text: `Du bist ein Whisky-Experte und OCR-Spezialist.
              Analysiere dieses Etikett präzise.
              
              Antworte AUSSCHLIESSLICH mit gültigem JSON (kein Markdown, kein Text davor/danach):
              {
                "distillery": "Name der Brennerei (z.B. Lagavulin)",
                "name": "Exakter Name/Edition (z.B. 16 Year Old)",
                "vintage": "Jahrgang oder null",
                "age": "Alter oder null (z.B. 16)",
                "abv": "Alkoholgehalt (z.B. 43%)",
                "search_query": "site:whiskybase.com [Brennerei] [Name] [Alter]"
              }` 
            },
            { 
              type: 'image_url', 
              imageUrl: dataUrl 
            }
          ]
        }
      ],
      responseFormat: { type: 'json_object' }, // Erzwingt JSON (wichtig!)
      temperature: 0.1 // Niedrig = präziser, weniger Halluzinationen
    });

    const rawContent = chatResponse.choices?.[0].message.content;
    
    if (!rawContent) throw new Error("Keine Antwort von Pixtral");

    // JSON parsen
    return JSON.parse(rawContent as string);

  } catch (error) {
    console.error("Pixtral Error:", error);
    return null; // Fallback auslösen
  }
}

3. Der "A/B-Switcher" (So nutzt du beides)

In deiner Haupt-Logik (app/actions/scan.ts) kannst du jetzt einfach umschalten oder Pixtral als Fallback nutzen, wenn Gemini zickt (oder andersrum).
TypeScript

'use server'
import { scanWithGemini } from './scan-gemini'; // Deine bestehende Funktion
import { scanWithPixtral } from './scan-mistral';

export async function scanBottle(formData: FormData) {
    // ... Bild zu Base64 konvertieren ...
    const base64 = "...";
    const mime = "image/jpeg";

    // STRATEGIE A: Der "Qualitäts-Check"
    // Wir nutzen standardmäßig Gemini, aber Pixtral als EU-Option
    
    let result;
    const useEuModel = process.env.USE_EU_MODEL === 'true'; // Schalter in .env

    if (useEuModel) {
        console.log("🇪🇺 Nutze Pixtral (Mistral AI)...");
        result = await scanWithPixtral(base64, mime);
    } else {
        console.log("🇺🇸 Nutze Gemini 3 Flash...");
        result = await scanWithGemini(base64, mime);
    }

    // Wenn das erste Modell versagt (null zurückgibt), versuche das andere
    if (!result) {
        console.log("⚠️ Erster Versuch fehlgeschlagen, starte Fallback...");
        result = useEuModel 
            ? await scanWithGemini(base64, mime) 
            : await scanWithPixtral(base64, mime);
    }

    // ... weiter mit Supabase Caching & Brave Search ...
    return result;
}

Pixtral vs. Gemini 3 Flash (Dein Check)

Achte beim Testen auf diese Feinheiten:

    Helle Schrift auf dunklem Grund: Hier ist Gemini oft aggressiver und liest besser. Pixtral ist manchmal vorsichtiger.

    Schreibschrift (Signatory Vintage Abfüllungen): Pixtral Large ist hier erstaunlich gut, fast besser als Gemini, da es Handschrift extrem gut kann.

    JSON-Struktur: Dank responseFormat: { type: 'json_object' } sollten beide Modelle sehr sauberen Code liefern.

Wenn Pixtral Large für dich ähnlich gut funktioniert wie Gemini 3 Flash, hast du den großen Vorteil: Daten bleiben in Europa (Server in Frankreich/EU). Das ist ein starkes Marketing-Argument ("We love Whisky & Privacy").