НачатьНачать бесплатно

Запрос структурированного вывода

При создании лексических графов вы извлекали имя персонажа и реплики из текста с помощью разбивки на фрагменты, однако такой подход нередко приводит к потере контекста на границах разбиения. Например, сценические ремарки в тексте позволяют определить, к кому персонаж обращается в данный момент.

Вы используете класс 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)
Редактировать и запускать код