1. Go to this page and download the library: Download particle-academy/charlotte 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/ */
particle-academy / charlotte example snippets
use Charlotte\Brief\Brief;
use Charlotte\Facades\Charlotte;
// Once, in a service provider:
Charlotte::resolveTenantUsing(fn ($request) => (string) $request->user()->current_team_id);
Charlotte::authorizeUsing(fn ($user, string $ability, array $subject): bool => $user->can('charlotte.'.$ability));
Charlotte::routes();
// In your controller:
$session = Charlotte::for($request->user())
->tenant((string) $team->getKey())
->page('home')
->brief(Brief::fromArray($validated['brief']))
->autonomy('approve_on_save')
->open();
$cursor = $session->send('Build the landing page from the brief.', (string) $request->user()->getKey());
// A queue worker runs the turn; clients poll GET /charlotte/sessions/{id}/events?after=<cursor>&wait=20
use Charlotte\Facades\Charlotte;
use Charlotte\Runtime\Turn;
use Prism\Harness\Subagents\RunBudget;
use Prism\Harness\Subagents\RunContext;
Charlotte::contextUsing(function (Turn $turn) use ($budgets): ?RunContext {
$account = $budgets->for($turn->session->tenant, $turn->session->page);
if ($account === null) {
return null; // harness defaults for this turn
}
return RunContext::root('charlotte-'.$turn->session->id,
new RunBudget(maxSteps: 40, maxCostUsd: $account->remainingUsd(), maxOutputTokensPerCall: 4096),
pricing: $account->pricing(), // [provider => [model => ['inputPerMTok' => .., 'outputPerMTok' => .., 'toolOverheadTokens' => ..]]]
observer: $account->observer(), // your CallCostObserver: reserve, then settle, every provider call
);
});