# Task Parser – “Raw Text → Flat Card” ## 📖 Описание `task_parser.py` — это модуль, который принимает **неформальное описание задания** (строку или короткий абзац) и преобразует его в структурированный объект `TaskCard`. Полученный объект содержит только те поля, которые нужны дальше в пайплайне: название задачи, предмет, подсказки по дедлайну, тип сдачи и указания по оценке. Всё это делается без диалога с моделью – один запрос → один ответ. ## 🚀 Установка ```bash # Создайте виртуальное окружение (рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Установите зависимости pip install langchain-core langchain-openai pydantic python-dotenv ``` > **Важно** > * `OPENAI_API_KEY` (или другой ключ для выбранной модели) должен быть в переменных окружения. > * Можно хранить его в файле `.env` рядом с проектом: ```dotenv # .env OPENAI_API_KEY=sk-xxxxxxxxxxxxxx ``` ## 📦 Как запустить ### 1️⃣ Вариант через REPL / Jupyter ```python from task_parser import parse_task_text raw = """ Напиши мини‑отчёт по LangChain: проработай пример с ChatOpenAI, покажи выводы и сделай выводы о производительности. Срок сдачи – 3 дня после получения задания. Оценка будет по качеству кода и полноте отчёта. """ card = parse_task_text(raw) print(card.json(indent=2)) ``` ### 2️⃣ Через командную строку Добавьте в `task_parser.py` (или создайте отдельный скрипт) функцию `main()`: ```python if __name__ == "__main__": import sys raw = " ".join(sys.argv[1:]) card = parse_task_text(raw) print(card.json(indent=2)) ``` Тогда можно вызвать так: ```bash python task_parser.py "Напиши мини‑отчёт по LangChain: проработай пример с ChatOpenAI, покажи выводы и сделай выводы о производительности. Срок сдачи – 3 дня после получения задания." ``` ## 📄 Пример использования ```python from task_parser import parse_task_text raw = """ Создать презентацию по теме «Введение в LangChain». Включить примеры кода, графики и выводы. Срок: до пятницы. Оценка будет зависеть от оригинальности идей и качества оформления слайдов. """ card = parse_task_text(raw) # card – это объект TaskCard print(card.title) # "Создать презентацию по теме «Введение в LangChain»" print(card.subject) # "LangChain" print(card.deadline_hint) # "до пятницы" print(card.deliverable_type) # "презентация" print(card.grading_hints) # ["оригинальность идей", "качество оформления слайдов"] ``` ## 📚 Что дальше - **Фильтрация**: можно отфильтровать задачи по предмету или типу сдачи. - **Сохранение**: сериализовать в JSON и хранить в базе данных. - **Пайплайн**: передать `TaskCard` следующему шагу, например, генератору чек‑листов. --- *Если возникнут вопросы – откройте issue или свяжитесь с автором проекта.*