Add new file

parent 9228bfb9
## Задание 1.1.
*Разработайте (на основе представленных преподавателем и найденных самостоятельно справочных материалов) сценарий диалога для бота, использующегося в рамках электронного обучения в выбранной вами предметной области. Модель представьте в виде диаграммы.*
---
### Введение
В рамках задания разработан сценарий диалога для образовательного чат-бота **«MathTutorBot»** в предметной области **«Математика» (9–11 классы, подготовка к ОГЭ и ЕГЭ)**. Бот ориентирован на сопровождение учебного процесса: помощь в решении задач, объяснение теоретического материала, проверка знаний и рекомендация индивидуальной траектории обучения.
Сценарий представлен в виде:
1. **Текстового описания** ключевых диалоговых веток
2. **Диаграммы в формате BPMN / flowchart** (в текстовом описании с использованием символов псевдографики)
3. **Спецификации состояний, интентов и сущностей**
---
### 1. Общая характеристика бота
| Параметр | Значение |
|----------|----------|
| **Название бота** | MathTutorBot |
| **Предметная область** | Математика (алгебра, геометрия, теория вероятностей) |
| **Целевая аудитория** | Учащиеся 9–11 классов, абитуриенты |
| **Основные функции** | Решение задач, объяснение теории, генерация заданий, проверка ответов, анализ ошибок, подготовка к ОГЭ/ЕГЭ |
| **Платформа** | Telegram / VK / веб-интерфейс |
| **Тип архитектуры** | Гибридная (правила + LLM с RAG) |
---
### 2. Ключевые интенты и сущности бота
#### 2.1. Интенты (намерения пользователя)
| Интент | Описание | Пример запроса |
|--------|----------|----------------|
| **solve_problem** | Решить конкретную задачу | «Реши уравнение x² – 5x + 6 = 0» |
| **explain_theory** | Объяснить теоретический материал | «Объясни теорему Пифагора» |
| **generate_task** | Сгенерировать задание для тренировки | «Дай задание на квадратные уравнения» |
| **check_answer** | Проверить ответ пользователя | «Мой ответ: 2 и 3» (в контексте решения) |
| **mistake_analysis** | Разобрать ошибку | «Почему мой ответ неправильный?» |
| **exam_prepare** | Подготовка к экзамену (ОГЭ/ЕГЭ) | «Хочу подготовиться к ЕГЭ по математике» |
| **recommend_material** | Рекомендовать материалы для изучения | «Что почитать по тригонометрии?» |
| **test_me** | Пройти тест | «Протестируй меня по геометрии» |
| **help** | Помощь в работе с ботом | «Что ты умеешь?», «Помощь» |
| **cancel** | Отмена текущего действия | «Отмена», «Назад» |
| **menu** | Вызов главного меню | «Меню» |
#### 2.2. Сущности (параметры запроса)
| Сущность | Описание | Примеры |
|----------|----------|---------|
| **topic** | Тема математики | квадратные уравнения, теорема Пифагора, производная, логарифмы |
| **grade** | Класс / уровень сложности | 9 класс, 10 класс, 11 класс, ОГЭ, ЕГЭ (профиль), ЕГЭ (база) |
| **problem_type** | Тип задачи | уравнение, неравенство, задача на проценты, планиметрия |
| **difficulty** | Уровень сложности | лёгкий, средний, сложный |
| **format** | Формат задания | тест, открытый вопрос, задача с развёрнутым ответом |
| **number** | Номер задания в экзамене | задание 9, задание 13, задание 15 |
---
### 3. Сценарий диалога: текстовое описание
#### 3.1. Сценарий 1. Решение задачи (основной поток)
**Контекст:** Пользователь обращается к боту с запросом на решение задачи.
| № | Роль | Сообщение / Действие | Системное действие |
|---|------|---------------------|-------------------|
| 1 | **Пользователь** | Реши уравнение 2x² – 7x + 3 = 0 | Ввод текста |
| 2 | **Бот** | *(распознаёт интент solve_problem, извлекает уравнение)* | Вызов LLM + RAG для проверки типа уравнения |
| 3 | **Бот** | Это квадратное уравнение. Решим его по формуле дискриминанта: D = b² – 4ac = (–7)² – 4·2·3 = 49 – 24 = 25. √D = 5. x₁ = (7 – 5)/(2·2) = 2/4 = 0,5; x₂ = (7 + 5)/4 = 12/4 = 3. Ответ: 0,5 и 3. Понятно ли решение? (Да / Нет / Нужно подробнее) | Вывод решения |
| 4 | **Пользователь** | Нужно подробнее |
| 5 | **Бот** | *(разворачивает детальное объяснение)* | Детализация шагов |
| 6 | **Бот** | Хотите решить похожее задание самостоятельно? (Да / Нет) | Предложение генерации |
| 7 | **Пользователь** | Да |
| 8 | **Бот** | *(генерирует задание)* | Генерация через LLM |
| 9 | **Бот** | Решите уравнение: 3x² – 10x + 3 = 0. Введите ответ (два корня через запятую). |
| 10 | **Пользователь** | 1/3 и 3 |
| 11 | **Бот** | *(проверка ответа)* | Сравнение с правильным |
| 12 | **Бот** | Правильно! Отлично справились. Хотите разобрать другой тип задач? (Квадратные уравнения / Неравенства / Другое) | Завершение цикла |
---
#### 3.2. Сценарий 2. Проверка ответа с разбором ошибки
**Контекст:** Пользователь дал неправильный ответ, бот помогает разобрать ошибку.
| № | Роль | Сообщение / Действие | Системное действие |
|---|------|---------------------|-------------------|
| 1 | **Пользователь** | Реши уравнение x² – 4x – 5 = 0 |
| 2 | **Бот** | D = 16 + 20 = 36, √D = 6. x₁ = (4 – 6)/2 = –1; x₂ = (4 + 6)/2 = 5. Ответ: –1 и 5. Хотите решить похожее? |
| 3 | **Пользователь** | Да |
| 4 | **Бот** | Решите: x² – 6x + 8 = 0 |
| 5 | **Пользователь** | 2 и 4 |
| 6 | **Бот** | *(проверка)* | Вычисление: D = 36 – 32 = 4, √D = 2, x₁ = (6–2)/2 = 2, x₂ = (6+2)/2 = 4 |
| 7 | **Бот** | ✅ Правильно! |
| 8 | **Пользователь** | Ещё задание |
| 9 | **Бот** | Решите: x² – 3x – 10 = 0 |
| 10 | **Пользователь** | 5 и –2 |
| 11 | **Бот** | *(проверка)* | Вычисление: D = 9 + 40 = 49, √D = 7, x₁ = (3–7)/2 = –2, x₂ = (3+7)/2 = 5 |
| 12 | **Бот** | ✅ Правильно! Отлично, вы усвоили тему квадратных уравнений. Хотите перейти к более сложным заданиям (неравенства) или повторить? | Адаптивная рекомендация |
---
#### 3.3. Сценарий 3. Генерация теста для подготовки к ЕГЭ
**Контекст:** Пользователь хочет пройти тест в формате ЕГЭ по определённой теме.
| № | Роль | Сообщение / Действие | Системное действие |
|---|------|---------------------|-------------------|
| 1 | **Пользователь** | Подготовь меня к ЕГЭ по заданию 9 (уравнения) |
| 2 | **Бот** | *(распознаёт интенты: exam_prepare, topic=уравнения, number=9)* | Загрузка базы заданий |
| 3 | **Бот** | Задание 9 ЕГЭ профиль — уравнения. Я подготовлю для вас 5 заданий. Готовы? (Да / Нет) | |
| 4 | **Пользователь** | Да |
| 5 | **Бот** | **Задание 1 из 5.** Решите уравнение: √(3x – 2) = x – 2. Введите ответ (число). | Вывод задания |
| 6 | **Пользователь** | 3 |
| 7 | **Бот** | *(проверка)* | Вычисление: ОДЗ: x ≥ 2, x ≥ 2/3 → x ≥ 2. 3x–2 = (x–2)² → 3x–2 = x² –4x +4 → 0 = x² –7x +6 → x=1 или x=6. По ОДЗ x=6. Ответ: 6 |
| 8 | **Бот** | Неверно. Правильный ответ: 6. Разберём решение? (Да / Нет) | Анализ ошибки |
| 9 | **Пользователь** | Да |
| 10 | **Бот** | *(детальное объяснение с акцентом на ОДЗ)* | Детализация |
| 11 | **Бот** | Переходим к заданию 2 из 5? (Да / Нет) | |
| 12 | **Пользователь** | Да |
| ... | ... | ... | ... |
| 13 | **Бот** | Тест завершён. Ваш результат: 4 из 5. Рекомендую повторить тему «Иррациональные уравнения и ОДЗ». Вот видеоурок по ссылке: [ссылка]. Хотите пройти тест заново или перейти к другой теме? | Формирование отчёта и рекомендаций |
---
#### 3.4. Сценарий 4. Главное меню и навигация
**Контекст:** Пользователь вызывает главное меню для навигации.
| № | Роль | Сообщение / Действие | Системное действие |
|---|------|---------------------|-------------------|
| 1 | **Пользователь** | Меню |
| 2 | **Бот** | 📚 **Главное меню MathTutorBot** | Вывод инлайн-кнопок |
| 3 | **Бот** | Выберите действие: | |
| 4 | **Бот** | 🔢 **Решить задачу** — введите уравнение или задачу | |
| 5 | **Бот** | 📖 **Объяснить тему** — введите тему (например, «теорема Пифагора») | |
| 6 | **Бот** | ✍️ **Сгенерировать задание** — выберите тему и сложность | |
| 7 | **Бот** | 📊 **Подготовка к ЕГЭ/ОГЭ** — выберите номер задания | |
| 8 | **Бот** | 📈 **Мой прогресс** — посмотреть статистику | |
| 9 | **Бот** | ❓ **Помощь** — инструкция по работе | |
| 10 | **Пользователь** | *(выбирает пункт меню)* | Обработка выбора |
---
### 4. Диаграмма сценария диалога
Ниже представлена диаграмма в формате flowchart (блок-схема), отражающая логику взаимодействия пользователя с ботом MathTutorBot.
```
┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ MathTutorBot — ДИАГРАММА ДИАЛОГА │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────┐
│ СТАРТ / MENU │
│ Пользователь │
└──────────┬──────────┘
┌───────────────────────────────────────┐
│ РАСПОЗНАВАНИЕ ИНТЕНТА │
│ (NLU / Классификатор) │
└───────────────────────────────────────┘
┌────────────────┬───────────────┬───────────┼───────────┬────────────────┬────────────────┐
│ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ solve_problem │ │ explain_theory │ │ generate_task │ │ test_me │ │ exam_prepare │ │ help │
│ (решение │ │ (объяснение │ │ (генерация │ │ (тестирование) │ │ (подготовка │ │ (справка) │
│ задачи) │ │ теории) │ │ заданий) │ │ │ │ к экзамену) │ │ │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Извлечение │ │ Поиск в базе │ │ Запрос парамет- │ │ Выбор темы │ │ Выбор экзамена │ │ Вывод списка │
│ уравнения/ │ │ знаний (RAG) │ │ ров: тема, │ │ и сложности │ │ (ОГЭ/ЕГЭ) │ │ команд и │
│ задачи │ │ │ │ сложность │ │ │ │ и номера │ │ возможностей │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Проверка типа │ │ Формирование │ │ Генерация │ │ Вывод тестовых │ │ Загрузка банка │ │ Возврат в │
│ задачи: │ │ ответа с │ │ задания через │ │ вопросов │ │ заданий по │ │ главное меню │
│ уравнение, │ │ объяснением │ │ LLM / шаблон │ │ (по 1 вопросу) │ │ выбранному │ │ │
│ неравенство, │ │ │ │ │ │ │ │ номеру │ │ │
│ геометрия и др. │ │ │ │ │ │ │ │ │ │ │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ │
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ Вывод решения │ │ Вывод объяснения│ │ Вывод задания │ │ Приём ответа │ │ Цикл по │ │
│ + предложение │ │ + предложение │ │ + приём ответа │ │ пользователя │ │ заданиям (1–5) │ │
│ уточнить │ │ задать вопрос │ │ │ │ │ │ │ │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │ │ │
└────────────────────┼────────────────────┼────────────────────┼────────────────────┘ │
│ │ │ │
▼ ▼ ▼ │
┌─────────────────────────────────────────────────────────────────┐ │
│ ПРОВЕРКА ОТВЕТА │ │
│ Сравнение с правильным / LLM-оценка / анализ ошибок │ │
└─────────────────────────────────────────────────────────────────┘ │
│ │
┌───────────────────────┼───────────────────────┐ │
│ │ │ │
▼ ▼ ▼ │
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ Ответ верный │ │ Ответ неверный │ │ Частично │ │
│ │ │ │ │ верный │ │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
▼ ▼ ▼ │
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ Поздравление │ │ Разбор ошибки │ │ Уточнение │ │
│ + предложение │ │ + детальное │ │ + подсказка │ │
│ продолжить │ │ объяснение │ │ │ │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
└───────────────────────┼───────────────────────┘ │
│ │
▼ │
┌─────────────────────┐ │
│ ЗАВЕРШЕНИЕ ЦИКЛА │ │
│ Предложение: │ │
│ - новое задание │ │
│ - другая тема │ │
│ - рекомендации │ │
│ - вернуться в меню │ │
└─────────────────────┘ │
│ │
└───────────────────────────────────────────────────────┘
┌─────────────────────────┐
│ СОХРАНЕНИЕ РЕЗУЛЬТАТОВ │
│ (база данных: прогресс, │
│ ошибки, рекомендации) │
└─────────────────────────┘
┌─────────────────────────┐
│ ВОЗВРАТ В ГЛАВНОЕ МЕНЮ │
│ или завершение сеанса │
└─────────────────────────┘
```
---
### 5. Спецификация диалоговых состояний
Для реализации сценария бот должен поддерживать следующие состояния:
| Состояние | Описание | Входные интенты | Выходные состояния |
|-----------|----------|-----------------|-------------------|
| **idle** | Ожидание команды пользователя | Любой | в зависимости от интента |
| **solving** | Решение задачи (основной поток) | solve_problem | verifying, idle |
| **explaining** | Объяснение теории | explain_theory | idle |
| **generating** | Генерация задания (ожидание параметров) | generate_task, выбор темы | verifying |
| **verifying** | Проверка ответа пользователя | check_answer, ввод ответа | result_feedback |
| **result_feedback** | Вывод результата и разбор ошибки | — | generating, idle |
| **testing** | Прохождение теста (множество вопросов) | test_me, ответы | testing_result |
| **exam_prep** | Подготовка к экзамену (выбор номера) | exam_prepare | testing |
| **menu** | Главное меню | menu, help, cancel | idle |
| **recommend** | Рекомендация материалов | recommend_material | idle |
---
### 6. Пример реализации ключевой ветки (код-схема на псевдокоде)
```python
# Псевдокод для ветки "Решение задачи"
async def handle_solve_problem(user_input, user_state):
# 1. Извлечение уравнения/задачи
equation = extract_equation(user_input)
# 2. Определение типа задачи
problem_type = classify_problem(equation) # quadratic, linear, irrational, etc.
# 3. Решение через LLM + RAG (или через математический движок)
solution = await solve_with_llm(equation, problem_type)
# 4. Вывод решения
await send_message(f"Решение: {solution['steps']}\nОтвет: {solution['answer']}")
# 5. Запрос на уточнение
user_state = "solving_clarify"
await send_buttons(["Понятно", "Нужно подробнее", "Похожее задание"])
return user_state
async def handle_clarify(user_input, user_state, equation, solution):
if user_input == "Нужно подробнее":
detailed = await get_detailed_solution(equation, solution)
await send_message(detailed)
elif user_input == "Похожее задание":
new_task = await generate_similar_task(equation)
await send_message(f"Решите: {new_task['text']}")
user_state = "awaiting_answer"
user_context["correct_answer"] = new_task['answer']
return user_state
```
---
### 7. Вывод
Разработан сценарий диалога для образовательного чат-бота **MathTutorBot** в предметной области «Математика». Сценарий включает:
1. **Текстовое описание 4 ключевых диалоговых веток:**
- Решение задачи (основной поток)
- Проверка ответа с разбором ошибки
- Генерация теста для подготовки к ЕГЭ
- Главное меню и навигация
2. **Диаграмму в формате flowchart**, отображающую:
- Распознавание интентов
- Основные ветки диалога
- Процесс проверки ответов
- Обработку ошибок
- Сохранение результатов и возврат в меню
3. **Спецификацию интентов, сущностей и состояний**, необходимых для реализации бота.
Сценарий построен на **гибридной архитектуре**, сочетающей:
- **Правило-ориентированную логику** для чётких сценариев (меню, тесты, навигация)
- **LLM с RAG** для решения задач, объяснения теории и генерации заданий
Разработанная модель может быть реализована на платформе Telegram Bot API с использованием YandexGPT API или GigaChat API, а также интегрирована с Moodle для сохранения прогресса и выдачи персонализированных рекомендаций.
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment