Files
task-69dd4221f309a98be0006b2e/main.py
T
2026-05-14 08:40:28 +00:00

37 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from pydantic import BaseModel, Field
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import PydanticOutputParser
class TaskCard(BaseModel):
title: str = Field(..., description="Title of the assignment")
subject: str = Field(..., description="Subject or topic of the assignment")
deadline_hint: str = Field(..., description="Freeform hint about deadline")
deliverable_type: str = Field(..., description="What is to be submitted (report, code, presentation, etc.)")
grading_hints: list[str] = Field(..., description="List of hints mentioned about grading")
parser = PydanticOutputParser(pydantic_object=TaskCard)
prompt = PromptTemplate(
template="""
You are an assistant that extracts structured information from a short assignment description.
Return the data in the following JSON format exactly:
{format_instructions}
Input: {input_text}
""",
input_variables=["input_text"],
partial_variables={"format_instructions": parser.get_format_instructions()},
)
llm = ChatOpenAI(temperature=0)
chain = prompt | llm | parser
if __name__ == "__main__":
sample = "Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. Оценка: за полноту и за пример кода."
result = chain.invoke({"input_text": sample})
print("Parsed object:")
print(result.model_dump())
print("\nHuman readable summary:")
print(f"Title: {result.title}\nSubject: {result.subject}\nDeadline: {result.deadline_hint}\nDeliverable: {result.deliverable_type}\nGrading hints: {', '.join(result.grading_hints)}")