4.3 KiB
4.3 KiB
Task Card Extractor
A lightweight Python utility that transforms informal task descriptions into a flat JSON card containing the following fields:
| Field | Description |
|---|---|
title |
Название задания |
subject |
Тема/область задачи |
deadline_hint |
Подсказка по дедлайну |
deliverable_type |
Тип сдачи (отчёт, код и т.д.) |
grading_hints |
Ключевые критерии оценки |
The extractor uses LangChain with an OpenAI model to parse the raw text and output a validated TaskCard Pydantic object.
📦 Установка зависимостей
# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
# Установите зависимости из requirements.txt
pip install -r requirements.txt
requirements.txt:
langchain-core>=0.2.0
langchain-openai>=0.1.0
pydantic>=2.0
openai>=1.0 # для ChatOpenAI
Важно:
Установите переменную окруженияOPENAI_API_KEYс вашим ключом OpenAI, иначе модель не сможет работать.
export OPENAI_API_KEY="sk-..."
# Windows:
set OPENAI_API_KEY=sk-...
📁 Структура проекта
| Файл | Описание |
|---|---|
extract_task_card.py |
Основной скрипт, содержащий модель TaskCard, конфигурацию LangChain и пример запуска. |
🚀 Запуск
1️⃣ Простой запуск через CLI
python extract_task_card.py "Напиши задание по теме «Алгоритмы сортировки». Дедлайн – завтра. Сдача: код + отчёт. Оценка по точности, читаемости и эффективности."
Вывод будет в формате JSON:
{
"title": "Алгоритмы сортировки",
"subject": "Тема «Алгоритмы сортировки»",
"deadline_hint": "завтра",
"deliverable_type": "код + отчёт",
"grading_hints": [
"точность",
"читаемость",
"эффективность"
]
}
2️⃣ Запуск из кода
from pathlib import Path
import os
# Импортируем модель и функцию извлечения
from extract_task_card import TaskCard, extract_from_text
raw = """
Напиши задание по теме «Алгоритмы сортировки». Дедлайн – завтра.
Сдача: код + отчёт. Оценка по точности, читаемости и эффективности.
"""
card = extract_from_text(raw)
print(card.json(indent=2))
📚 Пример использования
from extract_task_card import TaskCard, extract_from_text
raw_description = """
Создать программу, которая генерирует случайный массив из 1000 чисел,
сортирует его методом быстрой сортировки и выводит время выполнения.
Дедлайн – через неделю. Сдача: код + краткое описание алгоритма.
Оценка по скорости, корректности и читаемости кода.
"""
task_card = extract_from_text(raw_description)
print("Title:", task_card.title)
print("Subject:", task_card.subject)
print("Deadline hint:", task_card.deadline_hint)
print("Deliverable type:", task_card.deliverable_type)
print("Grading hints:", ", ".join(task_card.grading_hints))
🔧 Настройка модели
- Модель: по умолчанию используется
gpt-4o-mini. При необходимости можно изменить в коде:llm = ChatOpenAI(model="gpt-4o", temperature=0.2) - Температура: регулирует креативность ответа (по умолчанию 0.2).
📜 Лицензия
MIT License – свободно используйте и модифицируйте по своему усмотрению.