PHP code example of cagri / nexus
1. Go to this page and download the library: Download cagri/nexus 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/ */
cagri / nexus example snippets
use Nexus\Nexus;
$nexus = Nexus::using('openai', 'gpt-4o')
->withApiKey(getenv('OPENAI_API_KEY'))
->create();
$response = $nexus->chat('Hello!');
echo $response->content;
$nexus = Nexus::using('anthropic', 'claude-sonnet-4-20250514')
->withApiKey(getenv('ANTHROPIC_API_KEY'))
->create();
$nexus = Nexus::using('ollama', 'llama3')->create(); // local, no key
$nexus = Nexus::using('custom', 'my-model')
->withBaseUrl('https://my-api.example.com/v1')
->withApiKey('my-key')
->create();
$nexus->stream('Tell me a story.')
->onText(fn (string $chunk) => print($chunk))
->await();
$agent = Nexus::agent()
->withProvider($provider)
->withTools([new CalculatorTool(), new WeatherTool()])
->withMemory(new InMemoryStore())
->withMaxIterations(10)
->build();
$response = $agent->run('What is 1547 * 382?');
#[AsTool(name: 'weather', description: 'Get current weather')]
class WeatherTool extends AttributeTool
{
public function handle(
#[Param(description: 'City name')] string $city,
): string {
return json_encode(['city' => $city, 'temp' => 22]);
}
}
$person = $nexus->structured('Extract: "Ahmet, 28, Istanbul"', PersonInfo::class);
echo $person->name; // Ahmet
$response = $nexus->template(
'Translate "{{text}}" to {{language}}.',
['text' => 'Hello', 'language' => 'French'],
);
use Nexus\Middleware\{RetryMiddleware, CacheMiddleware};
$nexus = Nexus::using('openai', 'gpt-4o')
->withApiKey(getenv('OPENAI_API_KEY'))
->create()
->withMiddleware(new RetryMiddleware(maxRetries: 3))
->withMiddleware(new CacheMiddleware(ttlSeconds: 300));
use Nexus\Memory\{InMemoryStore, FileStore};
$memory = new InMemoryStore(maxMessages: 50); // session-scoped
$memory = new FileStore('/tmp/conversation.json', maxMessages: 100); // persistent
src/
├── Nexus.php, NexusBuilder.php
├── Agent/ Agent, AgentBuilder
├── Config/ ProviderConfig
├── Contract/ ProviderInterface, ToolInterface, MemoryInterface, MiddlewareInterface
├── Enum/ Provider, Role, FinishReason
├── Http/ Client (cURL)
├── Memory/ InMemoryStore, FileStore
├── Message/ Message, MessageBag, ToolCall
├── Middleware/ Pipeline, RetryMiddleware, CacheMiddleware
├── Prompt/ Template
├── Provider/ AbstractProvider, OpenAI, Anthropic, Ollama, OpenAICompatible
├── Response/ Response
├── Stream/ StreamResponse
├── Structured/ SchemaMapper
└── Tool/ AttributeTool, Parameter, ToolRegistry, Attribute/{AsTool, Param}