pixelworxio / laravel-ai-action
AI-powered actions for Laravel — a clean integration layer built on laravel/ai
Fund package maintenance!
Pixelworxio
Installs: 50
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/pixelworxio/laravel-ai-action
Requires
- php: ^8.4
- laravel/ai: ^0.1 || ^0.2
- laravel/framework: ^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.8
- orchestra/testbench: ^10.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^2.0
README
What does this package do?
This package offers an architectural pattern that sits on top of laravel/ai to provide a consistent, structured, and testable way to execute AI actions in your Laravel app.
laravel/ai |
laravel-ai-action |
|
|---|---|---|
| Abstraction level | Agents, tools, streaming primitives | Single-responsibility action classes |
| Context passing | Manual | AgentContext DTO (record, meta, user instruction) |
| Output handling | Raw response objects | Typed AgentResult with token tracking |
| Structured output | StructuredAnonymousAgent |
HasStructuredOutput + mapOutput() |
| Streaming | Iterator + event handling | HasStreamingResponse callbacks |
| Queue support | None built-in | RunAgentActionJob (unique, queueable) |
| Testing | Mock the SDK | FakeAgentAction + fluent assertions |
| Artisan scaffolding | None | php artisan make:ai-action |
If you're wiring AI calls directly into controllers or service classes, you're reinventing this. laravel-ai-action gives every AI capability in your app a consistent, discoverable home — the same way laravel/actions does for business logic.
Requirements
| Dependency | Version |
|---|---|
| PHP | ^8.4 |
| Laravel | ^12.0 |
laravel/ai |
^0.1 |
Installation
composer require pixelworxio/laravel-ai-action
Publish the config to customise defaults:
php artisan vendor:publish --tag=ai-action-config
Quick Start
php artisan make:ai-action SummarizePost
// app/Ai/Actions/SummarizePost.php final class SummarizePost implements AgentAction { use InteractsWithAgent; public function instructions(AgentContext $context): string { return 'You are a concise technical writer. Summarize in three sentences.'; } public function prompt(AgentContext $context): string { return sprintf("Summarize:\n\n%s", $context->record->body); } public function handle(AgentContext $context): AgentResult { return app(RunAgentAction::class)->execute($this, $context); } }
// In a controller or job $context = AgentContext::fromRecord($post); $result = $this->runner->execute(new SummarizePost(), $context); echo $result->text; // "This post covers..." echo $result->inputTokens; // 320
Documentation
- Actions — creating actions, contracts, and execution modes
- Context —
AgentContextreference and usage - Results —
AgentResultreference and usage - Testing —
FakeAgentActionand fluent assertions - Configuration — all config keys and environment variables
- Queue — background execution with
RunAgentActionJob
Changelog
See CHANGELOG.md.
License
MIT — see LICENSE.