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
Важно
- Для работы с LLM понадобится ключ OpenAI (или другой провайдер).
- Ключ можно задать через переменную окружения
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
В текущей версии тестов нет, но вы можете добавить свои.
Вклад в проект
- Сделайте fork репозитория.
- Создайте ветку
feature/your-feature. - Добавьте изменения и запустите тесты.
- Откройте Pull Request.
Лицензия
MIT © 2026