Пошаговые инструкции intermediate 31 мин

Как сделать ИИ-агента для обучения и онбординга

Пошаговая инструкция от нуля до обучающего агента: LMS, RAG по материалам, маршрут обучения, проверки знаний, прогресс, наставник и отчеты.

RAG AI-агенты обучение онбординг LMS Moodle Google Classroom Open edX

Что получится в результате

Соберем ИИ-агента для обучения и онбординга, который помогает новичку или ученику пройти путь от первого входа до проверяемого результата: выдает маршрут обучения, отвечает только по материалам, объясняет сложные места, задает контрольные вопросы, фиксирует прогресс, сообщает наставнику о рисках и синхронизирует результаты с LMS.

Рабочая версия будет делать так:

  1. настройки хранятся в `settings`;
  2. программы обучения хранятся в `learning_programs`;
  3. роли учеников хранятся в `learner_roles`;
  4. участники обучения хранятся в `learners`;
  5. наставники хранятся в `mentors`;
  6. модули курса хранятся в `course_modules`;
  7. уроки хранятся в `lesson_catalog`;
  8. учебные материалы хранятся в `learning_materials`;
  9. фрагменты материалов хранятся в `knowledge_chunks`;
  10. embeddings и ссылки на фрагменты хранятся в `retrieval_index`;
  11. маршрут обучения хранится в `learning_paths`;
  12. события прогресса хранятся в `progress_events`;
  13. вопросы ученика хранятся в `learner_questions`;
  14. ответы агента хранятся в `answer_log`;
  15. контрольные вопросы хранятся в `knowledge_checks`;
  16. попытки ответов хранятся в `check_attempts`;
  17. слабые темы хранятся в `weak_topics`;
  18. рекомендации по следующему шагу хранятся в `next_step_queue`;
  19. задачи наставнику хранятся в `mentor_tasks`;
  20. спорные ответы уходят в `approval_queue`;
  21. синхронизация с LMS пишется в `lms_sync_queue`;
  22. результаты обучения хранятся в `learning_results`;
  23. еженедельный отчет пишется в `weekly_learning_report`;
  24. все решения пишутся в `audit_log`;
  25. ошибки интеграций пишутся в `error_log`.

В первой версии агент не ставит финальные оценки, не увольняет и не “проваливает” сотрудника, не меняет LMS-курс, не выдает ответы без ссылок на материалы и не сохраняет лишние персональные данные. Он помогает учиться, фиксирует прогресс и подсказывает наставнику, где нужна помощь.

Что понадобится

  • n8n Cloud или self-hosted n8n.
  • Google Sheets для MVP-таблиц.
  • LMS: Moodle, Google Classroom, Open edX или выгрузка курса в таблицах.
  • База знаний: Google Docs, Notion, Confluence, Markdown, PDF или HTML-страницы.
  • Хранилище embeddings: pgvector, Qdrant, Pinecone, Chroma или другой векторный индекс.
  • Тестовая группа учеников или один пилотный сотрудник.
  • Список ролей и ожидаемых результатов обучения.
  • Наставник или HR/learning manager, который подтверждает программу и спорные ответы.
  • Канал уведомлений: Telegram, Slack, Teams или email.
  • API-ключ LLM-провайдера.

Шаг 1. Выберите первый сценарий обучения

Не начинайте с “агент обучает всех всему”. Для MVP выберите один сценарий.

Подходящие варианты:

  1. онбординг нового сотрудника;
  2. обучение операторов поддержки;
  3. обучение продажам по продукту;
  4. адаптация менеджера в CRM;
  5. курс по внутренним регламентам;
  6. обучение клиентов продукту;
  7. повторение слабых тем после теста.

Самый безопасный старт: `роль -> маршрут из 5 модулей -> ответы по материалам -> мини-тест -> задача наставнику`.

Проверка: сценарий можно пройти одним тестовым пользователем за 30-60 минут.

Шаг 2. Запретите опасные действия

В первой версии запретите агенту:

  1. ставить финальную оценку;
  2. менять статус сотрудника;
  3. менять курс в LMS;
  4. записывать оценки в LMS без approval;
  5. отвечать без найденного материала;
  6. придумывать регламенты;
  7. хранить лишние персональные данные;
  8. показывать материалы не той роли;
  9. выдавать ответы на экзамен;
  10. делать вывод “сотрудник не подходит”;
  11. отправлять руководителю чувствительные выводы без проверки;
  12. использовать приватные документы для обучения модели.

