Files
task-69dd4221f309a98be0006b2e/README.md
T

97 lines
3.1 KiB
Markdown

# Парсер задания: сырой текст → TaskCard
Модуль принимает неформальное описание учебного задания и возвращает
структурированный объект `TaskCard` — без диалога, за один запрос к модели.
## Стек
| Компонент | Библиотека |
|-----------|------------|
| Языковая модель | 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
```
## Переменные окружения
| Переменная | Описание |
|------------|----------|
| `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
Срок: к пятнице
Тип сдачи: отчёт
Критерии: полнота, пример кода
```