56 lines
2.1 KiB
PHP
56 lines
2.1 KiB
PHP
<?php
|
||
|
||
namespace App\Ai\Agents;
|
||
|
||
use Laravel\Ai\Contracts\Agent;
|
||
use Laravel\Ai\Contracts\Conversational;
|
||
use Laravel\Ai\Contracts\HasTools;
|
||
use Laravel\Ai\Contracts\Tool;
|
||
use Laravel\Ai\Messages\Message;
|
||
use Laravel\Ai\Promptable;
|
||
use Stringable;
|
||
|
||
class RouterAgent implements Agent, Conversational, HasTools
|
||
{
|
||
use Promptable;
|
||
|
||
/**
|
||
* Get the instructions that the agent should follow.
|
||
*/
|
||
public function instructions(): Stringable|string
|
||
{
|
||
return 'Ты — маршрутизатор запросов в системе медицинской статистики.
|
||
Твоя задача — определить, к какой категории относится вопрос пользователя:
|
||
|
||
1. "stats" – если вопрос касается показателей работы отделений: загрузка, койко-дни, операции, поступления, выбытия, предоперационные дни, сравнения, тренды.
|
||
2. "support" – если вопрос касается работы с системой, инструкций, регламентов, ошибок, как что-то сделать.
|
||
3. "other" – если вопрос не относится ни к статистике, ни к поддержке (например, общие вопросы, приветствия).
|
||
|
||
Ответ должен быть строго в формате JSON:
|
||
{"route": "stats", "confidence": 0.95, "reason": "вопрос про загрузку отделения"}
|
||
|
||
Оценивай уверенность (confidence) от 0 до 1. Если сомневаешься, выбери наиболее вероятный маршрут.
|
||
Отвечай только JSON.';
|
||
}
|
||
|
||
/**
|
||
* Get the list of messages comprising the conversation so far.
|
||
*
|
||
* @return Message[]
|
||
*/
|
||
public function messages(): iterable
|
||
{
|
||
return [];
|
||
}
|
||
|
||
/**
|
||
* Get the tools available to the agent.
|
||
*
|
||
* @return Tool[]
|
||
*/
|
||
public function tools(): iterable
|
||
{
|
||
return [];
|
||
}
|
||
}
|