Files

4.7 KiB

Task Card – превращение сырого текста задания в структурированные данные

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

task_card.py реализует модуль, который принимает неформальное описание задачи (как в переписке или на сайте курса) и преобразует его в структурированный объект TaskCard.
Объект содержит поля:

Поле Тип Описание
title str Краткое название задачи
subject str Предмет или область знаний
deadline_hint str Указание срока сдачи в свободной форме
deliverable_type str Тип сдаваемого материала (отчёт, код, презентация и т.д.)
grading_hints List[str] Ключевые критерии оценки, упомянутые в тексте

Модуль использует LangChain для общения с LLM и Pydantic для гарантированного парсинга результата.


Установка зависимостей

# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

# Установите зависимости
pip install langchain-core langchain-openai pydantic python-dotenv

Важно

  1. Для работы с LLM понадобится ключ OpenAI (или другой провайдер).
  2. Ключ можно задать через переменную окружения OPENAI_API_KEY или в файле .env.

Как запустить

1️⃣ Запуск скрипта вручную

# Убедитесь, что переменная OPENAI_API_KEY установлена
export OPENAI_API_KEY="sk-..."

python task_card.py

При запуске скрипт запросит у пользователя ввод текста задания и выведет распарсенный объект TaskCard.

2️⃣ Использование как модуля

from task_card import parse_task_text, TaskCard

raw = """
Нужно написать программу на Python, которая будет генерировать отчёт о продажах за последний квартал.
Сдать код и README. Срок сдачи – через две недели после начала проекта.
Оценка будет по качеству кода, читаемости и покрытию тестами.
"""

card: TaskCard = parse_task_text(raw)
print(card.json(indent=2))

Пример использования

$ python task_card.py
Введите текст задания:
Нужно написать программу на Python, которая будет генерировать отчёт о продажах за последний квартал.
Сдать код и README. Срок сдачи – через две недели после начала проекта.
Оценка будет по качеству кода, читаемости и покрытию тестами.

Результат:
{
  "title": "Генерация отчёта о продажах",
  "subject": "Python",
  "deadline_hint": "через две недели после начала проекта",
  "deliverable_type": "код и README",
  "grading_hints": [
    "качество кода",
    "читаемость",
    "покрытие тестами"
  ]
}

Структура файлов

Файл Описание
task_card.py Основной скрипт: определение модели, шаблона промпта и функции парсинга.
.env.example Пример файла с переменными окружения (ключи API).

Тестирование

# Установите pytest, если ещё не установлен
pip install pytest

# Запустите тесты (если они есть)
pytest

В текущей версии тестов нет, но вы можете добавить свои.


Вклад в проект

  1. Сделайте fork репозитория.
  2. Создайте ветку feature/your-feature.
  3. Добавьте изменения и запустите тесты.
  4. Откройте Pull Request.

Лицензия

MIT © 2026