Package Data | |
---|---|
Maintainer Username: | maestroerror |
Maintainer Contact: | revaz.gh@gmail.com (maestroerror) |
Package Create Date: | 2024-12-13 |
Package Last Update: | 2025-09-08 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2025-09-08 15:13:36 |
Package Statistics | |
---|---|
Total Downloads: | 23,795 |
Monthly Downloads: | 8,036 |
Daily Downloads: | 294 |
Total Stars: | 461 |
Total Watchers: | 13 |
Total Forks: | 33 |
Total Open Issues: | 17 |
The easiest way to create and maintain AI agents in your Laravel projects.
Each GitHub โญ๏ธ helps the community grow. Thanks for the support!
Jump to Official Documentation
If you prefer article to get started, check it out: Laravel AI Agent Development Made Easy
You can find other tutorials here: Tutorials
Any questions? Join our Discord server!
Need to use LarAgent outside of Laravel? Check out this Docs.
LarAgent brings the power of AI agents to your Laravel projects with an elegant syntax. Create, extend, and manage AI agents with ease while maintaining Laravel's fluent API design patterns.
What if you can create AI agents just like you create any other Eloquent model?
Why not?! ๐
php artisan make:agent YourAgentName
And it looks familiar, isn't it?
namespace App\AiAgents;
use LarAgent\Agent;
class YourAgentName extends Agent
{
protected $model = 'gpt-4';
protected $history = 'in_memory';
protected $provider = 'default';
protected $tools = [];
public function instructions()
{
return "Define your agent's instructions here.";
}
public function prompt($message)
{
return $message;
}
}
And you can tweak the configs, like history
// ...
protected $history = \LarAgent\History\CacheChatHistory::class;
// ...
Or add temperature
:
// ...
protected $temperature = 0.5;
// ...
Even disable parallel tool calls:
// ...
protected $parallelToolCalls = false;
// ...
Oh, and add a new tool as well:
// ...
#[Tool('Get the current weather in a given location')]
public function exampleWeatherTool($location, $unit = 'celsius')
{
return 'The weather in '.$location.' is '.'20'.' degrees '.$unit;
}
// ...
And run it, per user:
Use App\AiAgents\YourAgentName;
// ...
YourAgentName::forUser(auth()->user())->respond($message);
Or use a custom name for the chat history:
Use App\AiAgents\YourAgentName;
// ...
YourAgentName::for("custom_history_name")->respond($message);
Let's find out more in documentation ๐
Tool
facade for shortened tool creationHere's what's coming next to make LarAgent even more powerful:
agent:chat:clear AgentName
- Clear all chat histories for a specific agent while preserving keys โ๏ธagent:chat:remove AgentName
- Completely remove all chat histories and keys for a specific agent โ๏ธmake:agent:tool
- Generate tool classes with ready-to-use stubsmake:agent:chat-history
- Scaffold custom chat history implementationsmake:llm-driver
- Create custom LLM driver integrationsStay tuned! We're constantly working on making LarAgent the most versatile AI agent framework for Laravel.
You can install the package via composer:
composer require maestroerror/laragent
You can publish the config file with:
php artisan vendor:publish --tag="laragent-config"
These are the contents of the published config file:
return [
'default_driver' => \LarAgent\Drivers\OpenAi\OpenAiDriver::class,
'default_chat_history' => \LarAgent\History\InMemoryChatHistory::class,
'providers' => [
'default' => [
'label' => 'openai',
'api_key' => env('OPENAI_API_KEY'),
'default_context_window' => 50000,
'default_max_completion_tokens' => 100,
'default_temperature' => 1,
],
],
];
You can configure the package by editing the config/laragent.php
file. Here is an example of custom provider with all possible configurations you can apply:
// Example custom provider with all possible configurations
'custom_provider' => [
// Just name for reference, changes nothing
'label' => 'mini',
'model' => 'gpt-3.5-turbo',
'api_key' => env('CUSTOM_API_KEY'),
'api_url' => env('CUSTOM_API_URL'),
// Default driver and chat history
'driver' => \LarAgent\Drivers\OpenAi\OpenAiDriver::class,
'chat_history' => \LarAgent\History\InMemoryChatHistory::class,
'default_context_window' => 15000,
'default_max_completion_tokens' => 100,
'default_temperature' => 1,
// Enable/disable parallel tool calls
'parallel_tool_calls' => true,
// Store metadata with messages
'store_meta' => true,
// Save chat keys to memory via chatHistory
'save_chat_keys' => true,
],
Provider just gives you the defaults. Every config can be overridden per agent in agent class.
We welcome contributions to LarAgent! Whether it's improving documentation, fixing bugs, or adding new features, your help is appreciated. Here's how you can contribute.
We aim to review all pull requests within a 2 weeks. Thank you for contributing to LarAgent!
composer test
To run manual tests create files in testsManual\.gitignore
with API keys and run:
./vendor/bin/pest testsManual
API key files looks like:
<?php
return 'YourApiKey';
Please review our security policy on how to report security vulnerabilities.
Thanks to these people and projects, LarAgent would not be possible without them:
The MIT License (MIT). Please see License File for more information.
Please see Planned for more information on the future development of LarAgent.