сырой текст задания → плоская карточка: README.md
This commit is contained in:
@@ -0,0 +1,89 @@
|
|||||||
|
# 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 или свяжитесь с автором проекта.*
|
||||||
Reference in New Issue
Block a user