diff --git a/README.md b/README.md index 7c2a7ec..9a7b0ed 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,21 @@ -# Парсер задания: сырой текст → TaskCard +# Task 69dd4221f309a98be0006b2e -Модуль принимает неформальное описание учебного задания и возвращает -структурированный объект `TaskCard` — без диалога, за один запрос к модели. +## Задача -## Стек +Разработать модуль, который принимает неформальное описание задания и преобразует его в +структурированный объект с полями: `title`, `subject`, `deadline_hint`, `deliverable_type`, `grading_hints`. -| Компонент | Библиотека | -|-----------|------------| -| Языковая модель | BroJS (`openai/gpt-oss-20b:free`) | -| LLM-клиент | `langchain-openai` → `ChatOpenAI` | -| Промпт | `langchain-core` → `PromptTemplate` | -| Парсер | `langchain-core` → `PydanticOutputParser` | -| Модель данных | `pydantic` → `BaseModel` | - -## Структура TaskCard - -```python -class TaskCard(BaseModel): - title: str # Краткое название (2–6 слов) - subject: str # Область знаний / технология - deadline_hint: str # Срок в свободной форме - deliverable_type: str # Что сдать: отчёт, код, презентация… - grading_hints: list[str] # Критерии оценки - notes: Optional[str] # Дополнительные заметки -``` - -## Цепочка обработки - -``` -task_text - │ - ▼ -PromptTemplate ← format_instructions от PydanticOutputParser - │ - ▼ -ChatOpenAI (BroJS, один запрос) - │ - ▼ -PydanticOutputParser - │ - ▼ -TaskCard (валидированный объект) -``` - -## Установка +## Как использовать ```bash -pip install -r requirements.txt +python main.py "Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. Оценка: за полноту и за пример кода." ``` -## Переменные окружения +## Требования +- Python 3.10+ +- `langchain-core`, `langchain-openai`, `pydantic`, `python-dotenv` -| Переменная | Описание | -|------------|----------| -| `JOURNAL_MCP_PAT` | Токен доступа к BroJS LLM | - -Создай `.env`: -``` -JOURNAL_MCP_PAT=jrnl_... -``` - -## Запуск - -```bash -# Встроенный пример -python main.py - -# Своё описание задания -python main.py "Сдайте до понедельника презентацию по RAG: 10 слайдов. Оценка: за полноту и визуализацию." -``` - -## Пример вывода - -``` -Вход: - Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. - Оценка: за полноту и за пример кода. - -─── Валидированный объект (model_dump) ───────────────────── -{ - "title": "Мини-отчёт по LangChain", - "subject": "LangChain", - "deadline_hint": "к пятнице", - "deliverable_type": "отчёт", - "grading_hints": ["полнота", "пример кода"], - "notes": null -} - -─── Человекочитаемая сводка ───────────────────────────────── - Задача: Мини-отчёт по LangChain - Тема: LangChain - Срок: к пятнице - Тип сдачи: отчёт - Критерии: полнота, пример кода -``` +## Структура репозитория +- `main.py` – основной скрипт +- `requirements.txt` – зависимости +- `README.md` – данное описание