1. Go to this page and download the library: Download milpa/ai-gateway 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/ */
milpa / ai-gateway example snippets
use Milpa\AiGateway\AgentOrchestrator;
use Milpa\AiGateway\LlmService;
use Milpa\AiGateway\McpClientService;
use Milpa\ToolRuntime\ToolRegistry;
use Psr\Log\NullLogger;
$registry = new ToolRegistry(new NullLogger());
$registry->register(
'get_time',
'Get the current time',
[],
fn () => ['time' => '12:00 PM'],
);
$mcpClient = new McpClientService($registry);
$llm = new LlmService(apiKey: getenv('OPENAI_API_KEY'), model: 'gpt-4o', provider: 'openai');
// LlmService talks HTTP through PSR-18 (Psr\Http\Client\ClientInterface), defaulting to a
// Guzzle client when none is injected — see "Bringing your own HTTP client" below.
$orchestrator = new AgentOrchestrator($llm, $mcpClient);
echo $orchestrator->run('What time is it?');
// -> asks the model, the model requests `get_time`, AgentOrchestrator executes it through
// the registry, feeds the result back, and returns the model's final answer.
interface ToolCallGate
{
// The reason this call does not proceed, or null if it does.
public function refuse(string $tool, array $arguments): ?string;
public function record(string $tool, array $arguments, array $result): void;
}
interface OptionTable
{
public function remove(string $option, string $code, ?string $message = null): void;
public function removed(): array; // the PROJECTION: what the model sees
public function wasRemoved(string $option): bool; // the FACT: did an authority declare it gone?
}