Mistral heeft Pixtral 12B uitgebracht, een open-source Large Language Model (LLM) met 12 miljard parameters. Dit is Mistrals eerste multimodale model, wat betekent dat het zowel tekst als afbeeldingen kan verwerken.
Dit is waarom Pixtral een waardevolle toevoeging is aan het LLM-landschap:
Het verwerkt afbeeldingen van alle formaten efficiënt zonder pre-processing.
Een contextvenster van 128K maakt het mogelijk om complexe prompts en talrijke afbeeldingen te verwerken.
Sterke prestaties in zowel tekst-only als multimodale taken.
Gratis voor niet-gemonetiseerde projecten, ideaal voor onderzoekers en hobbyisten.
Open-source onder de Apache 2.0-licentie, wat bijdraagt aan de democratisering van AI.
In deze tutorial geef ik tal van voorbeelden en stapsgewijze uitleg over het gebruik van Pixtral via de webchatinterface Le Chat en programmeermatig via de API. Maar eerst behandelen we de belangrijkste theoretische aspecten van Pixtral.
Wat is Pixtral 12B?
Mistral AI heeft Pixtral 12B gelanceerd, een model dat zowel afbeeldingen als tekst samen kan verwerken. Met 12 miljard parameters kan het taken aan waarbij een mix van visuele en talige informatie komt kijken, zoals het interpreteren van grafieken, documenten of diagrammen.
Het is nuttig in omgevingen waar een diep begrip van beide formats nodig is.
Een belangrijk kenmerk van Pixtral 12B is de mogelijkheid om meerdere afbeeldingen in één input te verwerken, op hun oorspronkelijke resolutie. Het model heeft een contextvenster van 128.000 tokens, wat analyse van lange en complexe documenten, afbeeldingen of meerdere databronnen tegelijk mogelijk maakt. Dit is handig in domeinen als financiële verslaggeving of documentenscans voor bedrijven.
Pixtrals benchmarks
Pixtral presteert goed op taken rond Multimodal Knowledge & Reasoning, met name in de MathVista-test, waar het de koppositie inneemt. Ook in multimodale QA-taken scoort het sterk, vooral in ChartQA.
In instruction following en tekstgebaseerde taken tonen andere modellen zoals Claude-3 Haiku en Gemini Flash-8B echter concurrerende of superieure prestaties. Dit suggereert dat Pixtral 12B uitblinkt in multimodale en visuele redenering, maar mogelijk niet domineert in puur tekstuele taken.
Het tweede onderdeel, de Multimodal Transformer Decoder, is een omvangrijker model met 12 miljard parameters. Het is gebaseerd op de bestaande Mistral Nemo-architectuur en is ontworpen om het volgende teksttoken te voorspellen in sequenties waarin tekst- en afbeeldingsdata zijn verweven.
Deze decoder kan zeer lange contexten verwerken (tot 128k tokens), waardoor hij veel afbeeldingstokens en uitgebreide tekstuele informatie in grote documenten aankan.
Deze gecombineerde architectuur stelt Pixtral in staat om met een breed scala aan afbeeldingsgroottes en -formaten om te gaan, en hoge-resolutieafbeeldingen om te zetten in coherente tokens zonder contextverlies.
Pixtral gebruiken op Le Chat
De eenvoudigste manier om Pixtral gratis te gebruiken is via Le Chat, hun chatinterface. Deze interface lijkt op andere LLM-chatinterfaces, zoals die van ChatGPT, bijvoorbeeld.
Om Pixtral te gebruiken, ga je naar de modelkiezer onderaan, naast het promptveld, en kies je het Pixtral-model uit de lijst met beschikbare modellen.
Pixtral is een multimodaal model dat zowel tekst als afbeeldingen ondersteunt. Met het paperclip-pictogram onderaan kunnen we één of meer afbeeldingen uploaden en combineren met een tekstprompt. Deze functionaliteit kan ons bijvoorbeeld helpen om een vrucht op een afbeelding te identificeren.
Laten we nog een voorbeeld bekijken waarin we Pixtral vragen om een afbeelding met een cirkeldiagram om te zetten naar een markdown-tabel:
Verbinden met de API van Pixtral op La Plateforme
Hoewel Pixtral via de webinterface prettig en eenvoudig is, is het niet geschikt om het in onze projecten op te nemen. In deze sectie bespreken we hoe je met Pixtral kunt communiceren via hun API met Python, via La Plateforme.
Profiel instellen
Om te beginnen moeten we een account aanmaken. Dit kan met één klik via een Google-account, of door een traditioneel account met een gebruikersnaam en wachtwoord in te stellen.
Na het aanmaken van het account worden we gevraagd een workspace in te richten. Je kunt elke naam kiezen voor je workspace en de optie "I'm a solo creator" selecteren.
Ga na het aanmaken van het account naar de pagina met abonnementen. Hier kunnen we een experimenteel abonnement aanmaken om de API gratis uit te proberen, of een betaald abonnement instellen. Let op: voor het gratis experimentele abonnement moet je een geldig telefoonnummer aan je account koppelen.
Ons profiel is nu klaar om een API-sleutel aan te maken. Deze sleutel is nodig om verzoeken naar de Mistral API te sturen en om programmeermatig met Pixtral te werken via Python.
De API-sleutel genereren
Ga om de API-sleutel te genereren naar de API-sleutelpagina. Bovenaan de pagina staat een knop om een nieuwe API-sleutel te maken:
Bij het aanmaken van een sleutel worden we gevraagd deze te benoemen en een vervaldatum in te stellen. Beide velden zijn echter optioneel en kunnen leeg blijven als je dat wilt.
In het algemeen is het raadzaam om een vervaldatum voor sleutels in te stellen. Vaak worden sleutels aangemaakt om met een API te experimenteren en vervolgens vergeten, waardoor ze onbeperkt actief blijven. Een vervaldatum zorgt ervoor dat een gelekte sleutel niet voor altijd bruikbaar is en verkleint zo de risico's.
Zodra de sleutel is aangemaakt, wordt hij getoond. Dit is het enige moment waarop je de sleutel kunt bekijken, dus kopieer hem direct. Als de sleutel kwijt is, kun je hem in de lijst verwijderen en een nieuwe aanmaken.
Ik raad aan een .env-bestand aan te maken in dezelfde map als het Python-script om de sleutel op te slaan met het volgende formaat (vervang <key_value> door de daadwerkelijke sleutel):
Deze stap overslaan en de API-sleutel hardcoden in ons script is niet aan te raden. Dan kun je je code niet delen zonder ook de sleutel te delen. Leer meer over deze aanpak in deze tutorial over Python-omgevingsvariabelen.
Afhankelijkheden installeren
We beginnen met het installeren van de benodigde afhankelijkheden, waaronder:
mistralai, de clientbibliotheek van Mistral voor API-interactie.
python-dotenv, een module om omgevingsvariabelen uit een .env-bestand te laden.
Zodra de afhankelijkheden zijn geïnstalleerd, kunnen we het script maken. Maak een bestand mistral_example.py in dezelfde map als het .env-bestand. De eerste stap is het importeren van de modules en het laden van de API-sleutel in een variabele.
# Create a mistral_example.py file in the same folder as the .env fileimport osfrom mistralai import Mistralfrom dotenv import load_dotenvload_dotenv()api_key = os.getenv("API_KEY")Mogelijk gemaakt door
Daarna kunnen we de client initialiseren.
De client initialiseren
De Mistral-documentatiepagina bevat een lijst met alle beschikbare modellen. Wij zijn vooral geïnteresseerd in het nieuwste Pixtral-model, met het API-endpoint pixtral-12b-2409.
# Add this code in mistral_example.py after initializing the API keymodel = "pixtral-12b-2409"client = Mistral(api_key=api_key)Mogelijk gemaakt door
Een API-verzoek doen
We zijn nu klaar om een verzoek naar de Mistral API te sturen en programmeermatig met Pixtral te werken. Hier is een voorbeeld van het indienen van een tekstprompt:
# Add this code in mistral_example.py after initializing the clientchat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "What is 1 + 1?" } ] }, ])print(chat_response.choices[0].message.content)Mogelijk gemaakt door
We kunnen dit script in de terminal uitvoeren en de reactie van Pixtral op onze prompt bekijken:
$ python mistral_example.py The sum of 1 + 1 is 2. So,1 + 1 = 2Mogelijk gemaakt door
De API gebruiken met multimodaliteit
In het gegeven voorbeeld wordt de tekstprompt verzonden via het veld content, waar type is ingesteld op "text".
Het veld content is een array waarmee we meerdere gegevensdelen kunnen versturen. Als multimodaal model accepteert Pixtral ook afbeeldingsdata. Om een afbeelding uit een URL in de prompt te gebruiken, kunnen we die opnemen in het veld content door "image_url" als type op te geven:
Vervang <image_url> door de daadwerkelijke URL van de afbeelding. We kunnen Pixtral bijvoorbeeld gebruiken om de onderstaande prestatiediagrammen te analyseren:
chat_response = client.chat.complete( model=model, messages =[{"role":"user","content":[{"type":"text","text":"According to the chart, how does Pixtral 12B performs compared to other models?"},{"type":"image_url","image_url":"https://mistral.ai/images/news/pixtral-12b/pixtral-benchmarks.png"}]},])print(chat_response.choices[0].message.content)Mogelijk gemaakt door
Wanneer dit verzoek wordt verzonden, ontvangt Pixtral zowel de tekstprompt als de afbeelding met de diagrammen voor analyse en geeft vervolgens een reactie met de bevindingen. We tonen de reactie hier niet vanwege de lengte.
Lokale afbeeldingen laden
In het vorige voorbeeld lieten we zien hoe je een afbeelding via een URL toevoegt. Als alternatief kun je een afbeelding op je harde schijf gebruiken door deze te laden als een base64-gecodeerde afbeelding. Om een afbeelding in base64 te laden en te encoderen, gebruiken we het ingebouwde pakket base64:
defencode_image_base64(image_path):withopen(image_path,"rb")as image_file:return base64.b64encode(image_file.read()).decode("utf-8")Mogelijk gemaakt door
Bij base64-gecodeerde afbeeldingen gebruiken we nog steeds het type image_url om de gecodeerde afbeelding door te geven, maar we moeten dit voorafgaan met data:image/jpeg;base64,:
{"type":"image_url","image_url":f"data:image/jpeg;base64,{base_64_image}"}Mogelijk gemaakt door
base_64_image is het resultaat van het aanroepen van de functie encode_image_base64() om de afbeelding te laden. Laten we dit gebruiken om Pixtral te vragen een to-do-lijstwebsite met twee pagina's te maken op basis van de volgende twee schetsen die ik heb gemaakt:
We geven de twee afbeeldingen afzonderlijk door, plus een prompt met het verzoek om een HTML-website te maken op basis van de afbeeldingen:
list_image = encode_image_base64("./todo-list.jpeg")new_item_image = encode_image_base64("./new-item-form.jpeg")chat_response = client.chat.complete( model=model, messages =[{"role":"user","content":[{"type":"text","text":"Create a HTML website with two pages like in the images"},{"type":"image_url","image_url":f"data:image/jpeg;base64,{list_image}"},{"type":"image_url","image_url":f"data:image/jpeg;base64,{new_item_image}"},]},])print(chat_response.choices[0].message.content)Mogelijk gemaakt door
Pixtral zal twee codeblokken genereren met de inhoud van de twee pagina's. We hebben de code opgeslagen in twee bestanden met de naam index.html en add.html en ze in de browser geopend. Dit was het resultaat:
Hoewel het nog geen volledig functionele applicatie is, werkt het en is het een uitstekend startpunt voor verdere ontwikkeling.
Conclusie
Pixtral 12B is Mistrals eerste multimodale model. Het kan afbeeldingen van alle formaten aan zonder pre-processing, heeft een contextvenster van 128K voor complexe prompts en presteert goed in zowel tekst-only als multimodale taken.
Beschikbaar voor gratis gebruik in niet-gemonetiseerde projecten en open-source onder de Apache 2.0-licentie, is Pixtral waardevol voor zowel onderzoekers als hobbyisten.
In deze tutorial heb ik praktische inzichten gegeven in het gebruik van Pixtral, met voorbeelden en stapsgewijze uitleg van de mogelijkheden.
FAQs
Is Pixtral gratis te gebruiken, en onder welke voorwaarden?⌄
Pixtral is gratis te gebruiken op Le Chat of via de API voor niet-gemonetiseerde projecten.
Is Pixtral open-source?⌄
Ja. Het is open source onder de Apache 2.0-licentie.
Wat voor invoergegevens ondersteunt Pixtral?⌄
Pixtral is het eerste multimodale LLM van Mistral AI. Het ondersteunt zowel tekst als afbeeldingen.
Wat voor soort afbeeldingen ondersteunt Pixtral?⌄
Pixtral ondersteunt afbeeldingen van elke grootte zonder enige vorm van pre-processing.
Wat maakt Pixtral belangrijk?⌄
Pixtral levert uitstekende prestaties voor een model met slechts 12 miljard parameters. Bovendien kan het gratis worden gebruikt en is het open source.
Full-stack engineer & oprichter bij CheapGPT. Lesgeven is altijd mijn passie geweest. Al vanaf mijn studententijd zocht ik actief naar kansen om bijles te geven en andere studenten te helpen. Die passie bracht me ertoe om te promoveren, waarbij ik ook als onderwijsassistent werkte ter ondersteuning van mijn academische werk. In die jaren vond ik veel voldoening in de traditionele klasomgeving, waar ik verbindingen kon leggen en leren kon begeleiden. Met de opkomst van online leerplatforms zag ik echter het transformerende potentieel van digitaal onderwijs. Sterker nog, ik was actief betrokken bij de ontwikkeling van zo’n platform op onze universiteit. Ik zet me sterk in om traditionele didactische principes te combineren met innovatieve digitale methoden. Mijn passie is om cursussen te maken die niet alleen boeiend en informatief zijn, maar ook toegankelijk voor lerenden in dit digitale tijdperk.
Mistral heeft Pixtral 12B uitgebracht, een open-source Large Language Model (LLM) met 12 miljard parameters. Dit is Mistrals eerste multimodale model, wat betekent dat het zowel tekst als afbeeldingen kan verwerken.
Dit is waarom Pixtral een waardevolle toevoeging is aan het LLM-landschap:
In deze tutorial geef ik tal van voorbeelden en stapsgewijze uitleg over het gebruik van Pixtral via de webchatinterface Le Chat en programmeermatig via de API. Maar eerst behandelen we de belangrijkste theoretische aspecten van Pixtral.
Wat is Pixtral 12B?
Mistral AI heeft Pixtral 12B gelanceerd, een model dat zowel afbeeldingen als tekst samen kan verwerken. Met 12 miljard parameters kan het taken aan waarbij een mix van visuele en talige informatie komt kijken, zoals het interpreteren van grafieken, documenten of diagrammen.
Het is nuttig in omgevingen waar een diep begrip van beide formats nodig is.
Een belangrijk kenmerk van Pixtral 12B is de mogelijkheid om meerdere afbeeldingen in één input te verwerken, op hun oorspronkelijke resolutie. Het model heeft een contextvenster van 128.000 tokens, wat analyse van lange en complexe documenten, afbeeldingen of meerdere databronnen tegelijk mogelijk maakt. Dit is handig in domeinen als financiële verslaggeving of documentenscans voor bedrijven.
Pixtrals benchmarks
Pixtral presteert goed op taken rond Multimodal Knowledge & Reasoning, met name in de MathVista-test, waar het de koppositie inneemt. Ook in multimodale QA-taken scoort het sterk, vooral in ChartQA.
Bron: Mistral AI
In instruction following en tekstgebaseerde taken tonen andere modellen zoals Claude-3 Haiku en Gemini Flash-8B echter concurrerende of superieure prestaties. Dit suggereert dat Pixtral 12B uitblinkt in multimodale en visuele redenering, maar mogelijk niet domineert in puur tekstuele taken.
Pixtrals architectuur
De architectuur van Pixtral 12B is ontworpen om tekst en afbeeldingen gelijktijdig te verwerken. Het bestaat uit twee hoofdonderdelen: een Vision Encoder en een Multimodal Transformer Decoder.
De Vision Encoder, met 400 miljoen parameters, is specifiek getraind om afbeeldingen van verschillende groottes en resoluties te verwerken.
Bron: Mistral AI
Het tweede onderdeel, de Multimodal Transformer Decoder, is een omvangrijker model met 12 miljard parameters. Het is gebaseerd op de bestaande Mistral Nemo-architectuur en is ontworpen om het volgende teksttoken te voorspellen in sequenties waarin tekst- en afbeeldingsdata zijn verweven.
Deze decoder kan zeer lange contexten verwerken (tot 128k tokens), waardoor hij veel afbeeldingstokens en uitgebreide tekstuele informatie in grote documenten aankan.
Bron: Mistral AI
Deze gecombineerde architectuur stelt Pixtral in staat om met een breed scala aan afbeeldingsgroottes en -formaten om te gaan, en hoge-resolutieafbeeldingen om te zetten in coherente tokens zonder contextverlies.
Pixtral gebruiken op Le Chat
De eenvoudigste manier om Pixtral gratis te gebruiken is via Le Chat, hun chatinterface. Deze interface lijkt op andere LLM-chatinterfaces, zoals die van ChatGPT, bijvoorbeeld.
Om Pixtral te gebruiken, ga je naar de modelkiezer onderaan, naast het promptveld, en kies je het Pixtral-model uit de lijst met beschikbare modellen.
Pixtral is een multimodaal model dat zowel tekst als afbeeldingen ondersteunt. Met het paperclip-pictogram onderaan kunnen we één of meer afbeeldingen uploaden en combineren met een tekstprompt. Deze functionaliteit kan ons bijvoorbeeld helpen om een vrucht op een afbeelding te identificeren.
Laten we nog een voorbeeld bekijken waarin we Pixtral vragen om een afbeelding met een cirkeldiagram om te zetten naar een markdown-tabel:
Verbinden met de API van Pixtral op La Plateforme
Hoewel Pixtral via de webinterface prettig en eenvoudig is, is het niet geschikt om het in onze projecten op te nemen. In deze sectie bespreken we hoe je met Pixtral kunt communiceren via hun API met Python, via La Plateforme.
Profiel instellen
Om te beginnen moeten we een account aanmaken. Dit kan met één klik via een Google-account, of door een traditioneel account met een gebruikersnaam en wachtwoord in te stellen.
Na het aanmaken van het account worden we gevraagd een workspace in te richten. Je kunt elke naam kiezen voor je workspace en de optie "I'm a solo creator" selecteren.
Ga na het aanmaken van het account naar de pagina met abonnementen. Hier kunnen we een experimenteel abonnement aanmaken om de API gratis uit te proberen, of een betaald abonnement instellen. Let op: voor het gratis experimentele abonnement moet je een geldig telefoonnummer aan je account koppelen.
Ons profiel is nu klaar om een API-sleutel aan te maken. Deze sleutel is nodig om verzoeken naar de Mistral API te sturen en om programmeermatig met Pixtral te werken via Python.
De API-sleutel genereren
Ga om de API-sleutel te genereren naar de API-sleutelpagina. Bovenaan de pagina staat een knop om een nieuwe API-sleutel te maken:
Bij het aanmaken van een sleutel worden we gevraagd deze te benoemen en een vervaldatum in te stellen. Beide velden zijn echter optioneel en kunnen leeg blijven als je dat wilt.
In het algemeen is het raadzaam om een vervaldatum voor sleutels in te stellen. Vaak worden sleutels aangemaakt om met een API te experimenteren en vervolgens vergeten, waardoor ze onbeperkt actief blijven. Een vervaldatum zorgt ervoor dat een gelekte sleutel niet voor altijd bruikbaar is en verkleint zo de risico's.
Zodra de sleutel is aangemaakt, wordt hij getoond. Dit is het enige moment waarop je de sleutel kunt bekijken, dus kopieer hem direct. Als de sleutel kwijt is, kun je hem in de lijst verwijderen en een nieuwe aanmaken.
Ik raad aan een
.env-bestand aan te maken in dezelfde map als het Python-script om de sleutel op te slaan met het volgende formaat (vervang<key_value>door de daadwerkelijke sleutel):Deze stap overslaan en de API-sleutel hardcoden in ons script is niet aan te raden. Dan kun je je code niet delen zonder ook de sleutel te delen. Leer meer over deze aanpak in deze tutorial over Python-omgevingsvariabelen.
Afhankelijkheden installeren
We beginnen met het installeren van de benodigde afhankelijkheden, waaronder:
mistralai, de clientbibliotheek van Mistral voor API-interactie.python-dotenv, een module om omgevingsvariabelen uit een.env-bestand te laden.Zodra de afhankelijkheden zijn geïnstalleerd, kunnen we het script maken. Maak een bestand
mistral_example.pyin dezelfde map als het.env-bestand. De eerste stap is het importeren van de modules en het laden van de API-sleutel in een variabele.Daarna kunnen we de client initialiseren.
De client initialiseren
De Mistral-documentatiepagina bevat een lijst met alle beschikbare modellen. Wij zijn vooral geïnteresseerd in het nieuwste Pixtral-model, met het API-endpoint
pixtral-12b-2409.Een API-verzoek doen
We zijn nu klaar om een verzoek naar de Mistral API te sturen en programmeermatig met Pixtral te werken. Hier is een voorbeeld van het indienen van een tekstprompt:
We kunnen dit script in de terminal uitvoeren en de reactie van Pixtral op onze prompt bekijken:
De API gebruiken met multimodaliteit
In het gegeven voorbeeld wordt de tekstprompt verzonden via het veld
content, waartypeis ingesteld op"text".Het veld
contentis een array waarmee we meerdere gegevensdelen kunnen versturen. Als multimodaal model accepteert Pixtral ook afbeeldingsdata. Om een afbeelding uit een URL in de prompt te gebruiken, kunnen we die opnemen in het veldcontentdoor"image_url"als type op te geven:Vervang
<image_url>door de daadwerkelijke URL van de afbeelding. We kunnen Pixtral bijvoorbeeld gebruiken om de onderstaande prestatiediagrammen te analyseren:Bron: Mistral AI
Wanneer dit verzoek wordt verzonden, ontvangt Pixtral zowel de tekstprompt als de afbeelding met de diagrammen voor analyse en geeft vervolgens een reactie met de bevindingen. We tonen de reactie hier niet vanwege de lengte.
Lokale afbeeldingen laden
In het vorige voorbeeld lieten we zien hoe je een afbeelding via een URL toevoegt. Als alternatief kun je een afbeelding op je harde schijf gebruiken door deze te laden als een base64-gecodeerde afbeelding. Om een afbeelding in base64 te laden en te encoderen, gebruiken we het ingebouwde pakket
base64:Bij base64-gecodeerde afbeeldingen gebruiken we nog steeds het type
image_urlom de gecodeerde afbeelding door te geven, maar we moeten dit voorafgaan metdata:image/jpeg;base64,:base_64_imageis het resultaat van het aanroepen van de functieencode_image_base64()om de afbeelding te laden. Laten we dit gebruiken om Pixtral te vragen een to-do-lijstwebsite met twee pagina's te maken op basis van de volgende twee schetsen die ik heb gemaakt:We geven de twee afbeeldingen afzonderlijk door, plus een prompt met het verzoek om een HTML-website te maken op basis van de afbeeldingen:
Pixtral zal twee codeblokken genereren met de inhoud van de twee pagina's. We hebben de code opgeslagen in twee bestanden met de naam
index.htmlenadd.htmlen ze in de browser geopend. Dit was het resultaat:Hoewel het nog geen volledig functionele applicatie is, werkt het en is het een uitstekend startpunt voor verdere ontwikkeling.
Conclusie
Pixtral 12B is Mistrals eerste multimodale model. Het kan afbeeldingen van alle formaten aan zonder pre-processing, heeft een contextvenster van 128K voor complexe prompts en presteert goed in zowel tekst-only als multimodale taken.
Beschikbaar voor gratis gebruik in niet-gemonetiseerde projecten en open-source onder de Apache 2.0-licentie, is Pixtral waardevol voor zowel onderzoekers als hobbyisten.
In deze tutorial heb ik praktische inzichten gegeven in het gebruik van Pixtral, met voorbeelden en stapsgewijze uitleg van de mogelijkheden.