Обновить solutions/69dd4221f309a98be0006b2e_сырой_текст_задания___плоская_карточка/solution.py
This commit is contained in:
+18
-9
@@ -1,11 +1,15 @@
|
|||||||
import os
|
import os
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from pydantic import BaseModel, Field
|
# LangChain — обёртки над моделью и парсером
|
||||||
from langchain_core.prompts import PromptTemplate
|
from langchain_core.prompts import PromptTemplate
|
||||||
from langchain_openai import ChatOpenAI
|
|
||||||
from langchain_core.output_parsers import PydanticOutputParser
|
from langchain_core.output_parsers import PydanticOutputParser
|
||||||
|
|
||||||
|
# LangChain — интеграция с OpenAI
|
||||||
|
from langchain_openai import ChatOpenAI
|
||||||
|
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class AssignmentCard(BaseModel):
|
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)
|
output_parser = PydanticOutputParser(pydantic_object=AssignmentCard)
|
||||||
|
|
||||||
|
# Шаблон промпта из langchain_core
|
||||||
template = PromptTemplate(
|
template = PromptTemplate(
|
||||||
template=(
|
template=(
|
||||||
"Прочитай описание учебного задания и заполни все поля карточки.\n\n"
|
"Прочитай описание учебного задания и заполни все поля карточки.\n\n"
|
||||||
@@ -42,11 +48,18 @@ def run(raw_text: str) -> None:
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Языковая модель через обёртку langchain_openai
|
||||||
model = ChatOpenAI(model="gpt-4o-mini", temperature=0)
|
model = ChatOpenAI(model="gpt-4o-mini", temperature=0)
|
||||||
|
|
||||||
|
# Цепочка LangChain: промпт | модель | парсер
|
||||||
chain = template | model | output_parser
|
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("Валидированный объект:")
|
||||||
print(card.model_dump())
|
print(card.model_dump())
|
||||||
@@ -61,8 +74,4 @@ def run(raw_text: str) -> None:
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
sample = (
|
main()
|
||||||
"Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. "
|
|
||||||
"Оценка: за полноту и за пример кода."
|
|
||||||
)
|
|
||||||
run(sample)
|
|
||||||
Reference in New Issue
Block a user