Запит структурованого виводу
Під час створення лексичних графів ви виділяли імʼя персонажа та репліки з тексту за допомогою розбивача тексту, але такий підхід часто призводить до втрати контексту на межах фрагментів. Наприклад, ремарки в тексті можна використати, щоб визначити, до кого саме персонаж звертається в цей момент.
Ви використаєте клас Character всередині нового класу Line, щоб описати вимовлену репліку разом із мовцем і списком персонажів, до яких звернена ця репліка. Ви також створите обгортку LineOutput, щоб витягувати одразу кілька таких реплік.
Змінну prompt із інструкціями для витягання вже визначено для вас, так само як і екземпляр LLM під назвою llm.
Ця вправа є частиною курсу
Graph RAG з LangChain і Neo4j
Інструкції до вправи
- Оновіть клас
LineOutput, щоб запитувати список обʼєктівLine. - Визначте LLM, який генеруватиме структурований вивід за допомогою класу
LineOutput.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
class Line(BaseModel):
text: str = Field(..., description="The text of the line")
spoken_by: Character = Field(..., description="The character who speaks the line")
spoken_to: Optional[list[Character]] = Field(None, description="The character who the line is spoken to")
class LineOutput(BaseModel):
# Request more than one line from the text
lines: ____[Line] = Field(..., description="The lines from the text")
# Return an instance of LineOutput
structured_llm = llm.____(____)
for line in structured_llm.invoke(prompt.format_messages(text=text)):
print(line)