Представьте, что у вас есть личный помощник, который не спит, не ест и не просит повышения. Он знает ваши привычки, предпочтения и цели, и его единственная задача — сделать ваш день максимально продуктивным и сбалансированным. Звучит как фантастика? Уже нет.
Искусственный интеллект перестал быть абстрактной технологией из научно-фантастических фильмов и прочно вошел в нашу повседневность. Он помогает нам выбирать фильмы, общаться с поддержкой и даже управлять домом. Но что, если направить его силу на решение одной из самых насущных проблем современного человека — эффективного планирования времени?
В этой статье мы не только разберем, как ИИ меняет обычную жизнь, но и создадим практическое решение: программу для составления расписания с ИИ. Разместим нашу программу на сервисах от Timeweb Cloud и проанализируем целесообразность создания такого сервиса.
cloud
Что такое ИИ-агент и для чего он нужен
AI-агент (ИИ-агент) — это автономная программная система, которая воспринимает окружающую ее среду с помощью датчиков, обрабатывает эту информацию с помощью моделей искусственного интеллекта и действует через исполнительные механизмы (актуаторы) для достижения определенных целей.
Ключевые характеристики ИИ-агентов включают:
-
Автономность: Агент способен самостоятельно выбирать действия исходя из заданных целей и текущего состояния окружающего мира.
-
Адаптация: Способность адаптироваться к новым условиям и учиться на собственном опыте или поступающей информации.
-
Интеллектуальность: Использование сложных алгоритмов машинного обучения и обработки естественного языка позволяет агентам решать разнообразные задачи, взаимодействовать с людьми и даже улучшать свою производительность со временем.
Ключевая характеристика AI-агента — автономность. В отличие от простого чат-бота, который ждет очередного запроса, агент может самостоятельно разбить сложную цель на подзадачи и последовательно их выполнять.
Простая аналогия:
-
Обычный ИИ-чат (как ChatGPT): Вы спрашиваете: «Как приготовить омлет?». Он дает вам текстовый рецепт.
-
ИИ-агент: Вы говорите: «Я хочу позавтракать омлетом». Агент находит рецепт, проверяет наличие продуктов в вашем «умном» холодильнике, если чего-то не хватает — добавляет это в список покупок, а затем отправляет команду на вашу «умную» плиту, чтобы она разогрелась до нужной температуры.
Так для чего же нужны такие агенты?
Их основная ценность — автоматизация сложных, многошаговых процессов, которые требуют не только знаний, но и принятия решений.
Рассмотрим на примере нашего приложения:
-
Пользователь заполняет данные
-
Данные передаются ИИ-агенту
-
ИИ-агент выполняет действия:
-
-
получает данные в JSON,
-
анализирует данные,
-
выбирает самый оптимальный вариант компоновки занятий,
-
составляет ответ в JSON,
-
отправляет данные в приложение.
-
-
Приложение отдает пользователю расписание
Как мы видим, ИИ-агент самостоятельно выполняет всю задачу — пользователю нужно только дать входную информацию, все остальное агент сделает сам.
Таким образом, ИИ-агент — это следующий шаг в эволюции взаимодействия человека и компьютера: от получения информации к делегированию полномочий. Именно эту мощь мы используем, чтобы создать практический инструмент.
Что такое промпты для агентов и как их правильно писать
Если ИИ-агент — это мощный двигатель, то промпт (prompt) — это его рулевое управление и навигационная система. От того, насколько качественно вы составите промпт, напрямую зависит, прибудет ли ваш агент в нужную точку или заблудится в бескрайних просторах возможных ответов.
Промпт — это не просто вопрос или команда. Это подробная инструкция для языковой модели, которая задает контекст, роль, цель и формат ответа. Думайте об этом как о техническом задании для очень способного, но лишенного собственной инициативы стажера.
Зачем нужно учиться писать промпты?
Плохой промпт: Создай расписание.
Результат: агент, скорее всего, выдаст общую, бесструктурную тираду или шаблонный список, бесполезный на практике.
Хороший промпт дает агенту четкий план действий и ожидания. Давайте разберем его анатомию на примере нашего планировщика.
Эффективный промпт для агента обычно состоит из четырех блоков:
Роль (Role)
Что это: назначение агенту конкретной профессии или области экспертизы.
Зачем: это сужает контекст и заставляет модель использовать специфические знания и шаблоны поведения.
Пример: Ты — опытный персональный ассистент по управлению временем и повышению продуктивности. Ты специализируешься на создании сбалансированных и реалистичных ежедневных расписаний.
Контекст и Цель (Context & Goal)
Что это: описание ситуации, входных данных и конечной цели, которой нужно достичь.
Зачем: дает агенту необходимую информацию для принятия решений.
Пример: Пользователь предоставил список задач на день. Твоя цель — проанализировать их, оценить приоритет и длительность, а затем распределить их по временным слотам, создавая оптимальный график. Учти, что между задачами нужны короткие перерывы.
Задание (Task)
Что это: четкое, пошаговое описание того, что именно должен сделать агент.
Зачем: предотвращает недопонимание и задает алгоритм работы.
Пример:
Твои действия:
— проанализируй предоставленный список задач;
— определи приоритет каждой задачи (высокий, средний, низкий);
— оцени предполагаемую длительность выполнения каждой задачи;
— распредели задачи в порядке убывания приоритета, учитывая их длительность и необходимость перерывов;
— если пользователь указал фиксированные события (например, «обед в 13:00»), учти их как неизменяемые.
Формат вывода (Output Format)
Что это: точное указание, в каком виде должен быть представлен ответ.
Зачем: это критически важно для последующей автоматической обработки! Агент вернет структурированные данные, которые наша программа сможет прочитать и использовать, а не простой текст.
Пример:
Представь результат ИСКЛЮЧИТЕЛЬНО в виде валидного JSON-объекта со следующей структурой:
{
"schedule": [
{
"time_slot": "09:00 - 10:30",
"task": "Написание отчета",
"priority": "Высокий",
"duration_minutes": 90
}
...
]
}
Не добавляй никаких поясняющих комментариев до или после JSON.
Пример плохого и хорошего промпта для нашего агента
Плохой промпт (слишком абстрактный):
«Вот мои дела: написать отчет, сходить в спортзал, прочитать книгу. Сделай расписание.»
Хороший, эффективный промпт:
Роль: Ты — персональный ассистент-планировщик.
Контекст: Пользователь должен выполнить следующие задачи: «Написать отчет (сложная задача)», «Сходить в спортзал», «Прочитать 3 главы книги». Начало рабочего дня в 9:00.
Задание: Проанализируй задачи, оцени их сложность и приоритет. Создай сбалансированное расписание, чередуя сложные и легкие задачи. Не забудь добавить перерыв 15 минут после каждой часовой задачи.
Формат вывода: Представь ответ в виде JSON-массива с полями: time_slot, task, priority. Больше ничего.
Именно такой структурированный подход к созданию промптов мы и будем использовать при написании кода нашего ИИ-агента в следующих разделах. Это превратит его из «угадывателя» ваших желаний в точный и предсказуемый инструмент.
Написание кода платформы для создания расписания при помощи ИИ
Мы напишем простую платформу, задача которой — получить от пользователя данные о группах, педагогах и кабинетах, отправить запрос к агенту и вывести результат. Для реализации будем использовать следующий стек: HTML + CSS + JS для frontend-части и Python (Flask) для backend.
Найти код проекта вы можете на GitHub.
После копирования проекта не забудьте установить необходимые зависимости с помощью команды:
pip install -r requirements.txt
Frontend
Веб-интерфейс на чистом HTML/CSS/JS с тремя основными блоками:
Управление данными (левая колонка):
-
вкладки для переключения между педагогами, группами и кабинетами;
-
формы добавления новых сущностей с базовой валидацией;
-
списки созданных элементов с возможностью удаления;
-
локальное сохранение данных в браузере.
Создание расписания (правая колонка):
-
выбор групп через multiple select;
-
настройка параметров: день недели, время работы, комментарии для ИИ;
-
кнопка генерации расписания.
Визуализация результатов:
-
таблица расписания с днями недели и временными слотами;
-
цветовое кодирование кабинетов;
-
компактные карточки занятий с основной информацией.
Ключевые особенности:
-
Single Page Application — все работает без перезагрузок;
-
интуитивное управление;
-
визуальная обратная связь — загрузка, ошибки, результаты;
-
автосохранение — данные не теряются при обновлении страницы.
Техническая реализация:
-
чистый JavaScript без фреймворков;
-
CSS Grid/Flexbox для верстки;
-
LocalStorage API для сохранения данных;
-
Fetch API для общения с бэкэндом;
-
ES6 + синтаксис с async/await.
Интерфейс фокусируется на простоте использования — минимум действий для получения готового расписания.
Backend
Flask-приложение на Python с REST API для генерации учебных расписаний. Использует ИИ для оптимизации и имеет fallback-алгоритм.
Мы разберем два примера подключения к ИИ-агенту: при помощи прямого API и с использованием библиотеки от OpenAI.
Что выбрать: нативный API или использование библиотеки от OpenAI?
Рассмотрим сравнительную таблицу.
|
Критерий |
Нативный API |
Библиотека от OpenAI |
|
Производительность |
✅ Выше (Прямое подключение) |
⚠️ Дополнительный слой абстракции |
|
Контроль |
✅ Полный контроль над запросами |
⚠️ Ограничения библиотеки |
|
Простота |
❌ Больше кода для написания |
✅ Проще в использовании |
|
Поддержка |
❌ Самостоятельная реализация |
✅ Сообщества и обновления |
Как вы заметили, у обоих способов есть свои минусы и ограничения, и нельзя выбрать один лучший метод. Мы рекомендуем использовать нативный API для создания небольших проектов, где нет потребности в большом количестве запросов. Однако если вы создаете серьезный крупный проект, лучше работать с библиотекой: при изменениях в API разработчики сами вносят правки, а вам остается только обновить ее. Кроме того, по библиотекам обычно легче найти документацию и обучающие материалы.
Предварительная подготовка
Создание ИИ-агента от Timeweb Cloud
Перейдем в панель управления в раздел «AI-агенты» и создадим агента. Для примера будем использовать следующую конфигурацию:
-
Модель: GPT 5 mini.
-
Тариф: 500 тыс токенов.
-
Промпт:
Ты эксперт по составлению учебных расписаний. Твоя задача — составить оптимальное расписание занятий учитывая следующие правила:
1. Группы с одинаковыми тегами НЕ должны пересекаться по времени
2. У педагогов НЕ должно быть окон между занятиями
3. В одном кабинете МОЖЕТ быть только одна группа одновременно
4. Если у группы уже назначен кабинет — используй именно его
5. Если кабинет не назначен — распредели группу по свободным кабинетам
6. Расписание должно быть компактным — минимизируй свободное время
7. Учитывай длительность каждого занятия
8. Распредели занятия максимально близко к друг другу
Отвечай ТОЛЬКО в формате JSON без каких-либо пояснений или дополнительного текста.
-
База знаний: оставим пустым.
-
Информация об агенте: заполните по желанию.
Данная конфигурация обойдется в 120 ₽/мес.
Для работы с ИИ-агентом нам понадобятся Access ID и API-токен. Access ID можно найти в параметрах агента, а токен — создать по инструкции.