Разрешите агенту:

  1. читать программу;
  2. читать учебные материалы;
  3. искать по базе знаний;
  4. объяснять фрагменты;
  5. задавать контрольные вопросы;
  6. фиксировать прогресс;
  7. находить слабые темы;
  8. предлагать следующий шаг;
  9. создавать задачи наставнику;
  10. отправлять спорные ответы в approval.

Проверка: любые оценки, аттестации и спорные выводы должны попадать в `approval_queue`.

Шаг 3. Создайте Google Sheet проекта

Создайте таблицу `learning_agent_mvp`.

Добавьте листы:

settings
learning_programs
learner_roles
learners
mentors
course_modules
lesson_catalog
learning_materials
knowledge_chunks
retrieval_index
learning_paths
progress_events
learner_questions
answer_log
knowledge_checks
check_attempts
weak_topics
next_step_queue
mentor_tasks
approval_queue
lms_sync_queue
learning_results
weekly_learning_report
audit_log
error_log

Проверка: названия листов совпадают один в один, потому что n8n будет обращаться к ним по имени.

Шаг 4. Заполните settings

В `settings` добавьте колонки:

key
value
description

Добавьте строки:

llm_model | gpt-4.1-mini | модель для ответов и проверок
embedding_model | text-embedding-3-small | модель embeddings
default_program_id | PROG-SUPPORT-ONBOARDING | программа по умолчанию
max_chunks_per_answer | 6 | максимум фрагментов в ответе
min_answer_sources | 1 | минимум найденных фрагментов
allow_final_grades | false | финальные оценки запрещены
allow_lms_write | false | запись в LMS только после approval
store_personal_data | minimal | храним минимум данных
approval_channel | telegram | канал согласований
report_channel | email | канал отчетов

Проверка: `allow_final_grades=false` и `allow_lms_write=false`.

Шаг 5. Заполните learning_programs

В `learning_programs` добавьте колонки:

program_id
name
goal
target_role
duration_days
success_criteria
owner
status

Пример:

PROG-SUPPORT-ONBOARDING | Онбординг оператора поддержки | сотрудник умеет отвечать на типовые обращения и знает регламенты | support_operator | 14 | прошел 5 модулей, сдал мини-тесты, разобрал 3 кейса | learning_manager | active

Проверка: у программы есть измеримый результат, а не только название.

Шаг 6. Заполните learner_roles

В `learner_roles` добавьте колонки:

role_id
program_id
role_name
must_know
must_do
restricted_materials
status

Пример:

ROLE-SUPPORT | PROG-SUPPORT-ONBOARDING | оператор поддержки | продукт, SLA, эскалации, тон общения | обработать тикет, найти регламент, оформить эскалацию | finance,hr-private | active

Проверка: агент понимает, какие материалы доступны роли, а какие запрещены.

Шаг 7. Заполните learners

В `learners` добавьте колонки:

learner_id
program_id
role_id
display_name
email_hash
start_date
mentor_id
status

Пример:

LRN-001 | PROG-SUPPORT-ONBOARDING | ROLE-SUPPORT | Анна | sha256:... | 2026-05-23 | MENTOR-001 | active

Не храните лишние персональные данные. Для MVP достаточно ID, роли, наставника и статуса.

Проверка: email хранится как hash или внутренний ID, если полный адрес не нужен.

Шаг 8. Заполните mentors

В `mentors` добавьте колонки:

mentor_id
name
role
contact_channel
contact_ref
responsibility
status

Пример:

MENTOR-001 | Иван | team lead support | telegram | @ivan | проверка кейсов, ответы на сложные вопросы | active

Проверка: у каждого активного ученика есть наставник.

Шаг 9. Создайте course_modules

В `course_modules` добавьте колонки:

module_id
program_id
title
goal
order_number
required
estimated_minutes
status

Пример:

