Cursus
Codestral is een geavanceerd generatief model dat is geoptimaliseerd voor codegeneratietaken, waaronder fill-in-the-middle (FIM) en code-aanvulling. Het is getraind op meer dan 80 programmeertalen en blinkt uit in zowel gangbare als minder gebruikte talen, waardoor het een veelzijdige tool is voor ontwikkelaars.
Met de Codestral API kunnen we codegeneratie automatiseren en in onze workflows integreren. In deze tutorial geven we een stapsgewijze handleiding voor het gebruik van de Codestral API.
Wil je een overzicht van Codestral? Lees dan mijn artikel Wat is Mistral’s Codestral.
Codestral API-endpoints
Codestral biedt twee hoofd-API-endpoints voor verschillende gebruikersbehoeften:
- codestral.mistral.ai: Ideaal voor individuele gebruikers en kleinschalige integraties. Dit endpoint is momenteel gratis tot 1 augustus 2024; daarna wordt het een maandabonnement.
- api.mistral.ai: Ontworpen voor zakelijke en veeleisende use-cases; dit endpoint biedt hogere rate limits en robuuste ondersteuning voor grootschalige toepassingen.
Mistral raadt het codestral.mistral.ai-endpoint aan als je Codestral wilt gebruiken als onderdeel van een IDE-plug-in of als je tools wilt bouwen die endpoints rechtstreeks aan gebruikers blootstellen, zodat zij hun eigen API-sleutels kunnen gebruiken.
Mistral raadt het api.mistral.ai-endpoint aan voor alle andere use-cases vanwege de hogere rate limits en geschiktheid voor zakelijke toepassingen.
In deze tutorial gebruiken we het codestral.mistral.ai-endpoint om de mogelijkheden van Codestral te laten zien.
Aan de slag met de Codestral API
Een API-sleutel aanvragen
Om de Codestral API te gebruiken, moet je je aanmelden voor een Mistral AI-account en een API-sleutel ophalen. Volg deze stappen:
Stap 1: Aanmelden
Ga naar de aanmeldpagina van Mistral AI en maak een account aan.
Stap 2: Haal een API-sleutel op
Voor api.mistral.ai ga je naar het tabblad API Keys en klik je op Create new key om je API-sleutel te genereren.

Voor codestral.mistral.ai: Ga naar het tabblad Codestral (degene met het label “New” onder het tabblad API Keys) en volg de instructies op de pagina om je API-sleutel te verkrijgen. Let op: er is momenteel een wachtlijst en je moet een telefoonnummer opgeven om je aan te melden. Na goedkeuring kun je je API-sleutel en twee codestral.mistral.ai-specifieke endpoints op dezelfde pagina bekijken, zoals hieronder getoond:

Dit artikel gebruikt de codestral.mistral.ai-endpoints om Codestral te demonstreren, dus alle voorbeelden zijn daarop afgestemd.
Authenticatie
Om onze API-verzoeken te authenticeren, maken we twee Python-functies met de requests-bibliotheek. Deze functies verzorgen de communicatie met de twee API-endpoints van Codestral en voegen de verkregen API-sleutel toe aan de request headers voor authenticatie. Dit zijn de twee functies:
call_chat_endpoint— om het Chat-endpointhttps://codestral.mistral.ai/v1/chat/completionsaan te roepen.call_fim_endpoint— om het Completion-endpointhttps://codestral.mistral.ai/v1/fim/completionsaan te roepen.
Zo doe je dit in Python:
import requests
import json
api_key = 'INSERT YOUR API KEY HERE'
def call_chat_endpoint(data, api_key=api_key):
url = "<https://codestral.mistral.ai/v1/chat/completions>"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
"Accept": "application/json"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
return response.json()
else:
return f"Error: {response.status_code}, {response.text}"
def call_fim_endpoint(data, api_key=api_key):
url = "<https://codestral.mistral.ai/v1/fim/completions>"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
"Accept": "application/json"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
return response.json()
else:
return f"Error: {response.status_code}, {response.text}"
De API-endpoints van Codestral begrijpen
Nu we onze API-sleutel hebben en de authenticatiefuncties hebben ingesteld, gaan we bekijken hoe je de twee API-endpoints van Codestral gebruikt voor codegeneratie. We beginnen met het fill-in-the-middle (FIM)-endpoint.
Fill-in-the-middle-endpoint
Het fill-in-the-middle-endpoint is bedoeld om code te genereren die past tussen een gegeven beginpunt (prompt) en een optioneel eindpunt (suffix). Dit is vooral handig voor taken waarbij een specifiek stuk code binnen een grotere codestructuur moet worden gegenereerd.
API-endpoint-URL: https://codestral.mistral.ai/v1/fim/completions
Parameters:
prompt: Het beginpunt van de code.suffix(optioneel): Het eindpunt van de code.stop(optioneel): Een reeks tokens waarmee de generatie stopt.
Voorbeeld:
prompt = "def fibonacci(n: int):"
suffix = "n = int(input('Enter a number: '))\\nprint(fibonacci(n))"
data = {
"model": "codestral-latest",
"prompt": prompt,
"suffix": suffix,
"temperature": 0
}
response = call_fim_endpoint(data)

Instruct-endpoint
Het instruct-endpoint geeft instructies aan het model voor het genereren van code. Dit is handig voor meer open codegeneratietaken.
API-endpoint-URL: https://codestral.mistral.ai/v1/chat/completions
Parameters:
prompt: De instructie voor de codegeneratietaak.temperature(optioneel): Bepaalt de willekeurigheid van de gegenereerde code.max_tokens(optioneel): Beperkt de lengte van de gegenereerde code.
Voorbeeld:
prompt = "Please write me a function that adds up two numbers"
data = {
"model": "codestral-latest",
"messages": [
{
"role": "user",
"content": prompt
}
],
"temperature": 0
}
response = call_chat_instruct_endpoint(data)