Эти данные удобно хранить в файле окружения. В директории проекта создайте файл .env и добавьте в него строки:
AI_AGENT_ID="your-access-id"
AI_API_TOKEN="your-api-token"
Чтобы использовать переменные окружения в Python, установим библиотеку python-dotenv:
pip install python-dotenv
Нативный API
Подгружаем переменные в проект:
import os
from dotenv import load_dotenv
load_dotenv()
AI_API_TOKEN = os.getenv('AI_API_TOKEN', 'your_api_token')
AI_AGENT_ID = os.getenv('AI_AGENT_ID', 'your_agent_id')
AI_BASE_URL = f"https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{AI_AGENT_ID}/v1/chat/completions"
Также указываем токен в заголовках:
headers = {
"authorization": f"Bearer {AI_API_TOKEN}", # Токен в заголовке
"content-type": "application/json"
}
Запросы отправляем при помощи модуля requests. Пример функции:
def call_ai_agent(self, messages, max_completion_tokens=2000):
payload = {
"model": "model",
"messages": messages,
"max_completion_tokens": max_completion_tokens,
"stream": False
}
response = requests.post(
AI_BASE_URL,
json=payload,
headers=headers,
timeout=180
)
Библиотека от OpenAI
Для работы с библиотекой установим ее командой:
pip install openai
Подгружаем переменные:
import os
from dotenv import load_dotenv
load_dotenv()
self.ai_api_token = os.getenv('AI_API_TOKEN', 'your_api_token')
self.ai_agent_id = os.getenv('AI_AGENT_ID', 'your_agent_id')
self.ai_base_url = f"https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{self.ai_agent_id}/v1"
Подключаемся к агенту:
client = OpenAI(
api_key=self.ai_api_token,
base_url=self.ai_base_url,
http_client=DefaultHttpxClient()
)
Отправляем запрос:
resp = client.chat.completions.create(
model="my-model",
messages=[{"role": "user", "content": "Hello"}]
)
Структура проекта
Основные компоненты:
-
API Endpoints:
-
GET /— отдает главную страницу; -
POST /generate-schedule— основная функция генерации расписания; -
GET /health— проверяет статус сервера; -
GET /test-ai— тестирует подключения к ИИ. -
Класс
ScheduleOptimizer:
Центральный класс, отвечающий за логику составления расписания.
Основные методы:
-
-
optimize_schedule()— главный метод оптимизации; -
call_ai_agent()— взаимодействие с ИИ-агентом; -
_basic_schedule()— резервный алгоритм без ИИ.
-
Бизнес-логика:
-
Правила оптимизации:
-
группы с одинаковыми тегами не пересекаются;
-
у педагогов нет «окон» между занятиями;
-
в кабинете только одна группа одновременно;
-
учет назначенных кабинетов и педагогов.
-
Обработка данных:
-
валидация входных параметров;
-
нормализация структур данных;
-
обработка ошибок и исключений.
Система обеспечивает надежную генерацию расписания даже при проблемах с внешними сервисами благодаря встроенному алгоритму.
Теперь можете запустить приложение проверить корректность его работы.
Подготовили для вас выгодные тарифы на облачные серверы
Заключение
В статье мы разработали полнофункциональную систему для автоматического составления расписания. Решение сочетает простой веб-интерфейс с интеллектуальным бэкендом, использующим ИИ для оптимизации.
Основные преимущества:
-
полный цикл работы в одном интерфейсе;
-
умное распределение с учетом всех ограничений;
-
автономная работа при проблемах с ИИ;
-
простое управление без технических знаний.
Система готова к использованию и может служить основой для создания более сложных систем с использованием ИИ.
