# Task Card – превращение сырого текста задания в структурированные данные ## Описание проекта `task_card.py` реализует модуль, который принимает неформальное описание задачи (как в переписке или на сайте курса) и преобразует его в **структурированный объект** `TaskCard`. Объект содержит поля: | Поле | Тип | Описание | |------|-----|----------| | `title` | `str` | Краткое название задачи | | `subject` | `str` | Предмет или область знаний | | `deadline_hint` | `str` | Указание срока сдачи в свободной форме | | `deliverable_type` | `str` | Тип сдаваемого материала (отчёт, код, презентация и т.д.) | | `grading_hints` | `List[str]` | Ключевые критерии оценки, упомянутые в тексте | Модуль использует **LangChain** для общения с LLM и **Pydantic** для гарантированного парсинга результата. --- ## Установка зависимостей ```bash # Создайте виртуальное окружение (рекомендуется) 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️⃣ Запуск скрипта вручную ```bash # Убедитесь, что переменная OPENAI_API_KEY установлена export OPENAI_API_KEY="sk-..." python task_card.py ``` При запуске скрипт запросит у пользователя ввод текста задания и выведет распарсенный объект `TaskCard`. ### 2️⃣ Использование как модуля ```python from task_card import parse_task_text, TaskCard raw = """ Нужно написать программу на Python, которая будет генерировать отчёт о продажах за последний квартал. Сдать код и README. Срок сдачи – через две недели после начала проекта. Оценка будет по качеству кода, читаемости и покрытию тестами. """ card: TaskCard = parse_task_text(raw) print(card.json(indent=2)) ``` --- ## Пример использования ```bash $ python task_card.py Введите текст задания: Нужно написать программу на Python, которая будет генерировать отчёт о продажах за последний квартал. Сдать код и README. Срок сдачи – через две недели после начала проекта. Оценка будет по качеству кода, читаемости и покрытию тестами. Результат: { "title": "Генерация отчёта о продажах", "subject": "Python", "deadline_hint": "через две недели после начала проекта", "deliverable_type": "код и README", "grading_hints": [ "качество кода", "читаемость", "покрытие тестами" ] } ``` --- ## Структура файлов | Файл | Описание | |------|----------| | `task_card.py` | Основной скрипт: определение модели, шаблона промпта и функции парсинга. | | `.env.example` | Пример файла с переменными окружения (ключи API). | --- ## Тестирование ```bash # Установите pytest, если ещё не установлен pip install pytest # Запустите тесты (если они есть) pytest ``` > *В текущей версии тестов нет, но вы можете добавить свои.* --- ## Вклад в проект 1. Сделайте fork репозитория. 2. Создайте ветку `feature/your-feature`. 3. Добавьте изменения и запустите тесты. 4. Откройте Pull Request. --- ## Лицензия MIT © 2026