Freek Van der Herten publicó este informe el 8 de octubre de 2026. Spatie lleva dos décadas gestionando su propio soporte al cliente y ahora desarrolla There There, una mesa de ayuda basada en esa experiencia. El servicio se encuentra en beta privada. Las solicitudes de acceso anticipado están disponibles en there-there.app.

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

There There usa IA para acelerar el trabajo del soporte. Una persona lee el ticket, decide la acción y la confirma. El modelo puede recuperar el historial relevante, redactar una respuesta, añadir etiquetas o cerrar un ticket duplicado. Toda la capa de IA está construida sobre el nuevo Laravel AI SDK, cuyo repositorio está en github.com/laravel/ai.

La integración parte de una clase de agente llamada `ThereThereAgent`. Esta clase define el modelo, las instrucciones del sistema, las herramientas disponibles y el historial de conversación que debe reproducirse. Los atributos `#[Temperature(0.3)]` y `#[MaxSteps(10)]` fijan la temperatura y el número máximo de pasos. `model()` obtiene el nombre del modelo desde `config('ai-pricing.default.name')`. `instructions()` renderiza una vista Blade con el workspace, el usuario y el ticket de contexto opcional. `tools()` devuelve un iterable, por lo que las herramientas pueden variar según el contexto.

Las herramientas funcionan como adaptadores orientados a la IA y exponen esquemas JSON tipados. `ChangeTicketStatusTool` recibe el asunto, título o ULID del ticket, el correo de contacto y el nuevo estado. Los estados válidos son `open`, `closed` y `spam`. El controlador valida el valor con `TicketStatus::tryFrom`, busca el ticket mediante `findTicket` y llama a `ChangeTicketStatusAction` cuando encuentra una coincidencia. Un estado no válido o un ticket ausente genera un mensaje de error. Una operación correcta devuelve `result: success`, el título visible del ticket y la etiqueta del estado.

La lógica de negocio permanece en la acción de dominio existente. La herramienta solo conecta el modelo con ese código de la aplicación. Una acción crea `ThereThereAgent` con el workspace, el usuario, el ticket de contexto y el historial sin el último mensaje. Después, `streamingService->stream()` convierte la respuesta del SDK en eventos para el frontend. Van der Herten considera sencillas las abstracciones de agentes y herramientas. Los prompts gestionados con Blade son fáciles de editar, y los esquemas tipados evitan que el modelo deforme sus argumentos. Según él, el equipo apenas ha explorado una parte del SDK.