Сырой текст задания → плоская карточка
Описание проекта
Проект реализует модуль разбора одной формулировки задачи в компактную сводку (AssignmentCard).
Он принимает неформальное описание задания (строку или короткий абзац) и возвращает объект с полями:
| Поле | Тип | Описание |
|---|---|---|
title |
str |
Краткое название задачи |
subject |
str |
Область знаний / предмет |
deadline_hint |
`str | None` |
deliverable_type |
str |
Тип сдаваемого материала (отчёт, код, презентация и т.д.) |
grading_hints |
List[str] |
Ключевые критерии оценки, перечисленные в тексте. Если не найдено – пустой список. |
Модель работает без диалога: она получает один запрос и выдаёт один ответ.
Установка зависимостей
# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите пакеты
pip install langchain-core langchain-openai pydantic python-dotenv
Важно
Для работы с LLM необходимо задать переменные окружения:export OPENAI_API_KEY="ваш_ключ"(или добавить в
.envфайл).
Как запустить
1. task_parser.py
Файл содержит всю логику: модель Pydantic, шаблон запроса и функцию parse_assignment.
from task_parser import parse_assignment
raw_text = """
Нужно написать отчёт по теме «Влияние квантовых вычислений на криптографию» до следующей среды.
Критерии оценки: оригинальность идеи, корректность расчётов, оформление в формате LaTeX.
"""
card = parse_assignment(raw_text)
print(card.json(indent=2))
Запуск:
python - <<'PY'
from task_parser import parse_assignment
raw_text = """
Нужно написать отчёт по теме «Влияние квантовых вычислений на криптографию» до следующей среды.
Критерии оценки: оригинальность идеи, корректность расчётов, оформление в формате LaTeX.
"""
card = parse_assignment(raw_text)
print(card.json(indent=2))
PY
2. Тесты (если есть)
pytest tests/
Пример использования
>>> from task_parser import parse_assignment
>>> raw = "Сдать презентацию по «Машинное обучение» к пятнице, оценка по структуре и содержанию."
>>> card = parse_assignment(raw)
>>> print(card.title)
Сдать презентацию по «Машинное обучение»
>>> print(card.subject)
«Машинное обучение»
>>> print(card.deadline_hint)
к пятнице
>>> print(card.deliverable_type)
презентация
>>> print(card.grading_hints)
['структуре', 'содержанию']
Что дальше
- Добавить более сложные правила извлечения (например, распознавание дат).
- Интегрировать в пайплайн ассистента по учёбе.
- Писать unit‑тесты для разных сценариев.
Автор: [Ваше имя]
Дата: 27 мая 2026 г.