add README.md
This commit is contained in:
@@ -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` – данное описание
|
||||
|
||||
Reference in New Issue
Block a user