From 19886e89966141de16b35fb31aa474b511e1c84f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=91=D0=B5=D1=80=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0?= Date: Wed, 27 May 2026 08:20:16 +0000 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82=D1=8C=20so?= =?UTF-8?q?lutions/69dd4221f309a98be0006b2e=5F=D1=81=D1=8B=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=5F=D1=82=D0=B5=D0=BA=D1=81=D1=82=5F=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=5F=5F=5F=D0=BF=D0=BB=D0=BE=D1=81=D0=BA?= =?UTF-8?q?=D0=B0=D1=8F=5F=D0=BA=D0=B0=D1=80=D1=82=D0=BE=D1=87=D0=BA=D0=B0?= =?UTF-8?q?/task=5Fparser.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task_parser.py | 79 ------------------- 1 file changed, 79 deletions(-) delete mode 100644 solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/task_parser.py diff --git a/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/task_parser.py b/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/task_parser.py deleted file mode 100644 index 9a44dd1..0000000 --- a/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/task_parser.py +++ /dev/null @@ -1,79 +0,0 @@ -from __future__ import annotations - -from typing import List - -from dotenv import load_dotenv -from langchain_core.output_parsers import PydanticOutputParser -from langchain_core.prompts import PromptTemplate -from langchain_openai import ChatOpenAI -from pydantic import BaseModel, Field - -load_dotenv() - - -class TaskCard(BaseModel): - title: str = Field( - ..., - description="Краткое название задачи", - ) - subject: str | None = Field( - None, - description="Тема или предмет задачи", - ) - deadline_hint: str | None = Field( - None, - description="Срок сдачи в свободной форме", - ) - deliverable_type: str | None = Field( - None, - description="Тип сдаваемого материала: отчёт, код, презентация и т.п.", - ) - grading_hints: List[str] | None = Field( - None, - description="Ключевые критерии оценки", - ) - - -def main() -> None: - parser = PydanticOutputParser(pydantic_object=TaskCard) - - template = PromptTemplate( - template=( - "Прочитай описание учебного задания и извлеки информацию в JSON.\n\n" - "Описание:\n{input_text}\n\n" - "{format_instructions}" - ), - input_variables=["input_text"], - partial_variables={ - "format_instructions": parser.get_format_instructions() - }, - ) - - model = ChatOpenAI(temperature=0) - - chain = template | model | parser - - sample = ( - "Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. " - "Оценка: за полноту и за пример кода." - ) - - result: TaskCard = chain.invoke({"input_text": sample}) - - print("Валидированный объект:") - print(result.model_dump()) - - print("\nСводка:") - print(f"Задание: {result.title}.") - if result.subject: - print(f"Тема: {result.subject}.") - if result.deadline_hint: - print(f"Срок сдачи: {result.deadline_hint}.") - if result.deliverable_type: - print(f"Тип материала: {result.deliverable_type}.") - if result.grading_hints: - print(f"Критерии оценки: {', '.join(result.grading_hints)}.") - - -if __name__ == "__main__": - main() \ No newline at end of file