This PHP library provides a simple wrapper for the Mistral API, allowing you to easily integrate the Mistral API into your PHP projects.
- Easy integration with Mistral API
 - Supports all Mistral API endpoints
 - Streaming support for real-time responses in chat completions
 - Utilizes PSR-17 and PSR-18 compliant HTTP clients and factories for making API requests
 
- PHP 8.1 or higher
 - A PSR-17 HTTP Factory implementation (e.g., guzzle/psr7 or nyholm/psr7)
 - A PSR-18 HTTP Client implementation (e.g., guzzlehttp/guzzle or symfony/http-client)
 
You can install the library via Composer:
composer require softcreatr/php-mistral-ai-sdkFirst, include the library in your project:
<?php
require_once 'vendor/autoload.php';Then, create an instance of the MistralAI class with your API key, organization (optional), an HTTP client, an HTTP request factory, and an HTTP stream factory:
use SoftCreatR\MistralAI\MistralAI;
$apiKey = 'your_api_key';
// Replace these lines with your chosen PSR-17 and PSR-18 compatible HTTP client and factories
$httpClient = new YourChosenHttpClient();
$requestFactory = new YourChosenRequestFactory();
$streamFactory = new YourChosenStreamFactory();
$uriFactory = new YourChosenUriFactory();
$mistral = new MistralAI($requestFactory, $streamFactory, $uriFactory, $httpClient, $apiKey);Now you can call any supported MistralAI API endpoint using the magic method __call:
$response = $mistral->createChatCompletion([
    'model' => 'mistral-tiny',
    'messages' => [
        [
            'role' => 'user',
            'content' => 'Who is the most renowned French painter?'
        ],
    ],
]);
// Process the API response
if ($response->getStatusCode() === 200) {
    $responseObj = json_decode($response->getBody()->getContents(), true);
    
    print_r($responseObj);
} else {
    echo "Error: " . $response->getStatusCode();
}You can enable real-time streaming for chat completions:
$streamCallback = static function ($data) {
    if (isset($data['choices'][0]['delta']['content'])) {
        echo $data['choices'][0]['delta']['content'];
    }
};
$mistral->createChatCompletion([
    'model' => 'mistral-small-latest',
    'messages' => [
        [
            'role' => 'user',
            'content' => 'Tell me a story about a brave knight.',
        ],
    ],
    'stream' => true,
], $streamCallback);For more details on how to use each endpoint, refer to the Mistral API documentation, and the examples provided in the repository.
- Create Chat Completion - Example
createChatCompletion(array $options = [], callable $streamCallback = null)
 
- Create Embedding - Example
createEmbedding(array $options = [])
 
- List Models - Example
listModels()
 - Retrieve Model - Example
retrieveModel(array $parameters = [])
 - Delete Model - Example
deleteModel(array $parameters = [])
 - Update Fine-Tuned Model - Example
updateFineTunedModel(array $parameters = [])
 - Archive Model - Example
archiveModel(array $parameters = [])
 - Unarchive Model - Example
unarchiveModel(array $parameters = [])
 
- Upload File - Example
uploadFile(array $options = [])
 - List Files - Example
listFiles()
 - Retrieve File - Example
retrieveFile(array $parameters = [])
 - Delete File - Example
deleteFile(array $parameters = [])
 
- List Fine-Tuning Jobs - Example
listFineTuningJobs()
 - Retrieve Fine-Tuning Job - Example
retrieveFineTuningJob(array $parameters = [])
 - Cancel Fine-Tuning Job - Example
cancelFineTuningJob(array $parameters = [])
 - Start Fine-Tuning Job - Example
startFineTuningJob(array $parameters = [])
 - Create Fine-Tuning Job - Example
createFineTuningJob(array $options = [])
 
- Create FIM Completion - Example
createFimCompletion(array $options = [])
 
- Create Agents Completion - Example
createAgentsCompletion(array $options = [])
 
For a detailed list of changes and updates, please refer to the CHANGELOG.md file. We adhere to Semantic Versioning and document notable changes for each release.
Streaming is now supported for real-time token generation in chat completions. Please make sure you are handling streams correctly using a callback, as demonstrated in the examples.
This library is licensed under the ISC License. See the LICENSE file for more information.
| 
        
             Sascha Greuel  |