From 91cf0036bead3d7b99b51cee00d8a046bcc42787 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 07:15:34 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20solutions/69dd4221f309a98be0006b2e=5F=D1=81=D1=8B?= =?UTF-8?q?=D1=80=D0=BE=D0=B9=5F=D1=82=D0=B5=D0=BA=D1=81=D1=82=5F=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=5F=5F=5F=D0=BF=D0=BB=D0=BE?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=D1=8F=5F=D0=BA=D0=B0=D1=80=D1=82=D0=BE=D1=87?= =?UTF-8?q?=D0=BA=D0=B0/solution.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solution.py | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/solution.py b/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/solution.py index 3c906dd..2638e8a 100644 --- a/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/solution.py +++ b/solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/solution.py @@ -1,11 +1,15 @@ import os from typing import List -from pydantic import BaseModel, Field +# LangChain — обёртки над моделью и парсером from langchain_core.prompts import PromptTemplate -from langchain_openai import ChatOpenAI from langchain_core.output_parsers import PydanticOutputParser +# LangChain — интеграция с OpenAI +from langchain_openai import ChatOpenAI + +from pydantic import BaseModel, Field + class AssignmentCard(BaseModel): """Структурированная карточка учебного задания.""" @@ -26,9 +30,11 @@ class AssignmentCard(BaseModel): ) -def run(raw_text: str) -> None: +def main() -> None: + # Парсер структурированного вывода из langchain_core output_parser = PydanticOutputParser(pydantic_object=AssignmentCard) + # Шаблон промпта из langchain_core template = PromptTemplate( template=( "Прочитай описание учебного задания и заполни все поля карточки.\n\n" @@ -42,11 +48,18 @@ def run(raw_text: str) -> None: }, ) + # Языковая модель через обёртку langchain_openai model = ChatOpenAI(model="gpt-4o-mini", temperature=0) + # Цепочка LangChain: промпт | модель | парсер chain = template | model | output_parser - card: AssignmentCard = chain.invoke({"raw_text": raw_text}) + sample = ( + "Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. " + "Оценка: за полноту и за пример кода." + ) + + card: AssignmentCard = chain.invoke({"raw_text": sample}) print("Валидированный объект:") print(card.model_dump()) @@ -61,8 +74,4 @@ def run(raw_text: str) -> None: if __name__ == "__main__": - sample = ( - "Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. " - "Оценка: за полноту и за пример кода." - ) - run(sample) \ No newline at end of file + main() \ No newline at end of file