# Task: "сырой текст задания → плоская карточка" ## Что делает проект Программа принимает **неформальное описание** задачи (как в переписке или на сайте курса) и превращает его в **структурированный объект** `TaskCard`. Это позволяет дальше работать с данными автоматически – фильтровать, сохранять, передавать в пайплайн. ## Структура репозитория | Файл | Назначение | |------|------------| | `models.py` | Pydantic‑модель `TaskCard`. | | `main.py` | Точка входа: демонстрация цепочки LangChain, вывод примеров. | | `requirements.txt` | Зависимости проекта. | ## Установка и запуск ```bash # 1. Клонируйте репозиторий git clone https://git.brojs.ru/KirillKutlakhmetov/task-6a1484a292f7bbc573321443.git cd task-6a1484a292f7bbc573321443 # 2. Создайте виртуальное окружение (необязательно, но рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .\.venv\Scripts\activate # 3. Установите зависимости pip install -r requirements.txt # 4. Настройте переменную окружения с токеном BroJS export JOURNAL_MCP_PAT=YOUR_TOKEN_HERE # Linux/macOS set JOURNAL_MCP_PAT=YOUR_TOKEN_HERE # Windows CMD $env:JOURNAL_MCP_PAT="YOUR_TOKEN_HERE" # PowerShell # 5. Запустите пример python main.py ``` ## Пример вывода ```text Example 1: Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. Оценка: за полноту и за пример кода. Parsed object (model_dump): {'title': 'мини‑отчёт', 'subject': 'LangChain', 'deadline_hint': 'к пятнице', 'deliverable_type': 'отчёт', 'grading_hints': ['полнота', 'пример кода']} Human-readable summary: Title: мини‑отчёт Subject: LangChain Deadline hint: к пятнице Deliverable type: отчёт Grading hints: полнота, пример кода ``` ## Как это работает 1. **PromptTemplate** формирует запрос к LLM с инструкцией вернуть данные в формате, описанном `PydanticOutputParser`. 2. **ChatOpenAI** (BroJS) генерирует ответ. 3. Парсер преобразует JSON‑ответ в экземпляр `TaskCard`, гарантируя типизацию. 4. В `main.py` выводятся как сериализованный словарь, так и человекочитаемый резюме. ## Тесты Тестов нет – проект рассчитан на демонстрацию работы цепочки. Для проверки можно запустить `python main.py` и убедиться в корректности вывода. --- > **Важно**: токен BroJS (`JOURNAL_MCP_PAT`) должен быть действительным, иначе запрос к LLM завершится ошибкой.