Fix: grading_hints to list[str], update LangChain version >1.0.0
This commit is contained in:
@@ -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__":
|
||||||
|
|||||||
Reference in New Issue
Block a user