1. Go to this page and download the library: Download twdnhfr/laravel-deepagents library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
twdnhfr / laravel-deepagents example snippets
use Illuminate\Contracts\JsonSchema\JsonSchema;
use Laravel\Ai\Contracts\Tool;
use Laravel\Ai\Tools\Request;
class GetWeather implements Tool
{
public function name(): string
{
return 'get_weather';
}
public function description(): string
{
return 'Get the current weather for a city.';
}
public function handle(Request $request): string
{
return "It's 21°C and sunny in {$request['city']}.";
}
public function schema(JsonSchema $schema): array
{
return ['city' => $schema->string()->description('The city name.')->
use Twdnhfr\LaravelDeepagents\DeepAgent;
$state = DeepAgent::make()
->provider('anthropic') // resolved from config/ai.php
->model('claude-sonnet-4-5') // optional — defaults to the provider's default model
->instructions('You are a helpful weather assistant.')
->tool(new GetWeather)
->run('What should I wear in Berlin today?');
echo $state->finalText;
$state = DeepAgent::make()
->provider('anthropic')
->withTodos()
->instructions('Plan your work with the todo list before acting.')
->run('Research and outline a short article on vector databases');
foreach ($state->todos as $todo) {
echo "[{$todo['status']}] {$todo['content']}\n";
}
use Twdnhfr\LaravelDeepagents\DeepAgent;
use Twdnhfr\LaravelDeepagents\Runtime\RunState;
$agent = DeepAgent::make()
->provider('anthropic')
->tool(new DeleteStaleRecords) // something you don't want running unsupervised
->$call['name']}", $call['arguments']);
}
// …and persist the run while you wait for their decision.
$stored = $state->toJson(); // -> a DB column, cache entry, queued job, etc.
}
// Later, once approved (possibly in a different request):
$final = $agent->resume(RunState::fromJson($stored));
echo $final->finalText;
$state = RunState::fromJson($stored);
$state->approve('tc_1'); // optional — approved is the default
$state->edit('tc_2', ['path' => 'drafts/safe.md']); // run with corrected arguments
$state->reject('tc_3', 'Never email customers directly.'); // skip; the reason becomes the result
$final = $agent->resume($state);
$state = $agent->run('What is the weather in Berlin?');
// ...store $state->toJson()...
// next turn, same conversation:
$state = $agent->continue(RunState::fromJson($stored), 'And in Tokyo?');
echo $state->finalText; // resolves "And in Tokyo?" using the prior turn
$researcher = DeepAgent::make()
->provider('anthropic')
->instructions('You research a topic and return a concise summary.');
$state = DeepAgent::make()
->provider('anthropic')
->subAgent('researcher', 'Researches a topic in depth.', $researcher)
->run('Delegate research on vector databases, then summarize the findings.');
bash
php examples/demo.php
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.