Files
scud_context_api/llm/schemas.py
T

212 lines
13 KiB
Python

TOOLS_SCHEMA = [
{
"type": "function",
"function": {
"name": "db_get_tasks",
"description": "ПОЛУЧИТЬ СПИСОК ЗАДАЧ ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ. Вызывай СРАЗУ при запросе 'покажи мои задачи' или 'список задач'. ВАЖНОЕ ПРАВИЛО ВЫВОДА: Выводи задачи ЕДИНЫМ плоским списком (нумерованным или маркированным) по порядку ID. КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО группировать задачи по статусам (В процессе, Бэклог, Завершены) или создавать подзаголовки, если оператор явно не попросил о группировке!",
"parameters": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "Фильтр статуса: BACKLOG, IN_PROGRESS или COMPLETED."
}
}
}
}
},
{
"type": "function",
"function": {
"name": "db_get_rules",
"description": "ПОЛУЧИТЬ БАЗУ ЗНАНИЙ ИИ И ПРАВИЛА АРБИТРАЖА (ai_knowledge_base). Вызывай когда пользователь просит показать базу знаний, правила, инструкции или промпты.",
"parameters": {"type": "object", "properties": {}}
}
},
{
"type": "function",
"function": {
"name": "db_update_task_status",
"description": "Изменить статус и/или срок выполнения задачи в реестре.",
"parameters": {
"type": "object",
"properties": {
"task_id": {"type": "string", "description": "Идентификатор задачи, например TASK-17"},
"status": {"type": "string", "description": "Новый статус: COMPLETED, IN_PROGRESS или BACKLOG"},
"due_date": {"type": "string", "description": "Срок выполнения задачи"}
},
"required": ["task_id"]
}
}
},
{
"type": "function",
"function": {
"name": "db_delete_task",
"description": "УДАЛИТЬ ЗАДАЧУ ИЗ РЕЕСТРА ЗАДАЧ. Вызывай ЭТУ ФУНКЦИЮ ВСЕГДА при командах 'удали задачу TASK-XX', 'стереть задачу'. ЗАПРЕЩЕНО использовать эту функцию для работы с системным промптом!",
"parameters": {
"type": "object",
"properties": {
"task_id": {"type": "string", "description": "Идентификатор задачи для удаления, например TASK-18"}
},
"required": ["task_id"]
}
}
},
{
"type": "function",
"function": {
"name": "db_get_snapshots",
"description": "ПОЛУЧИТЬ АКТУАЛЬНЫЙ СПИСОК СНАПШОТОВ ИЗ БАЗЫ SQLITE. Вызывай ЭТУ ФУНКЦИЮ ВСЕГДА, даже если список снапшотов уже есть в истории чата или пользователь просит 'обновить', 'повторить запрос', 'проверить снова'. ЗАПРЕЩЕНО беречь контекст и выводить старые данные из истории!",
"parameters": {
"type": "object",
"properties": {
"date_str": {
"type": "string",
"description": "Точная дата в формате ДД.ММ.ГГГГ (например, '12.08.2026'), взятая из [СИСТЕМНОГО КАЛЕНДАРЯ СЕРВЕРА]."
}
}
}
}
},
{
"type": "function",
"function": {
"name": "db_delete_snapshots",
"description": "УДАЛИТЬ СНАПШОТ(Ы) ИЗ БАЗЫ ДАННЫХ. Вызывай, когда пользователь явно просит удалить конкретный снапшот по ID или все снапшоты за выбранный день.",
"parameters": {
"type": "object",
"properties": {
"snapshot_id": {"type": "string", "description": "Идентификатор снапшота для удаления, например Y20260805-007"},
"day_str": {"type": "string", "description": "Дата в формате ДД.ММ.ГГГГ для удаления всех снапшотов за день"}
}
}
}
},
{
"type": "function",
"function": {
"name": "db_get_current_server_time",
"description": "ПОЛУЧИТЬ ТЕКУЩУЮ ДАТУ, ВРЕМЯ И ДЕНЬ НЕДЕЛИ СЕРВЕРА. Вызывай МГНОВЕННО при любых вопросах пользователя про точное текущее время или текущую дату.",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
},
{
"type": "function",
"function": {
"name": "db_add_task",
"description": "ДОБАВИТЬ НОВУЮ ЗАДАЧУ. Вызывай ЭТУ ФУНКЦИЮ ВСЕГДА, когда пользователь просит 'добавь новую задачу', 'создай задачу', 'поставь задачу'. ЗАПРЕЩЕНО писать о добавлении задачи текстом без вызова этой функции!",
"parameters": {
"type": "object",
"properties": {
"title": {"type": "string", "description": "Краткое описание задачи"},
"priority": {"type": "string", "description": "Приоритет: HIGH, MEDIUM, LOW"},
"module": {"type": "string", "description": "Модуль проекта, например general или services/scud_export"},
"due_date": {"type": "string", "description": "Срок выполнения задачи, например '2026-08-07 12:00'"}
},
"required": ["title"]
}
}
},
{
"type": "function",
"function": {
"name": "db_get_stats",
"description": "ПОЛУЧИТЬ ОБЩУЮ СТАТИСТИКУ БАЗЫ ДАННЫХ. Вызывай, когда пользователь просит показать общую статистику БД, количество записей в таблицах или размер базы.",
"parameters": {"type": "object", "properties": {}}
}
},
{
"type": "function",
"function": {
"name": "db_get_anomalies",
"description": "ПОЛУЧИТЬ ИСТОРИЮ АНОМАЛИЙ СКУД ⟷ 1С. Вызывай при запросах на просмотр аномалий или расхождений. Передавай date_str если пользователь просит аномалии за конкретный день, или увеличенный limit (например 100) если просит все.",
"parameters": {
"type": "object",
"properties": {
"limit": {"type": "integer", "description": "Максимальное количество записей (по умолчанию 100)"},
"date_str": {"type": "string", "description": "Опциональная дата в формате ДД.ММ.ГГГГ"}
}
}
}
},
{
"type": "function",
"function": {
"name": "db_get_session_states",
"description": "ПОЛУЧИТЬ АКТИВНЫЕ СЕССИИ И ПРЕВЬЮ (session_states). Вызывай, когда пользователь просит показать текущие сессии или статус превью.",
"parameters": {"type": "object", "properties": {}}
}
},
{
"type": "function",
"function": {
"name": "db_get_reference",
"description": "ПОЛУЧИТЬ СИСТЕМНЫЙ СПРАВОЧНИК И ПРИМЕРЫ КОМАНД ДЛЯ ОПЕРАТОРА (system_reference). Вызывай ВСЕГДА, когда пользователь спрашивает про возможности ассистента, список команд, примерах промптов или справе по работе с системой.",
"parameters": {
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Фильтр категории: scud, tasks, calendar или system. Если просят всё — не передавай параметр."
}
}
}
}
},
{
"type": "function",
"function": {
"name": "db_preview_prompt_merge",
"description": "СОЗДАТЬ ПРЕВЬЮ ИЗМЕНЕНИЙ СИСТЕМНОГО ПРОМПТА. Вызывай ЭТУ ФУНКЦИЮ ВСЕГДА при запросах на добавление, изменение или удаление пунктов системного промпта.",
"parameters": {
"type": "object",
"properties": {
"prompt_text": {
"type": "string",
"description": "Текст нового пункта для добавления ИЛИ инструкция по удалению/изменению (например: '3.4. Тестовый промпт' или 'удалить пункт 3.4')."
}
},
"required": ["prompt_text"]
}
}
},
{
"type": "function",
"function": {
"name": "db_get_system_prompt",
"description": (
"СИНХРОНИЗИРОВАТЬ И ВЫЧИТАТЬ СИСТЕМНЫЙ ПРОМПТ ИЗ БАЗЫ SQLITE. "
"Ты ОБЯЗАН вызывать ЭТУ ФУНКЦИЮ ВСЕГДА, когда пользователь хочет прочитать, обновить или синхронизировать промпт. "
"ПРИМЕРЫ ВХОДЯЩИХ ЗАПРОСОВ ДЛЯ ВЫЗОВА ЭТОЙ ФУНКЦИИ:\n"
"- 'покажи системный промпт' -> db_get_system_prompt()\n"
"- 'обнови промпт из базы' -> db_get_system_prompt()\n"
"- 'обнови из базы системный промпт' -> db_get_system_prompt()\n"
"- 'загрузи промпт из базы' -> db_get_system_prompt()\n"
"- 'покажи текст системного промпта' -> db_get_system_prompt()\n"
"ЗАПРЕЩЕНО генерировать ответ текстом без предварительного вызова этой функции!"
),
"parameters": {"type": "object", "properties": {}}
}
},
{
"type": "function",
"function": {
"name": "db_confirm_prompt_preview",
"description": "ПОДТВЕРДИТЬ И СОХРАНИТЬ ПРЕВЬЮ ПРОМПТА В БАЗУ. Вызывай этот инструмент СТРОГО тогда, когда пользователь пишет 'подтверждаю', 'да', 'сохраняй', 'применяй' или кликает кнопку Подтвердить.",
"parameters": {"type": "object", "properties": {}}
}
},
{
"type": "function",
"function": {
"name": "db_cancel_prompt_preview",
"description": "ОТМЕНИТЬ ПРЕВЬЮ ПРОМПТА. Вызывай, когда пользователь пишет 'отмена', 'отменить' или отказывается от изменений.",
"parameters": {"type": "object", "properties": {}}
}
}
]