Files

4.1 KiB
Raw Blame History

Task Parser “Raw Text → Flat Card”

📖 Описание

task_parser.py — это модуль, который принимает неформальное описание задания (строку или короткий абзац) и преобразует его в структурированный объект TaskCard.
Полученный объект содержит только те поля, которые нужны дальше в пайплайне: название задачи, предмет, подсказки по дедлайну, тип сдачи и указания по оценке. Всё это делается без диалога с моделью – один запрос → один ответ.

🚀 Установка

# Создайте виртуальное окружение (рекомендуется)
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 рядом с проектом:
# .env
OPENAI_API_KEY=sk-xxxxxxxxxxxxxx

📦 Как запустить

1️⃣ Вариант через REPL / Jupyter

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():

if __name__ == "__main__":
    import sys
    raw = " ".join(sys.argv[1:])
    card = parse_task_text(raw)
    print(card.json(indent=2))

Тогда можно вызвать так:

python task_parser.py "Напиши мини‑отчёт по LangChain: проработай пример с ChatOpenAI, покажи выводы и сделай выводы о производительности. Срок сдачи – 3 дня после получения задания."

📄 Пример использования

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 или свяжитесь с автором проекта.