Files

4.1 KiB
Raw Blame History

Сырой текст задания → плоская карточка

Описание проекта

Проект реализует модуль разбора одной формулировки задачи в компактную сводку (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 г.