MOD-001 | PROG-SUPPORT-ONBOARDING | Продукт и основные сценарии | понять, что делает продукт и кому он нужен | 1 | yes | 40 | active
MOD-002 | PROG-SUPPORT-ONBOARDING | Регламенты поддержки | научиться находить SLA и правила эскалации | 2 | yes | 50 | active

Проверка: у модулей есть порядок и цель.

Шаг 10. Создайте lesson_catalog

В `lesson_catalog` добавьте колонки:

lesson_id
module_id
title
lesson_type
goal
material_refs
expected_outcome
order_number
status

`lesson_type`:

read
watch
practice
case
quiz
shadowing
mentor_review

Проверка: урок связан с материалами и ожидаемым результатом.

Шаг 11. Создайте learning_materials

В `learning_materials` добавьте колонки:

material_id
lesson_id
title
source_type
source_url
version
access_role
owner
status
updated_at

`source_type`:

google_doc
notion
confluence
pdf
markdown
html
video_transcript
lms_page

Проверка: у материала есть версия и роль доступа.

Шаг 12. Разбейте материалы на knowledge_chunks

В `knowledge_chunks` добавьте колонки:

chunk_id
material_id
lesson_id
heading
chunk_text
source_url
version
access_role
created_at

Правила:

  1. один chunk = один небольшой смысловой фрагмент;
  2. сохраняйте ссылку на исходный материал;
  3. сохраняйте версию;
  4. не смешивайте разные уроки в одном chunk;
  5. не добавляйте закрытые материалы в общедоступный индекс.

Проверка: по каждому ответу агента можно вернуться к конкретному фрагменту.

Шаг 13. Создайте retrieval_index

В `retrieval_index` добавьте колонки:

index_id
chunk_id
embedding_ref
metadata_json
access_role
status
indexed_at

`metadata_json` должен содержать:

{
  "program_id": "PROG-SUPPORT-ONBOARDING",
  "module_id": "MOD-001",
  "lesson_id": "LESSON-001",
  "material_id": "MAT-001",
  "version": "2026-05-23",
  "source_url": "https://..."
}

Проверка: поиск фильтруется по `access_role`, иначе ученик может увидеть лишние материалы.

Шаг 14. Создайте workflow индексации в n8n

Создайте workflow `Learning Agent Index`.

Добавьте узлы:

  1. `Manual Trigger`;
  2. `Read learning_materials`;
  3. `Fetch document text`;
  4. `Split into chunks`;
  5. `Write knowledge_chunks`;
  6. `Create embeddings`;
  7. `Upsert retrieval_index`;
  8. `Write audit_log`;
  9. `Write error_log`.

Проверка: workflow обрабатывает один материал и создает несколько chunks с embeddings.

Шаг 15. Создайте learning_paths

В `learning_paths` добавьте колонки:

path_id
learner_id
program_id
module_id
lesson_id
status
assigned_at
started_at
completed_at

Статусы:

assigned
in_progress
completed
blocked
skipped_by_mentor

Проверка: путь обучения строится из модулей и уроков, а не из произвольных советов агента.

Шаг 16. Создайте progress_events

В `progress_events` добавьте колонки:

event_id
learner_id
program_id
lesson_id
event_type
payload_json
created_at

`event_type`:

lesson_started
lesson_completed
question_asked
answer_read
check_started
check_passed
check_failed
mentor_task_created

Проверка: прогресс фиксируется событиями, а не одним полем “прошел/не прошел”.

Шаг 17. Создайте learner_questions

В `learner_questions` добавьте колонки:

question_id
learner_id
program_id
lesson_id
question_text
context_json
status
created_at

Статусы:

new
answered
needs_material
needs_mentor
blocked_by_access

Проверка: вопрос связан с программой и уроком.

Шаг 18. Настройте prompt для ответа по материалам

Prompt:

Ты обучающий ассистент. Отвечай только по найденным материалам.

Правила:
1. Если материалов недостаточно, скажи, что ответа нет в курсе.
2. Не придумывай регламенты и процедуры.
3. Дай короткое объяснение простым языком.
4. Добавь ссылку на урок или материал.
5. Если вопрос относится к закрытой теме, верни status=blocked_by_access.
6. Если нужен наставник, верни status=needs_mentor.
7. Не выдавай готовые ответы на итоговую аттестацию.

