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