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-sdk
First, 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 |