diff --git a/main.py b/main.py index f931c3a..43f5198 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,9 @@ """ -Задание 2: Сырой текст задания → плоская карточка +Задание: Сырой текст задания → плоская карточка Скрипт с LangChain + Pydantic, который из неструктурированного текста задания извлекает структурированную карточку: title, subject, deadline_hint, -deliverable_type, grading_hints. +deliverable_type, grading_hints (list[str]). """ import os @@ -30,8 +30,8 @@ class TaskCard(BaseModel): deliverable_type: str = Field( description="Тип результата: например «код», «эссе», «презентация», «отчёт», «тест» и т.д." ) - grading_hints: str = Field( - description="Подсказки по оцениванию: что будет проверяться, критерии, баллы — кратко" + grading_hints: list[str] = Field( + description="Подсказки по оцениванию: список критериев (что проверяется, баллы)" ) @@ -48,7 +48,7 @@ prompt = PromptTemplate( "- subject — предмет / область\n" "- deadline_hint — дедлайн (если указан, иначе «не указан»)\n" "- deliverable_type — тип результата (код, эссе, презентация, отчёт, тест…)\n" - "- grading_hints — краткие критерии оценивания\n\n" + "- grading_hints — список кратких критериев оценивания (по одному на элемент списка)\n\n" "Текст задания:\n" "{raw_text}\n\n" "{format_instructions}" @@ -60,11 +60,6 @@ prompt = PromptTemplate( # ─── Инициализация LLM ────────────────────────────────────────────────────── -# Переменные окружения (можно задать через .env или export): -# OPENAI_API_BASE — URL API (по умолчанию https://api.openai.com/v1) -# OPENAI_API_KEY — ключ API -# OPENAI_MODEL — модель (по умолчанию gpt-4o-mini) - api_base = os.environ.get("OPENAI_API_BASE", "https://api.openai.com/v1") api_key = os.environ.get("OPENAI_API_KEY", "") model_name = os.environ.get("OPENAI_MODEL", "gpt-4o-mini") @@ -116,7 +111,7 @@ def print_card(card: TaskCard) -> None: print(f" 📚 Предмет : {card.subject}") print(f" ⏰ Дедлайн : {card.deadline_hint}") print(f" 📦 Результат: {card.deliverable_type}") - print(f" ✅ Критерии : {card.grading_hints}") + print(f" ✅ Критерии : {', '.join(card.grading_hints)}") if __name__ == "__main__":