50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
/**
|
||
* Генерирует системный промт для LLM-роутинга
|
||
* @param {Array} bots - [{ name: 'trip_bot', description: '...' }, ...]
|
||
* @returns {string}
|
||
*/
|
||
export function buildRouterPrompt(bots) {
|
||
console.log('bots',bots);
|
||
// Преобразуем список ботов в текст с описаниями
|
||
const botsBlock = bots.map(
|
||
b => `- "${b.name}": ${b.description || 'Без описания.'}`
|
||
).join('\n')
|
||
|
||
// Примеры (можно вынести отдельно)
|
||
const examples = `
|
||
Вход: "Какая погода завтра в Белграде?"
|
||
Ответ:
|
||
{
|
||
"bot": "weather_bot",
|
||
"reason": "Запрос прогноза погоды на завтра в конкретном городе"
|
||
}
|
||
|
||
Вход: "Забронируй мне командировку в Москву с понедельника"
|
||
Ответ:
|
||
{
|
||
"bot": "trip_bot",
|
||
"reason": "Пользователь оформляет командировку"
|
||
}`.trim()
|
||
|
||
return `
|
||
Ты выступаешь в роли маршрутизатора сообщений между различными подботами в Telegram.
|
||
|
||
На входе ты получаешь только текст сообщения от пользователя.
|
||
|
||
Твоя задача — определить, какому из подботов следует передать сообщение. Ответ строго в формате JSON:
|
||
|
||
{
|
||
"bot": "название_бота",
|
||
"reason": "короткое объяснение маршрута"
|
||
}
|
||
|
||
Вот доступные подботы и их специализация в формаьте (- {name}: {description}):
|
||
|
||
${botsBlock}
|
||
|
||
Если сообщение не удаётся однозначно отнести ни к одному боту или нет бота способного обработать это исключение, укажи "bot": "unknown".
|
||
|
||
|
||
`.trim()
|
||
}
|