question:
{{$json.question}}

learner:
{{$json.learner}}

retrieved_chunks:
{{$json.chunks}}

Верни JSON:
{
  "status": "answered | needs_material | needs_mentor | blocked_by_access",
  "answer": "...",
  "source_chunk_ids": ["..."],
  "recommended_next_step": "...",
  "mentor_task_needed": false
}

Проверка: если `source_chunk_ids` пустой, ответ не показывается как факт.

Шаг 19. Создайте answer_log

В `answer_log` добавьте колонки:

answer_id
question_id
learner_id
status
answer_text
source_chunk_ids
confidence
recommended_next_step
created_at

`confidence`:

high
medium
low
needs_material

Проверка: ответы с `low` и `needs_material` попадают наставнику или владельцу курса.

Шаг 20. Создайте knowledge_checks

В `knowledge_checks` добавьте колонки:

check_id
lesson_id
check_type
question
expected_answer
rubric_json
difficulty
status

`check_type`:

single_choice
short_answer
case
role_play
practical_task

Проверка: у проверки есть ожидаемый ответ или rubric, иначе агент не должен оценивать попытку.

Шаг 21. Настройте prompt для генерации проверок

Prompt:

Ты методист. Подготовь контрольные вопросы к уроку.

Правила:
1. Проверяй понимание, а не память формулировок.
2. Не задавай вопросы по материалам, которых нет в lesson.
3. Для практического урока добавь кейс.
4. Дай ожидаемый ответ и критерии проверки.
5. Не создавай итоговую аттестацию без методиста.

lesson:
{{$json.lesson}}

chunks:
{{$json.chunks}}

Верни JSON:
{
  "checks": [
    {
      "check_type": "short_answer | case | practical_task",
      "question": "...",
      "expected_answer": "...",
      "rubric": ["..."],
      "difficulty": "easy | medium | hard"
    }
  ]
}

Проверка: вопросы создаются по конкретным chunks, а не из головы.

Шаг 22. Создайте check_attempts

В `check_attempts` добавьте колонки:

attempt_id
check_id
learner_id
answer_text
score
feedback
weak_topics
status
created_at

Статусы:

passed
failed
needs_review
not_gradable

Проверка: агент не ставит финальную оценку. Он дает предварительный `score` и feedback.

Шаг 23. Настройте prompt для проверки ответа

Prompt:

Ты наставник по обучению. Проверь ответ ученика по rubric.

Правила:
1. Оценивай только по критериям.
2. Не ставь финальную аттестацию.
3. Если ответ спорный, верни needs_review.
4. Дай короткую обратную связь.
5. Назови слабые темы.
6. Предложи следующий учебный шаг.

check:
{{$json.check}}

learner_answer:
{{$json.answer}}

rubric:
{{$json.rubric}}

Верни JSON:
{
  "status": "passed | failed | needs_review | not_gradable",
  "score": 0,
  "feedback": "...",
  "weak_topics": ["..."],
  "next_step": "..."
}

Проверка: `needs_review` отправляется наставнику.

Шаг 24. Создайте weak_topics

В `weak_topics` добавьте колонки:

weak_topic_id
learner_id
program_id
module_id
lesson_id
topic
evidence
severity
status
created_at

`severity`:

low
medium
high
critical

Проверка: слабая тема создается только с evidence: вопрос, попытка или ошибка в кейсе.

Шаг 25. Создайте next_step_queue

В `next_step_queue` добавьте колонки:

next_step_id
learner_id
program_id
reason
recommended_lesson_id
recommended_action
priority
status
created_at

`recommended_action`:

continue_next_lesson
repeat_lesson
ask_mentor
do_practice_task
read_material
watch_video
take_check_again

Проверка: следующий шаг связан с конкретным уроком или задачей.

Шаг 26. Создайте mentor_tasks

В `mentor_tasks` добавьте колонки:

mentor_task_id
mentor_id
learner_id
source
source_id
task_type
title
description
priority
status
created_at

`task_type`:

answer_question
review_attempt
help_blocked_learner
update_material
approve_lms_sync
check_access

Проверка: наставник получает конкретное действие, а не общий сигнал “ученику сложно”.

Шаг 27. Создайте approval_queue

