Обновить solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/solution.py
This commit is contained in:
+18
-9
@@ -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)
|
||||
main()
|
||||
Reference in New Issue
Block a user