Tired of reading docs and just want to see the code? Let's dive straight into how you can use the hosseinhezami/laravel-gemini
package to add powerful AI features to your Laravel application. The API is clean, fluent, and incredibly powerful.
Installation & Setup
First, get the package.
composer require hosseinhezami/laravel-gemini
Publish the config file and set your API key.
php artisan vendor:publish --tag=gemini-config
# .env GEMINI_API_KEY=your_gemini_api_key_here
Code Examples: See It in Action
1. Basic Text Generation & Chat
The TextBuilder
makes generating text or creating a chat interface simple.
use HosseinHezami\LaravelGemini\Facades\Gemini; // Simple prompt $response = Gemini::text() ->prompt('Write a tagline for a developer blog.') ->generate(); echo $response->content(); // Chat with history $history = [ ['role' => 'user', 'parts' => [['text' => 'Hello!']]], ['role' => 'model', 'parts' => [['text' => 'Hi there! How can I help?']]] ]; $response = Gemini::text() ->prompt('What’s the weather like?') ->history($history) ->temperature(0.7) ->generate(); echo $response->content();
2. Structured Data Extraction
Need consistent JSON output from a messy prompt? Use structuredSchema
.
$response = Gemini::text() ->structuredSchema([ 'type' => 'object', 'properties' => [ 'sentiment' => [ 'type' => 'string', 'enum' => ['positive', 'negative', 'neutral'] ], 'confidence' => ['type' => 'number'], 'key_points' => { 'type' => 'array', 'items' => {'type' => 'string'} } ], 'required' => ['sentiment'] ]) ->prompt('The product is amazing but the delivery was late. I love the features though.') ->generate(); $analysis = json_decode($response->content()); // $analysis->sentiment, $analysis->key_points, etc.
3. Image Generation
Generate images from a text description.
$response = Gemini::image() ->prompt('A minimalist logo for a tech startup called "Nexus", using blue and green') ->generate(); // Save the generated image directly $response->save(storage_path('app/logo.png'));
4. Document Understanding
Upload a file (PDF, DOC, image) and ask questions about it.
// First, upload the file to Gemini's servers $fileUri = Gemini::files()->upload('document', $pathToInvoicePdf); // Then, use it in a prompt $response = Gemini::text() ->upload('document', $pathToInvoicePdf) // or use the $fileUri ->prompt('What is the total amount due on this invoice?') ->generate(); echo $response->content();
5. Text-to-Speech (Audio)
Generate spoken audio from text.
$response = Gemini::audio() ->prompt('Welcome to our application. We are thrilled to have you on board.') ->voiceName('Kore') // Check docs for available voices ->generate(); // The package smartly handles the binary response, // allowing you to save it directly. $response->save(public_path('audio/welcome.mp3'));
6. Real-Time Streaming
Crucial for building chat interfaces that feel fast and responsive.
// In your controller (e.g., app/Http/Controllers/ChatController.php) public function stream(Request $request) { return response()->stream(function () use ($request) { Gemini::text() ->model('gemini-2.5-flash-lite') // Use a fast model for streaming ->prompt($request->query('message')) ->stream(function ($chunk) { $text = $chunk['text'] ?? ''; if (connection_aborted()) return; echo "data: " . json_encode(['text' => $text]) . "\n\n"; ob_flush(); flush(); }); }, 200, [ 'Content-Type' => 'text/event-stream', 'Cache-Control' => 'no-cache', 'Connection' => 'keep-alive', 'X-Accel-Buffering' => 'no', ]); }
Ready to Build?
This is just the surface. The package also handles video generation, embeddings, and full file management.
For complete documentation, check out the official docs:
https://hosseinhezami.github.io/laravel-gemini/
Source:
- https://github.com/hosseinhezami/laravel-gemini
- https://packagist.org/packages/hosseinhezami/laravel-gemini
What will you build first? Let me know in the comments! 👇
Top comments (0)