Geavanceerd API-gebruik
Rate limits
Elk endpoint heeft andere rate limits:
- codestral.mistral.ai: 30 verzoeken per minuut en 2000 verzoeken per dag.
- api.mistral.ai: 200 verzoeken per seconde per workspace.
Om een soepele werking te garanderen en overschrijding van gebruiksbeperkingen te voorkomen, is het beheren van rate limits cruciaal. Een effectieve strategie is het implementeren van retry-logica, die een verzoek pauzeert en opnieuw indient na een opgegeven vertraging—we kunnen hiervoor de time-bibliotheek van Python gebruiken.
Je kunt ook je API-gebruik bijhouden om binnen de toegestane limieten te blijven. Log het aantal gedane verzoeken en vergelijk dit met de rate limits.
Foutafhandeling
Veelvoorkomende foutcodes zijn onder andere:
- 401 Unauthorized: Ongeldige API-sleutel of ontbrekende authenticatie.
- 429 Too Many Requests: Rate limit overschreden.
- 500 Internal Server Error: Serverproblemen aan de kant van Mistral AI.
Controleer bij een 401 Unauthorized-fout de API-sleutel en zorg dat deze correct is opgenomen in de request headers.
Probeer bij een 429 Too Many Requests-fout retry-logica te implementeren om te wachten en het verzoek na een vertraging opnieuw te proberen.
Retry-logica is ook nuttig voor het afhandelen van 500 Internal Server Error om het verzoek later opnieuw te proberen.
Uitvoer aanpassen
Om de indeling en stijl van de uitvoer te sturen, kun je parameters aanpassen zoals de prompt (specifieker of algemener maken) en de temperature (de creativiteit van het model regelen).
Experimenteer met deze parameters om de balans tussen creativiteit en voorspelbaarheid in de gegenereerde code fijn af te stellen.
Codestral API integreren
Codestral is niet alleen een op zichzelf staande API—we kunnen het integreren in onze bestaande ontwikkelworkflows. Laten we twee primaire manieren verkennen: via IDE- en teksteditorintegraties of door eigen scripts te maken.
IDE's en teksteditors
Codestral integreert naadloos met populaire IDE's en teksteditors via plug-ins of extensies. Zo kun je Codestral instellen met Continue.dev voor VS Code of JetBrains:
- Installeer de Continue-extensie voor VS Code of JetBrains.
- Selecteer Mistral API als provider en kies Codestral als model.
- Klik op Get API Key om de Codestral API-sleutel op te halen.
- Klik op Add model; dit vult automatisch de config.json in.
Aangepaste scripts
Je kunt aangepaste scripts of applicaties bouwen die de Codestral API gebruiken voor codegeneratietaken. Hier is een eenvoudig voorbeeld van een script dat testfuncties genereert:
prompt="""Sure, here is a simple function in Python that adds up two numbers:
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function like this:
result = add_two_numbers(5, 3)
print(result) # Outputs: 8
This function takes two arguments, num1 and num2, and returns their sum.\ndef test_add_two_numbers():"""
suffix=""
data = { "model": "codestral-latest", "prompt": prompt, "suffix": suffix, "temperature": 0 }
response = call_fim_endpoint(data)

Best practices voor het gebruik van de Codestral API
Om het maximale uit Codestral te halen, bekijken we enkele best practices voor effectief en verantwoord gebruik van de API.
Duidelijke en beknopte prompts
Bij het gebruik van de Codestral API is duidelijkheid cruciaal. Zorg dat je prompts of instructies goed gedefinieerd en ondubbelzinnig zijn om de gewenste code-uitvoer te krijgen. Door specifieke en contextuele prompts te geven, stuur je het model richting code die aansluit bij je verwachtingen.
Iteratieve verfijning
Het optimaliseren van je interacties met de Codestral API is een iteratief verfijningsproces. Experimenteer met verschillende parameters, prompts en input om de gewenste resultaten te bereiken. Analyseer de gegenereerde code en gebruik die inzichten om je prompts aan te passen. Door je aanpak continu te verfijnen, verbeter je na verloop van tijd de kwaliteit en relevantie van de gegenereerde code.
Verantwoord gebruik
Verantwoord gebruik van de Codestral API is belangrijk. Zorg dat jouw gebruik van de API in lijn is met ethische en wettelijke normen. Vermijd het genereren van code die kwaadaardig of schadelijk kan zijn. Houd je aan best practices voor veilig en ethisch programmeren en respecteer de privacy en rechten van anderen. Door de API verantwoord te gebruiken, draag je bij aan een positieve en duurzame ontwikkelomgeving.
Conclusie
Deze tutorial gaf een praktische handleiding voor het gebruik van de Codestral API voor codegeneratie. We hebben de verschillende endpoints, best practices en integratie-opties verkend.
Ik moedig je aan om met de API te experimenteren en te ontdekken hoe deze je eigen ontwikkelworkflow kan versterken.
Wil je meer leren over Mistral? Bekijk dan deze Mistral 7B-tutorial en deze gids voor werken met het Mistral large-model.
Ryan is lead data scientist en gespecialiseerd in het bouwen van AI-toepassingen met LLM’s. Hij is promovendus in Natural Language Processing en Knowledge Graphs aan Imperial College London, waar hij ook zijn master in Computer Science heeft behaald. Buiten data science om schrijft hij een wekelijkse Substack-nieuwsbrief, The Limitless Playbook, waarin hij één toepasbaar idee van ’s werelds beste denkers deelt en af en toe schrijft over kernconcepten in AI.

