A Laravel-friendly, lightweight PHP SDK to interact with Google Gemini Generative AI. Supports text generation, image input (vision), and is fully customizable for any PHP project.
- ✅ Gemini text generation (prompt → response)
- 🖼️ Image input support (base64 vision models)
- 🔐 Full OAuth2 authentication (refresh token supported)
- 🔧 Easy configuration via
.envor constructor - 🧪 PHPUnit + Testbench testing support
- 🎯 Laravel-ready (service provider + facade)
- 📦 Composer installable
- 📘 Full documentation included
Install via Composer:
composer require php-gemini/generative-aiFor Laravel users, publish the configuration file:
php artisan vendor:publish --provider="PhpGemini\GenerativeAI\Providers\GeminiServiceProvider"Then update your .env file with your API Key:
GEMINI_API_KEY=your_actual_api_key
GEMINI_MODEL=gemini-1.5-flash🔐 Using OAuth2? See the section below on generating and using refresh tokens instead.
This SDK supports Google OAuth2 access via a refresh_token, client_id, and client_secret.
To generate your credentials securely, use our standalone command-line script: Zero-Asif/oauth2_refresh_token_generator
Follow the instructions in its README file. After running the script, add the output to your .env file:
GEMINI_OAUTH_CLIENT_ID=your_client_id
GEMINI_OAUTH_CLIENT_SECRET=your_client_secret
GEMINI_OAUTH_REFRESH_TOKEN=your_refresh_token✅ The SDK will automatically use OAuth2 if an API key is not provided.
use Gemini;
echo Gemini::generate("What's the future of AI?");Initialize with an API Key:
use PhpGemini\GenerativeAI\GeminiClient;
require 'vendor/autoload.php';
$gemini = new GeminiClient([
'api_key' => 'your_api_key',
'model' => 'gemini-1.5-flash',
]);
echo $gemini->generateContent("Tell me something interesting.");Or initialize with OAuth2:
use PhpGemini\GenerativeAI\GeminiClient;
use PhpGemini\GenerativeAI\Services\OAuth2Service;
require 'vendor/autoload.php';
$oauth = new OAuth2Service([
'client_id' => 'your_client_id',
'client_secret' => 'your_client_secret',
'refresh_token' => 'your_refresh_token',
]);
$gemini = new GeminiClient([
'model' => 'gemini-1.5-flash',
'oauth2' => $oauth
]);
echo $gemini->generateContent("Tell me something interesting.");$response = $gemini->generateContentWithImage('path/to/image.jpg', 'What’s in this image?');
⚠️ Note: Only supported for models that accept image input, likegemini-1.5-flash.
To run the test suite:
composer testTo use Testbench for testing within a Laravel application, first install it:
composer require --dev orchestra/testbench- Text generation
- Laravel integration
- Image input (vision support)
- OAuth2 integration (refresh token support)
- Unit testing & mocking (PHPUnit + Testbench)
- Streaming response support
- Online documentation site (mkdocs)
Full documentation is available inside: docs/index.md
Pull requests, issues, and feature suggestions are welcome!
git clone [https://github.com/php-gemini/generative-ai.git](https://github.com/php-gemini/generative-ai.git)
cd generative-ai
composer installThis project is open-sourced under the MIT License.
- Packagist: php-gemini/generative-ai
- Gemini API Docs: https://ai.google.dev
- OAuth2 Refresh Token Tool: Zero-Asif/oauth2_refresh_token_generator
- Google Cloud Console (OAuth Credentials): https://console.cloud.google.com/apis/credentials
- Project Homepage: https://github.com/php-gemini/generative-ai
Zero-Asif (Asifuzzaman Asif)
- 📧 Email: asifuzzamanasif0001@gmail.com
- 🔗 GitHub: github.com/Zero-Asif
✨ If this project helped you, please ⭐ the repo!