1. Go to this page and download the library: Download carmelosantana/php-agents 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/ */
carmelosantana / php-agents example snippets
declare(strict_types=1);
ent\AbstractAgent;
use CarmeloSantana\PHPAgents\Provider\OllamaProvider;
use CarmeloSantana\PHPAgents\Message\UserMessage;
use CarmeloSantana\PHPAgents\Tool\Tool;
use CarmeloSantana\PHPAgents\Tool\ToolResult;
use CarmeloSantana\PHPAgents\Tool\Parameter\NumberParameter;
$agent = new class(provider: new OllamaProvider(model: 'llama3.2')) extends AbstractAgent {
public function instructions(): string
{
return 'You are a calculator. Use tools to answer math questions.';
}
public function name(): string
{
return 'Calculator';
}
};
$agent->addTool(new Tool(
name: 'add',
description: 'Add two numbers',
parameters: [
new NumberParameter('a', 'First number',
use CarmeloSantana\PHPAgents\Provider\OllamaProvider;
use CarmeloSantana\PHPAgents\Provider\OpenAICompatibleProvider;
use CarmeloSantana\PHPAgents\Provider\AnthropicProvider;
use CarmeloSantana\PHPAgents\Provider\GeminiProvider;
use CarmeloSantana\PHPAgents\Provider\XAIProvider;
use CarmeloSantana\PHPAgents\Provider\MistralProvider;
// Ollama (local — no API key needed)
$provider = new OllamaProvider(model: 'llama3.2');
// OpenAI
$provider = new OpenAICompatibleProvider(
model: 'gpt-4o',
apiKey: getenv('OPENAI_API_KEY'),
);
// Anthropic
$provider = new AnthropicProvider(
model: 'claude-sonnet-4-20250514',
apiKey: getenv('ANTHROPIC_API_KEY'),
);
// Google Gemini
$provider = new GeminiProvider(
model: 'gemini-2.5-flash',
apiKey: getenv('GEMINI_API_KEY'),
);
// xAI (Grok)
$provider = new XAIProvider(
model: 'grok-3',
apiKey: getenv('XAI_API_KEY'),
);
// Mistral
$provider = new MistralProvider(
model: 'mistral-large-latest',
apiKey: getenv('MISTRAL_API_KEY'),
);
// Any OpenAI-compatible endpoint (OpenRouter, Together, Groq, vLLM, etc.)
$provider = new OpenAICompatibleProvider(
model: 'meta-llama/llama-3.1-70b-instruct',
apiKey: getenv('OPENROUTER_API_KEY'),
baseUrl: 'https://openrouter.ai/api/v1',
);
declare(strict_types=1);
namespace MyPackage;
use CarmeloSantana\PHPAgents\Agent\AbstractAgent;
use CarmeloSantana\PHPAgents\Contract\ProviderInterface;
final class DatabaseAgent extends AbstractAgent
{
public function __construct(ProviderInterface $provider)
{
parent::__construct($provider, maxIterations: 10);
}
public function instructions(): string
{
return 'You are a database agent. Query databases and return results.';
}
public function name(): string
{
return 'DatabaseAgent';
}
}
use CarmeloSantana\PHPAgents\Tool\Tool;
use CarmeloSantana\PHPAgents\Tool\ToolResult;
use CarmeloSantana\PHPAgents\Tool\Parameter\StringParameter;
$tool = new Tool(
name: 'word_count',
description: 'Count words in the given text',
parameters: [
new StringParameter('text', 'The text to count words in',
use CarmeloSantana\PHPAgents\Contract\ToolkitInterface;
final class MyToolkit implements ToolkitInterface
{
public function tools(): array
{
return [$this->buildWordCountTool(), /* ... */];
}
public function guidelines(): string
{
return 'Use these tools to analyze text.';
}
}
bash
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.