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