spatie/laravel-url-ai-transformer
Laravel package to transform URLs and their web content with AI. Extract structured data (JSON-LD), generate summaries, images, or custom outputs via transformers and prompts. Runs via an Artisan command and stores results in the database for later retrieval.
Concerns\InteractsWithAIModels, ensuring consistency with Laravel’s AI workflows.transformation_results, but future-proofed for Laravel 12’s Eloquent enhancements (e.g., model macros, query optimizations).laravel/ai). This is a mandatory upgrade for existing users.ai.php (e.g., AI_MODEL=gpt-4) instead of Prism-specific settings.// config/ai.php
'models' => [
'gpt-4' => [
'provider' => 'openai',
'model' => 'gpt-4',
],
],
Laravel\AI\Jobs\BaseJob, ensuring compatibility with Laravel’s AI queue optimizations.Laravel\AI\Concerns\InteractsWithAIModels instead of Prism’s interfaces.Prompt class for dynamic prompt construction (e.g., Prompt::from('...')->toModel('gpt-4')).AIException).Prism::make('openai')->complete() with AI::complete('gpt-4', '...').HttpClient) handles edge cases (e.g., redirects, auth).Prism::stream() with Laravel AI’s streaming API.AI::fake())?Prompt class?// Old (Prism)
class LdJsonTransformer extends Transformer {
public function transform(string $content): string {
return Prism::make('openai')->complete('Extract LD+JSON from: ' . $content);
}
}
// New (Laravel AI)
class LdJsonTransformer extends Transformer {
public function transform(string $content): string {
return AI::complete('gpt-4', 'Extract LD+JSON from: ' . $content);
}
}
laravel/framework, spatie/laravel-url-ai-transformer).composer require laravel/ai
php artisan vendor:publish --provider="Laravel\AI\AIServiceProvider"
.env with AI credentials (e.g., OPENAI_API_KEY).config/ai.php:
'providers' => [
'openai' => [
'key' => env('OPENAI_API_KEY'),
'secret' => env('OPENAI_API_SECRET'),
'region' => env('OPENAI_REGION', 'us'),
],
],
php artisan vendor:publish --provider="Spatie\LaravelUrlAiTransformer\UrlAiTransformerServiceProvider"
config/url-ai-transformer.php to use Laravel AI models (e.g., model: 'gpt-4').// Before
use Prism\Prism;
// After
use Laravel\AI\Facades\AI;
Prompt class:
use Laravel\AI\Prompts\Prompt;
public function transform(string $content): string {
return AI::complete(
Prompt::from('Extract LD+JSON from: ' . $content)->toModel('gpt-4')
);
}
--now flag to verify synchronous behavior.transformation_results for errors or incomplete data.BaseJob, ensure they’re compatible with Laravel AI’s queue system.public function retryUntil(): ?DateTime
{
return now()->addMinutes(5); // Laravel AI's default retry
}
ctype, fileinfo, curl).Prism::stream()) must be replaced with Laravel AI equivalents.AI::stream() for streaming responses.How can I help you explore Laravel packages today?