Larrykonn is a minimal demo app that showcases what’s possible with the Laravel AI SDK.
Links:
- Laravel Cloud: https://laravel.com/cloud
- Demo repo: https://larrykonn.laravel.cloud
- Laravel AI SDK: https://laravel.com/ai
- Copy the environment file:
cp .env.example .env- Add at least one AI provider API key in
.env. - Install dependencies, generate an app key, migrate, and run the dev server:
composer install
npm install
php artisan key:generate
php artisan migrate
npm run devuse Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Promptable;
class DemoAgent implements Agent
{
use Promptable;
public function instructions(): string
{
return 'You are a concise product guide.';
}
}
$text = (new DemoAgent)->prompt('Summarize the new release.')->text;
return (new DemoAgent)->stream('Write a short launch blurb.');use Illuminate\Contracts\JsonSchema\JsonSchema;
use Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Contracts\HasStructuredOutput;
use Laravel\Ai\Promptable;
class Reviewer implements Agent, HasStructuredOutput
{
use Promptable;
public function instructions(): string
{
return 'Review copy and score it.';
}
public function schema(JsonSchema $schema): array
{
return [
'score' => $schema->integer()->min(1)->max(10)->required(),
'feedback' => $schema->string()->required(),
];
}
}
$review = (new Reviewer)->prompt('Review this hero headline.');use Laravel\Ai\Audio;
use Laravel\Ai\Image;
use Laravel\Ai\Transcription;
$image = Image::of('A studio photo of a latte')->landscape()->generate();
$audio = Audio::of('Welcome to Larrykonn.')->female()->generate();
$text = Transcription::fromStorage('demo.wav')->generate();use Laravel\Ai\Embeddings;
use Laravel\Ai\Reranking;
$vectors = Embeddings::for(['Doc A', 'Doc B'])->dimensions(1536)->generate();
$ranked = Reranking::of(['Doc A', 'Doc B'])->rerank('best match');use Laravel\Ai\Files\Document;
use Laravel\Ai\Stores;
$file = Document::fromStorage('guide.pdf')->put();
$store = Stores::create('Knowledge Base');
$store->add($file->id);use Laravel\Ai\Embeddings;
use Laravel\Ai\Image;
Image::fake();
Embeddings::fake()->preventStrayEmbeddings();