Compare commits

3 Commits

2 changed files with 7 additions and 12 deletions
+6 -11
View File
@@ -1,9 +1,9 @@
""" """
Задание 2: Сырой текст задания → плоская карточка Задание: Сырой текст задания → плоская карточка
Скрипт с LangChain + Pydantic, который из неструктурированного текста задания Скрипт с LangChain + Pydantic, который из неструктурированного текста задания
извлекает структурированную карточку: title, subject, deadline_hint, извлекает структурированную карточку: title, subject, deadline_hint,
deliverable_type, grading_hints. deliverable_type, grading_hints (list[str]).
""" """
import os import os
@@ -30,8 +30,8 @@ class TaskCard(BaseModel):
deliverable_type: str = Field( deliverable_type: str = Field(
description="Тип результата: например «код», «эссе», «презентация», «отчёт», «тест» и т.д." description="Тип результата: например «код», «эссе», «презентация», «отчёт», «тест» и т.д."
) )
grading_hints: str = Field( grading_hints: list[str] = Field(
description="Подсказки по оцениванию: что будет проверяться, критерии, баллы — кратко" description="Подсказки по оцениванию: список критериев (что проверяется, баллы)"
) )
@@ -48,7 +48,7 @@ prompt = PromptTemplate(
"- subject — предмет / область\n" "- subject — предмет / область\n"
"- deadline_hint — дедлайн (если указан, иначе «не указан»)\n" "- deadline_hint — дедлайн (если указан, иначе «не указан»)\n"
"- deliverable_type — тип результата (код, эссе, презентация, отчёт, тест…)\n" "- deliverable_type — тип результата (код, эссе, презентация, отчёт, тест…)\n"
"- grading_hints — краткие критерии оценивания\n\n" "- grading_hints — список кратких критериев оценивания (по одному на элемент списка)\n\n"
"Текст задания:\n" "Текст задания:\n"
"{raw_text}\n\n" "{raw_text}\n\n"
"{format_instructions}" "{format_instructions}"
@@ -60,11 +60,6 @@ prompt = PromptTemplate(
# ─── Инициализация LLM ────────────────────────────────────────────────────── # ─── Инициализация 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_base = os.environ.get("OPENAI_API_BASE", "https://api.openai.com/v1")
api_key = os.environ.get("OPENAI_API_KEY", "") api_key = os.environ.get("OPENAI_API_KEY", "")
model_name = os.environ.get("OPENAI_MODEL", "gpt-4o-mini") 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.subject}")
print(f" ⏰ Дедлайн : {card.deadline_hint}") print(f" ⏰ Дедлайн : {card.deadline_hint}")
print(f" 📦 Результат: {card.deliverable_type}") print(f" 📦 Результат: {card.deliverable_type}")
print(f" ✅ Критерии : {card.grading_hints}") print(f" ✅ Критерии : {', '.join(card.grading_hints)}")
if __name__ == "__main__": if __name__ == "__main__":
+1 -1
View File
@@ -1,4 +1,4 @@
langchain-core>=0.3.0 langchain-core>1.0.0
langchain-openai>=0.2.0 langchain-openai>=0.2.0
pydantic>=2.0.0 pydantic>=2.0.0
python-dotenv>=1.0.0 python-dotenv>=1.0.0