softcreatr / php-mistral-ai-sdk
A powerful and easy-to-use PHP SDK for the Mistral AI API, allowing seamless integration of advanced AI-powered features into your PHP projects.
Fund package maintenance!
softcreatr
ecologi.com/softcreatr?r=61212ab3fc69b8eb8a2014f4
Installs: 1 919
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >=8.1
- ext-json: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.1
- psr/http-message: ^2.0
Requires (Dev)
README
This PHP library provides a simple wrapper for the Mistral API, allowing you to easily integrate the Mistral API into your PHP projects.
Features
- 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
Requirements
- 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)
Installation
You can install the library via Composer:
composer require softcreatr/php-mistral-ai-sdk
Usage
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(); }
Streaming Example
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.
Supported Methods
Chat Completions
- Create Chat Completion - Example
createChatCompletion(array $options = [], callable $streamCallback = null)
Embeddings
- Create Embedding - Example
createEmbedding(array $options = [])
Models
- 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 = [])
Files
- Upload File - Example
uploadFile(array $options = [])
- List Files - Example
listFiles()
- Retrieve File - Example
retrieveFile(array $parameters = [])
- Delete File - Example
deleteFile(array $parameters = [])
Fine-Tuning Jobs
- 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 = [])
FIM Completion
- Create FIM Completion - Example
createFimCompletion(array $options = [])
Agents Completion
- Create Agents Completion - Example
createAgentsCompletion(array $options = [])
Changelog
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.
Known Problems and Limitations
Streaming Support
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.
License
This library is licensed under the ISC License. See the LICENSE file for more information.