https://github.com/grok-php/client
Grok PHP Client is a robust and community-driven PHP client library for seamless integration with Grok AI API, offering efficient access to advanced AI and data processing capabilities.
https://github.com/grok-php/client
ai-api ai-chatbot ai-client ai-developer-tools ai-integration ai-powered-applications ai-sdk ai-text-generation generative-ai grok-ai machine-learning php-ai-sdk rest-api x-ai x-ai-grok x-ai-grok-2
Last synced: about 2 months ago
JSON representation
Grok PHP Client is a robust and community-driven PHP client library for seamless integration with Grok AI API, offering efficient access to advanced AI and data processing capabilities.
- Host: GitHub
- URL: https://github.com/grok-php/client
- Owner: grok-php
- License: mit
- Created: 2025-02-06T21:32:19.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-02-22T15:48:50.000Z (2 months ago)
- Last Synced: 2025-02-22T16:33:53.894Z (2 months ago)
- Topics: ai-api, ai-chatbot, ai-client, ai-developer-tools, ai-integration, ai-powered-applications, ai-sdk, ai-text-generation, generative-ai, grok-ai, machine-learning, php-ai-sdk, rest-api, x-ai, x-ai-grok, x-ai-grok-2
- Language: PHP
- Homepage: https://packagist.org/packages/grok-php/client
- Size: 722 KB
- Stars: 4
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# π§ Grok PHP Client

**A lightweight, framework-agnostic PHP client for interacting with Grok AI APIs.**
Supports **PHP 8.2+**, built with **OOP best practices**, and **fully type-safe**.[](https://packagist.org/packages/grok-php/client)
[](https://php.net)
[](https://packagist.org/packages/grok-php/client)

[](LICENSE)---
## π Table of Contents
- [Features](#features)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Basic Usage](#basic-usage)
- [Vision Analysis](#vision-analysis-image-recognition)
- [Advanced Configuration](#advanced-configuration)
- [Available Grok AI Models](#available-grok-ai-models)
- [Streaming Responses](#streaming-responses)
- [Error Handling](#error-handling)
- [Testing](#testing)
- [Security](#security)
- [Contributing](#contributing)
- [License](#license)---
## **Features**

- **Easy Integration** β Seamlessly connects with Grok AI APIs.
- **Modern PHP Features** β Utilizes PHP 8.2+ features like enums and traits.
- **Framework Agnostic** β Works with any PHP project, CLI scripts, or web applications.
- **Streaming Support** β Built-in support for real-time responses.
- **Lightweight & Efficient** β Optimized with PSR-4 autoloading and minimal dependencies.---
## **Installation**
Install via Composer:
```sh
composer require grok-php/client
```### **Requirements:**
- PHP 8.2+
- Composer 2.0+---
## **Quick Start**
### **Basic Usage**
```php
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'];
```### **Defaults Used:**
- Model: `grok-2`
- Temperature: `0.7`
- Streaming: `false`---
### Vision Analysis (Image Recognition)
The **Vision API** allows you to send images for analysis using **Grok-2-Vision** models.```php
use GrokPHP\Client\Clients\GrokClient;
use GrokPHP\Client\Config\GrokConfig;// Initialize the client
$config = new GrokConfig('your-api-key');
$client = new GrokClient($config);// Use the Vision API to analyze an image
$response = $client->vision()->analyze('https://example.com/image.jpg', 'Describe this image.');echo "Vision Response: " . $response['choices'][0]['message']['content'];
```#### Supported Models for Vision
| Model Enum | API Model Name | Description |
|-----------------------------|----------------------|----------------------------------|
| `Model::GROK_2_VISION` | grok-2-vision | Base Vision Model |
| `Model::GROK_2_VISION_LATEST` | grok-2-vision-latest | Latest Vision Model |
| `Model::GROK_2_VISION_1212` | grok-2-vision-1212 | Default model for image analysis |**Note:** If you attempt to use an **unsupported model** for vision, an exception will be thrown.
---
### **Advanced Configuration**```php
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'];
```---
## **Available Grok AI Models**
Grok AI offers multiple models 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 |#### **Default model used:** `Model::GROK_2`
---
## **Streaming Responses**
The Grok API supports streaming responses for real-time interaction.
Enable it by setting `stream: true`:```php
$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.---
## **Error Handling**
This package includes built-in error handling with a dedicated exception class.
Common errors and their messages:| Error Type | HTTP Code | Message |
|--------------------|----------|-------------------------------------------|
| `Invalid API Key` | 400 | No API key provided. Specify your API key. |
| `Invalid Request` | 400 | Client specified an invalid argument. |
| `Invalid Role` | 422 | Unknown role variant provided in messages. |Example of handling exceptions:
```php
use GrokPHP\Client\Exceptions\GrokException;try {
$response = $client->chat($messages, $options);
} catch (GrokException $e) {
echo "Error: " . $e->getMessage();
}
```---
## **Testing**To run PHPUnit tests, you need to set up your API key. Follow these steps:
1. **Copy the default PHPUnit configuration file:**
```sh
cp phpunit.xml.dist phpunit.xml
```2. **Update the API key in `phpunit.xml`:**
Open the file and replace `your-grok-api-key-here` with your actual API key:
```xml
```
3. **Obtain an API Key:**
If you donβt have an API key, sign up at [Grok AI](https://x.ai/api/) and create one.4. **Run the tests with PHPUnit:**
```sh
composer test
```
Or run PHPUnit manually:
```sh
vendor/bin/phpunit
```
---## **Security**
If you discover a security vulnerability, please report it via email:
π© [[email protected]](mailto:[email protected])---
## **Contributing**
Want to improve this package? Check out [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.
---
## **License**
This package is open-source software licensed under the [MIT License](LICENSE).