Практика с n8n: от ручной сборки первой ветки к полному pipeline проверки контрольной
Это подробный HTML-черновик для семинарного блока по n8n. Здесь собран полный маршрут: как мы вручную собрали первую ветку create_assessment, как проверили её на живом endpoint, как затем импортировали полную схему на три ветки и как провести финальный эксперимент по нескольким темам на выбор.
Формат
60-90 минут. Сначала ведущий показывает ручную сборку, потом группа импортирует готовую полную версию и тестирует три режима.
Главная идея
Показать, что n8n полезен не как “ещё один чат”, а как повторяемый процесс: создать контрольную, проверить ответы и подготовить выдачу результатов.
Артефакты
Ручная первая ветка, готовый импортируемый workflow, инструкция для учителя и эксперимент по 3-5 учебным темам.
Что Нужно Подготовить
Перед началом практики нужен локально запущенный n8n, рабочий credential для модели и готовность запускать workflow вручную.
Что не хранить в раздатке: реальные API keys.
Credential создаётся внутри n8n отдельно. В раздатке фиксируем только тип credential и endpoint.
1. Как Мы Собирали Первую Ветку Вручную
Первая живая цель была простой: руками собрать только ветку
create_assessment, проверить, что она действительно отвечает, а
потом уже расширять workflow.
- Создали пустой workflow и добавили
Manual Trigger. - Добавили
Edit Fields (Set)и руками ввели поля:mode,subject,grade,topic,difficulty,task_count,task_types. - Поставили
mode = create_assessment. - Добавили
Switchи настроили три правила наmode. - Для первой ветки добавили
HTTP Request. - Подключили
Bearer Authcredential. - Настроили
POSTкhttps://openrouter.ai/api/v1/chat/completions. - В headers оставили только
Content-Type: application/json. - В body передали JSON с моделью
openrouter/freeи prompt для генерации контрольной. - Добавили второй
Edit Fields (Set), чтобы вытащить{{$json.choices[0].message.content}}в полеassessment_result.
Что Именно Мы Вводили Вручную
mode = create_assessment subject = биология grade = 7 класс topic = фотосинтез difficulty = средний task_count = 6 task_types = 2 тестовых, 2 коротких открытых, 1 на объяснение, 1 на применение
Что Мы Передавали В HTTP Request
{
"model": "openrouter/free",
"temperature": 0.2,
"messages": [
{
"role": "system",
"content": "Ты помогаешь учителю создавать контрольные работы. Пиши ясно, без лишней воды, не выдумывай факты, учитывай возраст и уровень учащихся. Возвращай результат только в трех блоках и ничего больше: CONTROL_WORK, ANSWER_KEY, TEACHER_NOTES."
},
{
"role": "user",
"content": "Создай контрольную работу.\n\nПредмет: {{$json.subject}}\nКласс: {{$json.grade}}\nТема: {{$json.topic}}\nСложность: {{$json.difficulty}}\nКоличество заданий: {{$json.task_count}}\nТипы заданий: {{$json.task_types}}\n\nТребования:\n- контрольная должна подходить для реального урока;\n- задания должны быть разнообразными, но посильными;\n- после контрольной отдельно дай ключ ответов;\n- добавь краткое пояснение для учителя, как лучше использовать эту работу."
}
]
}
Как Мы Тестировали Первую Ветку
- Сначала запускали только
Execute stepвнутриEdit Fields, чтобы убедиться, что входные поля собираются правильно. - Потом запускали
Switchи проверяли, что item попадает именно в выход0дляcreate_assessment. - Дальше запускали
HTTP Requestи смотрели, отвечает ли endpoint в OpenAI-compatible формате. - В конце открывали
Extract Assessment Textи проверяли, что полеassessment_resultдействительно содержит текст контрольной.
Пошагово: Где Нажимать И Что Получится
Шаг 1. Пустой Workflow
- Открыть новый workflow.
- Убедиться, что на экране только пустой холст.
- Начать с добавления первого шага.
Шаг 2. Manual Trigger
- Нажать
Add first step. - В поиске ввести
Manual. - Выбрать
Manual Trigger.
Manual Trigger.Шаг 3. Edit Fields
- Нажать
+послеManual Trigger. - Найти
Edit Fields (Set). - Открыть его для ввода стартовых параметров.
Edit Fields (Set) открыт и готов к заполнению.Шаг 4. Поля Для Первой Ветки
- Добавить поля
mode,subject,grade,topic,difficulty,task_count,task_types. - Сразу задать явные значения:
mode: create_assessment,grade: 1 класс. - Нажать
Execute stepи убедиться, что output содержит эти поля.
Готовые Значения Для Полей
Ниже перечислены переменные для первой ветки. Можно выбрать типовое значение и сразу скопировать его маленькой кнопкой справа.
Шаг 5. Switch
- Добавить
SwitchпослеEdit Fields. - В верхнее поле правила подставить
{{$json.mode}}. - Сравнить его с
create_assessment. - Позже добавить ещё две ветки:
grade_submissionsиpublish_results.
Switch подставляется именно выражение, а не просто текст mode.Шаг 6. HTTP Request
- Добавить
HTTP Requestк первой веткеSwitch. - Поставить
POST. - Указать URL модели.
HTTP Request.Шаг 7. Credential
- Создать или выбрать
Bearer Authcredential. - Подключить его к
HTTP Request. - Оставить в headers только
Content-Type: application/json.
Шаг 8. Первый Живой Ответ
- Вставить JSON body с prompt на генерацию контрольной.
- Нажать
Execute step. - Убедиться, что endpoint возвращает ответ в OpenAI-compatible формате.
Шаг 9. Чистый Текст Результата
- Добавить ещё один
Edit Fields (Set)послеHTTP Request. - Создать поле
assessment_result. - Вставить значение
{{$json.choices[0].message.content}}. - Нажать
Execute step.
2. Что Получилось По Итогу
После ручной сборки мы расширили схему и довели её до полноценного
workflow с тремя режимами: create_assessment,
grade_submissions и publish_results.
Ветка 1. Create Assessment
Создаёт контрольную, ключ и пояснение для учителя.
Ветка 2. Grade Submissions
Проверяет ответы ученика по ключу и выдаёт черновик оценки.
Ветка 3. Publish Results
Готовит аккуратное сообщение ученику и короткую сводку учителю.
Set Pipeline Input, меняете mode и нужные поля,
затем нажимаете Execute workflow и смотрите результат в конечном
узле соответствующей ветки.
3. Скачать Готовую Доработанную Схему
Ниже лежат три файла. Первый это export из уже доработанного и проверенного live instance. Второй удобен, если импортируете workflow в ту же локальную инсталляцию n8n, где уже есть ваш credential. Третий подходит как переносимый шаблон.
Live Export: версия, уже прогнанная вручную в живой локальной инстанции и скачанная обратно из n8n.
Same instance: уже ссылается на существующий credential Bearer Auth account.
Template: после импорта нужно вручную выбрать credential в трёх HTTP-узлах.
Пошагово: Что Делать С Полной Схемой
- Откройте новый пустой workflow в n8n.
- Выберите
Import from file.... - Сначала попробуйте импортировать
Local Assessment Pipeline - Full.json. - Если нужен технический вариант под ту же базу n8n, возьмите
local_assessment_pipeline_full.same_instance.json. - Откройте
Set Pipeline Input. - Поставьте нужный
mode. - Заполните только те поля, которые нужны выбранной ветке.
- Нажмите
Execute workflow. - Откройте финальный узел нужной ветки:
Extract Assessment TextExtract Grading ResultExtract Publish Result
Какие Поля Нужны Для Каждого Режима
subjectgradetopicdifficultytask_counttask_types
assessment_textanswer_keystudent_namestudent_answersgrading_scheme
student_namesubjectgradetopicgrading_resultresult_format
4. Как Пользоваться На Практике
Ниже короткая версия пользовательского сценария. Более полный текст лежит в файлах how-to-use.md и teacher-quickstart.md.
- Учитель выбирает тему контрольной и параметры заданий.
- Система генерирует контрольную и ключ.
- Ученики отвечают в структурированном формате.
- Workflow делает первичную автопроверку.
- Учитель смотрит результаты и типичные ошибки.
- При необходимости дорабатывает замечания и высылает результаты.
5. Эксперимент По Темам На Выбор
Финальный блок семинара можно построить как эксперимент по 3, 4 или 5 темам. Группа выбирает одну тему, затем прогоняет все три режима: создание контрольной, автопроверку одного ученика и подготовку выдачи результата.
Выберите тему. Ниже автоматически обновятся рекомендуемые поля для
create_assessment, пример ответа ученика и короткий сценарий,
как провести эксперимент на семинаре.
Для короткого семинара достаточно 3 тем. Для более насыщенной практики — 5 тем.
Как Вести Финальный Эксперимент
- Разделите участников на 3-5 мини-групп.
- Каждая группа выбирает одну тему.
- Сначала все делают
create_assessment. - Потом ведущий выдаёт готовый пример ответа ученика, и группа делает
grade_submissions. - После этого группа делает
publish_resultsи обсуждает, что стоит править руками. - В конце сравните, на каких темах система сработала увереннее, а где больше нужна ручная педагогическая проверка.
Как Выглядит Полная Линия После Import
Шаг 1. Импорт Полной Схемы
- Создать новый пустой workflow.
- Выбрать
Import from file.... - Сначала импортировать
Local Assessment Pipeline - Full.json. - Если нужен технический вариант под ту же инстанцию, взять
local_assessment_pipeline_full.same_instance.json. - Убедиться, что на схеме один
Manual Trigger, одинSet Pipeline Input, одинSwitchи три полноценные ветки.
Шаг 2. Проверка Create Assessment
- В
Set Pipeline Inputпоставитьmode = create_assessment. - Нажать
Execute workflow. - Проверить, что верхняя ветка стала зелёной.
Шаг 3. Проверка Grade Submissions
- В
Set Pipeline Inputпоставитьmode = grade_submissions. - Оставить тестовые поля ученика и ключа.
- Снова нажать
Execute workflow. - Проверить, что средняя ветка стала зелёной.
Шаг 4. Проверка Publish Results
- В
Set Pipeline Inputпоставитьmode = publish_results. - Оставить заполненные поля по ученику и краткому результату.
- Ещё раз нажать
Execute workflow. - Проверить, что нижняя ветка стала зелёной.
6. Куда Развивать Дальше
После этого семинарного блока логично идти не в “ещё больше ручных полей”, а в более удобный интерфейс:
- сначала учительская форма;
- потом ученическая форма;
- затем пакетная проверка 25 учеников;
- и только потом — бот или персональные ссылки.
Полезные файлы в проекте: teacher-form-spec.md, student-form-spec.md, batch-workflow-plan.md, sample-students-25.json.