В `approval_queue` добавьте колонки:

approval_id
source
source_id
action_type
action_text
risk_level
payload_json
approver
status
requested_at
approved_at
decision_comment

В approval отправляйте:

  1. запись оценки в LMS;
  2. изменение программы;
  3. изменение учебного материала;
  4. спорный ответ;
  5. итоговую аттестацию;
  6. вывод о неготовности сотрудника;
  7. доступ к закрытым материалам;
  8. отчет руководителю с чувствительными выводами.

Проверка: `approval_queue.status` не может сразу быть `approved`.

Шаг 28. Настройте Telegram approval

В n8n добавьте Telegram-узел после записи в `approval_queue`.

Сообщение:

Learning Agent approval

Action: {{$json.action_type}}
Risk: {{$json.risk_level}}
Learner: {{$json.learner_id}}
Source: {{$json.source}} {{$json.source_id}}

{{$json.action_text}}

Approve: /approve {{$json.approval_id}}
Reject: /reject {{$json.approval_id}}
Review: /review {{$json.approval_id}}

Проверка: команда `/approve` меняет только одну строку по `approval_id`.

Шаг 29. Создайте lms_sync_queue

В `lms_sync_queue` добавьте колонки:

sync_id
approval_id
lms_type
learner_id
course_id
payload_json
sync_action
status
created_at
synced_at
error_message

`sync_action`:

mark_lesson_complete
write_preliminary_score
add_comment
assign_lesson
create_course_note

В первой версии используйте `status=pending_manual` или включайте запись в LMS только после approval.

Проверка: агент не пишет оценки напрямую в LMS.

Шаг 30. Подключите Moodle Web Services

Если используете Moodle, начните с read-only.

Минимальные операции:

  1. получить курсы;
  2. получить пользователей курса;
  3. получить структуру модулей;
  4. получить прогресс;
  5. подготовить sync draft.

Проверка: запись оценок или completion включается только после отдельного approval.

Шаг 31. Подключите Google Classroom API

Если используете Google Classroom, начните с чтения:

  1. courses;
  2. courseWork;
  3. materials;
  4. students;
  5. submissions.

Проверка: комментарии и оценки не создаются автоматически в MVP.

Шаг 32. Подключите Open edX

Если используете Open edX, подключите данные курса и прогресса через доступные API или выгрузку.

Для MVP достаточно:

  1. course structure;
  2. learner progress;
  3. problem results;
  4. links to lessons;
  5. manual sync queue.

Проверка: агент не меняет course content в Open edX.

Шаг 33. Создайте learning_results

В `learning_results` добавьте колонки:

result_id
learner_id
program_id
module_id
completed_lessons
passed_checks
failed_checks
weak_topics_count
mentor_tasks_count
status
updated_at

Статусы:

on_track
needs_help
blocked
completed
needs_review

Проверка: статус объясняется событиями и попытками, а не догадкой LLM.

Шаг 34. Создайте weekly_learning_report

В `weekly_learning_report` добавьте колонки:

report_id
program_id
period
summary
active_learners
completed_lessons
passed_checks
blocked_learners
top_weak_topics
mentor_actions
material_gaps
next_week_actions
status
created_at

Пример summary:

За неделю 8 новичков прошли 42 урока, 6 человек застряли на теме SLA и эскалаций. Агент создал 5 задач наставникам и нашел 3 вопроса, на которые нет материала. На следующей неделе нужно обновить урок по эскалациям и добавить два практических кейса.

Проверка: отчет содержит действия для наставника и владельца курса.

Шаг 35. Настройте audit_log

В `audit_log` добавьте колонки:

audit_id
run_id
actor
action
entity_type
entity_id
before_json
after_json
reason
created_at

Логируйте:

  1. индексацию материала;
  2. ответ на вопрос;
  3. создание проверки знаний;
  4. проверку ответа;
  5. создание слабой темы;
  6. рекомендацию следующего шага;
  7. задачу наставнику;
  8. отправку в approval;
  9. sync с LMS;
  10. weekly report.

Проверка: по `audit_log` можно понять, почему агент дал конкретный ответ или рекомендацию.

Шаг 36. Настройте error_log

В `error_log` добавьте колонки:

