Files
task-69dd4221f309a98be0006b2e/main.py
T
2026-05-12 19:55:54 +00:00

47 lines
1.9 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 typing import List
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 deadline hint")
deliverable_type: str = Field(..., description="What to submit: report, code, presentation, etc.")
grading_hints: List[str] = Field(..., description="List of grading hints mentioned in the text")
parser = PydanticOutputParser(pydantic_object=TaskCard)
prompt_template = (
"You are an assistant that extracts structured information from a short assignment description. "
"Return the data in the following JSON format exactly as required by the parser. "
"Do not add any extra keys or text.\n"
"{format_instructions}\n"
"Input: {input_text}\n"
"Output:"
)
prompt = PromptTemplate(
template=prompt_template,
input_variables=["input_text"],
partial_variables={"format_instructions": parser.get_format_instructions()},
)
llm = ChatOpenAI(temperature=0)
chain = prompt | llm | parser
if __name__ == "__main__":
# Example input
input_text = "Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. Оценка: за полноту и за пример кода."
result = chain.invoke({"input_text": input_text})
print("Parsed object:")
print(result.model_dump())
print("\nHuman readable summary:\n")
print(f"Title: {result.title}")
print(f"Subject: {result.subject}")
print(f"Deadline: {result.deadline_hint}")
print(f"Deliverable: {result.deliverable_type}")
print(f"Grading hints: {', '.join(result.grading_hints)}")