Freek Van der Herten a publié ce retour le 8 octobre 2026. Spatie gère son propre support client depuis vingt ans et développe maintenant There There, un helpdesk conçu à partir de cette expérience. Le service est en bêta privée. Les demandes d'accès anticipé passent par there-there.app.

agent-call.php
<?php
$agent = new ThereThereAgent(
    workspace: $workspace,
    user: $user,
    contextTicket: $agentChat->contextTicket,
    conversationHistory: $agentChat->getConversationHistoryExcludingLatest(),
);

There There emploie l'IA pour accélérer le travail du support. Un humain lit le ticket, choisit l'action et la confirme. Le modèle peut retrouver l'historique pertinent, préparer une réponse, ajouter des tags ou fermer un doublon. Toute la couche IA repose sur le nouveau Laravel AI SDK, dont le dépôt se trouve sur github.com/laravel/ai.

L'intégration commence par une classe d'agent nommée `ThereThereAgent`. Elle définit le modèle, les instructions système, les outils disponibles et l'historique de conversation à rejouer. Les attributs `#[Temperature(0.3)]` et `#[MaxSteps(10)]` règlent la température et le nombre maximal d'étapes. `model()` lit le nom du modèle depuis `config('ai-pricing.default.name')`. `instructions()` rend une vue Blade avec le workspace, l'utilisateur et le ticket de contexte éventuel. `tools()` renvoie un iterable, ce qui permet d'adapter les outils au contexte.

Les outils servent d'adaptateurs entre le modèle et l'application. Ils exposent des schémas JSON typés qui valident les arguments avant l'exécution. `ChangeTicketStatusTool` attend le sujet, le titre ou l'ULID du ticket, l'adresse e-mail du contact et un nouveau statut. Les valeurs acceptées sont `open`, `closed` et `spam`. Le handler vérifie la valeur avec `TicketStatus::tryFrom`, cherche le ticket via `findTicket` et appelle `ChangeTicketStatusAction` lorsqu'il trouve une correspondance. Un statut invalide ou un ticket absent produit un message d'erreur. En cas de succès, la réponse contient `result: success`, le titre affiché du ticket et le libellé du statut.

La logique métier reste dans l'action de domaine existante. L'outil fait uniquement le lien avec le modèle. Une action instancie `ThereThereAgent` avec le workspace, l'utilisateur, le ticket de contexte et l'historique sans le dernier message. `streamingService->stream()` transforme ensuite la réponse du SDK en événements consommés par le frontend. Freek Van der Herten trouve les abstractions d'agents et d'outils simples à utiliser. Les prompts gérés par Blade sont faciles à modifier, et les schémas typés empêchent le modèle de mal renseigner ses arguments. Selon lui, l'équipe n'a encore exploré qu'une petite partie du SDK.