error_id
run_id
node_name
error_type
message
payload_sample
retry_count
status
created_at

Типы ошибок:

missing_material
access_denied
empty_retrieval
invalid_json
lms_api_error
embedding_error
stale_material_version
mentor_not_found

Проверка: если retrieval пустой, агент не должен отвечать “по памяти”.

Шаг 37. Протестируйте на одном уроке

Добавьте модуль и урок:

MOD-001 | PROG-SUPPORT-ONBOARDING | Регламенты поддержки | научиться находить SLA и правила эскалации | 1 | yes | 50 | active
LESSON-001 | MOD-001 | Как работает SLA | read | понять сроки реакции и эскалации | MAT-001 | ученик объясняет, когда эскалировать тикет | 1 | active

Добавьте материал `MAT-001`, разбейте его на chunks и запустите workflow.

Задайте вопрос:

Когда нужно эскалировать тикет, если клиент ждет ответ больше суток?

Ожидаемый результат:

  1. агент нашел 1-6 релевантных chunks;
  2. в `answer_log` появился ответ со ссылкой на chunks;
  3. в `progress_events` появилось `question_asked`;
  4. агент предложил следующий шаг;
  5. в `knowledge_checks` создан мини-вопрос;
  6. попытка ученика записалась в `check_attempts`;
  7. если ответ слабый, появилась запись в `weak_topics`;
  8. в `audit_log` есть все действия;
  9. в `error_log` нет ошибок.

Шаг 38. Проверьте негативные сценарии

Проведите проверки:

  1. задайте вопрос не по материалам курса;
  2. убедитесь, что агент вернул `needs_material`;
  3. задайте вопрос по закрытому разделу;
  4. убедитесь, что ответ заблокирован;
  5. удалите mentor_id у ученика;
  6. убедитесь, что создана ошибка `mentor_not_found`;
  7. передайте невалидный JSON от LLM;
  8. убедитесь, что workflow остановился и записал ошибку;
  9. попробуйте записать оценку в LMS без approval;
  10. убедитесь, что запись не выполнена;
  11. задайте вопрос “дай ответ на итоговый тест”;
  12. убедитесь, что агент отказался и предложил повторить материал.

Проверка: агент должен помогать учиться, а не обходить обучение.

Что нельзя автоматизировать в первой версии

Не автоматизируйте сразу:

  1. финальную аттестацию;
  2. запись оценок в LMS;
  3. изменение курса;
  4. выводы о профпригодности;
  5. отчеты руководителю с чувствительными персональными выводами;
  6. доступ к закрытым материалам;
  7. ответы без найденных материалов;
  8. массовое назначение курсов;
  9. автоматическое удаление ученика из программы;
  10. использование приватных документов для обучения модели;
  11. хранение лишних персональных данных;
  12. замену наставника агентом.

Минимальный хороший MVP: агент индексирует один курс, отвечает по материалам со ссылками, задает мини-проверку, фиксирует прогресс, находит слабые темы, создает задачу наставнику и готовит weekly learning report.

Частые вопросы

Можно ли подключить агента к Moodle или другой LMS?

Да, но начните с чтения структуры курса, прогресса и материалов. Запись оценок, completion и комментариев лучше включать только после approval, потому что LMS часто используется как официальный контур обучения.

Может ли агент заменить наставника?

Нет. Он снимает повторяющиеся вопросы, помогает с материалами и показывает слабые темы, но спорные ответы, мотивация, обратная связь и оценка готовности остаются за человеком.

Как не допустить выдуманных ответов?

Используйте RAG по учебным материалам и правило: нет найденных chunks - нет ответа как факта. Агент должен показать ссылку на материал или честно сказать, что в курсе нет ответа.

Какие данные ученика хранить?

Минимум: ID, роль, программа, наставник, прогресс, попытки проверок и слабые темы. Личные данные, оценки и чувствительные выводы храните только если это действительно нужно и понятно, кто имеет доступ.

Что считать готовым результатом MVP?

MVP готов, если один ученик проходит один модуль, агент отвечает по материалам, задает проверочный вопрос, фиксирует прогресс, создает задачу наставнику при проблеме и оставляет понятный `audit_log`.

Дальше по теме

Похожие материалы