Chat
2. PHP Chat Classes & Targets
Agents, Workflows & Chat Tools
Agents, Workflows & Chat Tools
Tokomono\Chat\Services\ChatExecutionService supports three types of targets in Chat::target():
- Laravel AI Agent Class (
Laravel\Ai\Contracts\Agent):public function target(): string { return \App\Ai\Agents\SupportAgent::class; } - Tokomono AI Suite Agent (
Tokomono\AiSuite\Models\Agent): Reference bysync_hashoragent:{sync_hash}:public function target(): string { return 'agent:a1b2c3d4'; } - Tokomono AI Suite Workflow (
Tokomono\AiSuite\Contracts\WorkflowInterface): Reference by Workflow class name orworkflow:{sync_hash}:public function target(): string { return \App\Ai\Workflows\CustomerOnboardingWorkflow::class; }
Sending Locations & Images from the Server
To force the client chat UI to render a Location Map Modal (ChatLocationMessage.vue) or Image Lightbox Modal (ChatImageMessage.vue), attach the built-in tools to your Agent or return a ChatPayloadDto from a Workflow module:
Using AI Tools in an Agent
use Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Contracts\HasTools;
use Laravel\Ai\Promptable;
use Tokomono\Chat\Tools\SendImageToChatTool;
use Tokomono\Chat\Tools\SendLocationToChatTool;
class ConciergeAgent implements Agent, HasTools
{
use Promptable;
public function instructions(): string
{
return 'You are a concierge. Use tools to show locations on a map or display images.';
}
public function tools(): iterable
{
return [
new SendLocationToChatTool,
new SendImageToChatTool,
];
}
}
Returning Typed Payloads from a Workflow Module
use Tokomono\Chat\DTOs\ChatPayloadDto;
// Return a map location card with modal preview:
return ChatPayloadDto::location(52.3676, 4.9041, 'Amsterdam Office')->toArray();
// Return an image card with lightbox modal preview:
return ChatPayloadDto::image('https://example.com/floorplan.png', 'Floorplan')->toArray();