A lightweight, framework-agnostic PHP client for interacting with Grok AI APIs.
Supports PHP 8.1+, built with OOP best practices, and fully type-safe.
- ✨ Features
- 📦 Installation
- 🚀 Quick Start
- 📌 Available Grok AI Models
- ⚡ Streaming Responses
- 🧪 Testing
- 🔒 Security
- 🤝 Contributing
- 📄 License
✅ Plug & Play – Quickly integrates with Grok AI APIs.
✅ Type-Safe & Modern – Fully utilizes PHP 8.1+ features like enums, traits, and interfaces.
✅ Works Everywhere – Compatible with CLI scripts, APIs, and any PHP project.
✅ Streaming Ready – Built-in support for streaming API responses.
✅ Lightweight & Optimized – No unnecessary dependencies, PSR-4 autoloading.
Install via Composer:
composer require grok-php/client
- PHP 8.1+
- Composer 2.0+
use GrokPHP\Client\Clients\GrokClient;
use GrokPHP\Client\Config\GrokConfig;
use GrokPHP\Client\Config\ChatOptions;
use GrokPHP\Client\Enums\Model;
// Initialize the client
$config = new GrokConfig('your-api-key');
$client = new GrokClient($config);
// Define messages
$messages = [
['role' => 'system', 'content' => 'You are an AI assistant.'],
['role' => 'user', 'content' => 'Tell me a joke!']
];
// Call API
$options = new ChatOptions(model: Model::GROK_2, temperature: 0.7, stream: false);
$response = $client->chat($messages, $options);
echo "🤖 AI Response: " . $response['choices'][0]['message']['content'];
- Model: grok-2
- Temperature: 0.7
- Streaming: false
use GrokPHP\Client\Clients\GrokClient;
use GrokPHP\Client\Config\GrokConfig;
use GrokPHP\Client\Config\ChatOptions;
use GrokPHP\Client\Enums\Model;
// Load API key from environment
$apiKey = getenv('GROK_API_KEY');
$config = new GrokConfig($apiKey);
$client = new GrokClient($config);
// Define messages
$messages = [
['role' => 'system', 'content' => 'You are a helpful assistant.'],
['role' => 'user', 'content' => 'How do black holes form?']
];
// Custom API settings
$options = new ChatOptions(
model: Model::GROK_2_LATEST,
temperature: 1.2,
stream: false
);
$response = $client->chat($messages, $options);
echo "🚀 AI Says: " . $response['choices'][0]['message']['content'];
Grok AI offers multiple models, each optimized for different use cases.
These models are available in the Model enum inside our package:
📄 src/Enums/Model.php
Model Enum | API Model Name | Description |
---|---|---|
Model::GROK_VISION_BETA |
grok-vision-beta | Experimental vision-enabled model |
Model::GROK_2_VISION |
grok-2-vision | Advanced multi-modal vision model |
Model::GROK_2_VISION_LATEST |
grok-2-vision-latest | Latest iteration of Grok vision models |
Model::GROK_2_VISION_1212 |
grok-2-vision-1212 | Enhanced vision model with performance improvements |
Model::GROK_2_1212 |
grok-2-1212 | Optimized chat model |
Model::GROK_2 |
grok-2 | Default general-purpose Grok model |
Model::GROK_2_LATEST |
grok-2-latest | Latest iteration of Grok-2 |
Model::GROK_BETA |
grok-beta | Experimental beta model |
The Grok API supports streaming responses for real-time interaction.
Enable it by setting stream: true
:
$options = new ChatOptions(model: Model::GROK_2, temperature: 0.7, stream: true);
$response = $client->chat($messages, $options);
Streaming can be useful for chatbots, real-time applications, and CLI assistants.
Run tests using Pest PHP:
composer test
or
vendor/bin/pest
If you discover a security vulnerability, please report it via email: 📩 thefeqy@gmail.com
Want to improve this package? Check out CONTRIBUTING.md for contribution guidelines.
This package is open-source software licensed under the MIT License.