Codestral: A Comprehensive Guide to the Code Generation API
Codestral, a cutting-edge generative model, excels at code generation tasks like fill-in-the-middle (FIM) and code completion. Trained on over 80 programming languages, it's a versatile tool for developers working with both common and less-used languages. This tutorial details how to effectively utilize the Codestral API. For a broader overview of Codestral, see my article on "What is Mistral's Codestral".
API Endpoints
Codestral offers two primary API endpoints:
codestral.mistral.ai
: Ideal for individual users and small-scale projects. Currently free (until August 1, 2024), it will transition to a subscription model.api.mistral.ai
: Designed for business needs and high-volume usage, offering increased rate limits and robust support.Mistral recommends codestral.mistral.ai
for IDE plugins or user-facing tools, allowing users to manage their own API keys. api.mistral.ai
is preferred for other applications due to its higher rate limits and scalability. This tutorial focuses on codestral.mistral.ai
.
Getting Started
Obtaining an API Key:
api.mistral.ai
, navigate to the API Keys tab and generate a new key. For codestral.mistral.ai
, go to the Codestral tab (often marked "New"), complete the signup (note: a phone number is usually required), and access your key once approved.Authentication (Python):
We'll use the requests
library to create authentication functions for both endpoints:
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" #Corrected URL headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", "Accept": "application/json" } response = requests.post(url, headers=headers, data=json.dumps(data)) return response.json() if response.status_code == 200 else f"Error: {response.status_code}, {response.text}" def call_fim_endpoint(data, api_key=api_key): url = "https://codestral.mistral.ai/v1/fim/completions" #Corrected URL headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", "Accept": "application/json" } response = requests.post(url, headers=headers, data=json.dumps(data)) return response.json() if response.status_code == 200 else f"Error: {response.status_code}, {response.text}"
Understanding the Endpoints
Fill-in-the-Middle (FIM) Endpoint:
Generates code to fill the gap between a prompt
and an optional suffix
.
https://codestral.mistral.ai/v1/fim/completions
prompt
, suffix
(optional), stop
(optional)Example:
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:
Uses instructions to guide code generation.
https://codestral.mistral.ai/v1/chat/completions
prompt
, temperature
(optional), max_tokens
(optional)Example:
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" #Corrected URL headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", "Accept": "application/json" } response = requests.post(url, headers=headers, data=json.dumps(data)) return response.json() if response.status_code == 200 else f"Error: {response.status_code}, {response.text}" def call_fim_endpoint(data, api_key=api_key): url = "https://codestral.mistral.ai/v1/fim/completions" #Corrected URL headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", "Accept": "application/json" } response = requests.post(url, headers=headers, data=json.dumps(data)) return response.json() if response.status_code == 200 else f"Error: {response.status_code}, {response.text}"
Advanced Usage
codestral.mistral.ai
has limits of 30 requests per minute and 2000 per day; api.mistral.ai
has 200 requests per second per workspace. Implement retry logic using Python's time
library to handle rate limits.prompt
and temperature
to fine-tune the generated code.Integration
Codestral integrates with IDEs (VS Code, JetBrains) via plugins like Continue.dev. You can also create custom scripts. Here's an example for generating test functions:
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)
Best Practices
Conclusion
This guide provides a practical introduction to the Codestral API. Experiment and integrate it into your workflow to enhance your development process. For more on Mistral, explore the Mistral 7B tutorial and the guide to working with the Mistral large model.
The above is the detailed content of Codestral API Tutorial: Getting Started With Mistral's API. For more information, please follow other related articles on the PHP Chinese website!