Comece agoraComece grátis

Solicitando uma saída estruturada

Ao criar grafos lexicais, você extraiu o nome do personagem e as falas do texto usando um divisor de texto, mas essa abordagem muitas vezes faz com que se perca o contexto nas fronteiras dos trechos. Por exemplo, as rubricas de cena presentes no texto podem ser usadas para determinar com quem o personagem está falando naquele momento.

Você usará a classe Character dentro de uma nova classe Line para descrever a fala, junto com quem a pronuncia e a lista de personagens para quem a fala é dirigida. Você também criará uma classe wrapper LineOutput para extrair várias dessas falas de uma só vez.

A variável prompt, que contém as instruções de extração, já foi definida para você, assim como uma instância de LLM chamada llm.

Este exercicio faz parte do curso

Graph RAG com LangChain e Neo4j

Ver curso

Instruções do exercicio

  • Atualize a classe LineOutput para solicitar uma lista de objetos Line.
  • Defina um LLM que gere saídas estruturadas usando a classe LineOutput.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

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)
Editar e Executar Código