edfavieljr / laravel-ai-bridge
LaravelAIBridge provides a unified and fluid API to implement advanced AI capabilities in Laravel applications, including text generation, embedding, sentiment analysis, classification and image generation, all following Laravel conventions and style.
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/edfavieljr/laravel-ai-bridge
This package is auto-updated.
Last update: 2025-12-25 22:27:42 UTC
README
A powerful, elegant library for integrating multiple AI providers into Laravel applications through a unified API.
Introduction
Laravel AI Bridge provides seamless integration with leading AI providers (OpenAI, Anthropic Claude, Google Gemini, and Hugging Face) through a consistent, Laravel-style interface. The library abstracts away the complexities of working with different AI APIs, allowing developers to focus on building features rather than managing API implementations.
Features
- Unified API for multiple AI providers
- Provider-specific facades for direct access to specialized features
- Intelligent caching to reduce API costs
- Automatic fallback between providers for increased reliability
- Laravel-style syntax with facades, helpers, and fluent interfaces
- Eloquent integration with model traits for AI capabilities
- Comprehensive logging and error handling
Installation
Requirements
- PHP 8.1 or higher
- Laravel 9.0 or higher
- Composer
Via Composer
composer require edfavieljr/laravel-ai-bridge
Publish Configuration
After installing the package, publish the configuration file:
php artisan vendor:publish --provider="edfavieljr\LaravelAIBridge\AIBridgeServiceProvider" --tag="ai-config"
Quick Setup
The quickest way to get started is using the included setup command:
php artisan ai:setup
This interactive command will guide you through:
- Selecting your preferred AI provider
- Configuring your API keys
- Setting default models
- Updating your
.envfile automatically
Manual Configuration
Environment Variables
Add the following variables to your .env file:
# Default provider
AI_PROVIDER=openai
# OpenAI Configuration
OPENAI_API_KEY=your-openai-key
OPENAI_ORGANIZATION=your-organization-id # Optional
OPENAI_DEFAULT_MODEL=gpt-4
# Anthropic Configuration
ANTHROPIC_API_KEY=your-anthropic-key
ANTHROPIC_DEFAULT_MODEL=claude-3-opus-20240229
# Google Gemini Configuration
GEMINI_API_KEY=your-gemini-key
GEMINI_PROJECT_ID=your-gcp-project-id # Optional, for Vertex AI
GEMINI_DEFAULT_MODEL=gemini-1.5-pro
# Hugging Face Configuration
HUGGINGFACE_API_KEY=your-huggingface-key
HUGGINGFACE_DEFAULT_MODEL=gpt2
Configuration Options
The config/ai.php file contains detailed settings for:
- Default provider
- Caching behavior
- Provider fallback options
- Rate limiting
- Logging
- Database storage for API calls
- Provider-specific configuration
Basic Usage
Using the Main Facade
use edfavieljr\LaravelAIBridge\Facades\AI; // Generate text with default provider $response = AI::generateText('Explain quantum computing in simple terms'); // Analyze sentiment $sentiment = AI::analyzeSentiment('I absolutely love this product!'); // Generate embeddings for semantic search $embeddings = AI::generateEmbeddings('Text to convert to vector representation'); // Classify text into categories $classification = AI::classifyText( 'The battery drains too quickly on this phone', ['hardware_issue', 'software_issue', 'battery_problem', 'user_experience'] ); // Extract entities $entities = AI::extractEntities('Apple announced their new iPhone yesterday in California');
Using Global Helper Functions
// Generate text $explanation = ai('Explain how blockchain works in simple terms'); // Analyze sentiment $sentiment = ai_sentiment('The customer service was terrible and I want a refund'); // Generate embeddings $embeddings = ai_embed('Vector representation for semantic search'); // Classify text $category = ai_classify( 'The screen keeps freezing after the update', ['hardware_issue', 'software_bug', 'compatibility_problem', 'user_error'] ); // Extract entities $entities = ai_entities('Microsoft CEO Satya Nadella announced a new partnership with OpenAI');
Working with Specific Providers
OpenAI
use edfavieljr\LaravelAIBridge\Facades\OpenAI; // Direct access via provider-specific facade $completion = OpenAI::generateText('Write a poem about autumn'); // Generate an image $imageUrl = OpenAI::generateImage('A futuristic city with flying cars'); // Using the main facade with provider specification $completion = AI::provider('openai') ->model('gpt-4') ->generateText('Explain the theory of relativity');
Anthropic (Claude)
use edfavieljr\LaravelAIBridge\Facades\Anthropic; // Generate text with Claude $completion = Anthropic::generateText('Write a summary of the last climate report'); // Using the main facade with provider specification $completion = AI::provider('anthropic') ->model('claude-3-opus-20240229') ->generateText('Compare and contrast quantum computing and classical computing');
Google Gemini
use edfavieljr\LaravelAIBridge\Facades\Gemini; // Generate text with Gemini $completion = Gemini::generateText('Create a tutorial for machine learning beginners'); // Using the main facade with provider specification $completion = AI::provider('gemini') ->model('gemini-1.5-pro') ->generateText('Explain how neural networks work');
Hugging Face
use edfavieljr\LaravelAIBridge\Facades\HuggingFace; // Generate text with HuggingFace models $completion = HuggingFace::model('gpt2')->generateText('Continue this story: Once upon a time'); // Generate embeddings with a specific model $embeddings = HuggingFace::model('sentence-transformers/all-mpnet-base-v2') ->generateEmbeddings('Semantic search vector');
Integrating with Eloquent Models
Add AI capabilities directly to your models:
use Illuminate\Database\Eloquent\Model; use edfavieljr\LaravelAIBridge\Traits\HasAICapabilities; class Product extends Model { use HasAICapabilities; // Your model implementation... }
Then use the AI capabilities on your model instances:
$product = Product::find(1); // Generate a marketing description $marketingText = $product->completeText( 'description', 'Rewrite this product description to be more compelling: %s' ); // Analyze customer review sentiment $sentiment = $product->analyzeSentimentOf('customer_review'); // Categorize product based on description $category = $product->classifyAttribute( 'description', ['electronics', 'clothing', 'home', 'sports'] ); // Generate an image for the product $imageUrl = $product->generateImageFrom('description'); // Summarize product description $summary = $product->summarizeAttribute('description', 100); // Translate product description $translated = $product->translateAttribute('description', 'Spanish');
Advanced Features
Automatic Fallback Between Providers
Configure fallback behavior in config/ai.php:
'fallback' => [ 'enabled' => true, 'providers' => ['openai', 'anthropic', 'gemini', 'huggingface'], ],
With fallback enabled, if the primary provider fails, the library automatically tries the next provider:
// Will try OpenAI first, then fall back to other providers if it fails $result = AI::provider('openai')->generateText('Explain quantum physics');
Intelligent Caching
Configure caching in config/ai.php:
'cache' => [ 'enabled' => true, 'ttl' => 60, // minutes ],
Identical requests will be cached to reduce API costs:
// First call hits the API $result1 = AI::generateText('What is machine learning?'); // Second identical call uses cached result $result2 = AI::generateText('What is machine learning?');
Database Logging
Enable database storage to track AI usage:
'storage' => [ 'enabled' => true, 'purge_after_days' => 30, ],
Then publish and run the migration:
php artisan vendor:publish --provider="edfavieljr\LaravelAIBridge\AIBridgeServiceProvider" --tag="ai-migrations" php artisan migrate
Query the logs:
use edfavieljr\LaravelAIBridge\Models\AICompletion; // Get all completions $completions = AICompletion::all(); // Get completions from a specific provider $openaiCompletions = AICompletion::fromProvider('openai')->get(); // Get token usage summary $usageSummary = AICompletion::getTokenUsageSummary();
Troubleshooting
Common Issues
-
API Key Authentication Failures
- Verify your API keys are correctly set in the
.envfile - Check for whitespace or special characters in your keys
- Verify your API keys are correctly set in the
-
Rate Limiting
- Configure rate limiting settings in
config/ai.php - Implement queue-based processing for high-volume applications
- Configure rate limiting settings in
-
Model Availability
- Ensure you have access to the selected models in your provider accounts
- Some models require specific permissions or subscriptions
Debugging
Enable detailed logging:
'logging' => [ 'enabled' => true, 'channel' => 'ai-logs', // Create this channel in your config/logging.php ],
Contributing
Contributions are welcome! Please see our Contributing Guide for details.
License
This package is open-sourced software licensed under the MIT license.