Aan de slagBegin gratis

Een gestructureerde output aanvragen

Bij het maken van lexicale grafen haalde je de naam van het personage en de tekstregels uit de tekst met een text splitter, maar die aanpak zorgt er vaak voor dat context rond de scheidingsgrenzen verloren gaat. Zo kun je bijvoorbeeld de regieaanwijzingen in de tekst gebruiken om te bepalen tot wie het personage op dat moment spreekt.

Je gaat de klasse Character gebruiken binnen een nieuwe klasse Line om de uitgesproken regel te beschrijven, samen met de spreker en een lijst met personages tot wie de regel gericht is. Je maakt ook een wrapperklasse LineOutput om meerdere van deze regels in één keer te extraheren.

De variabele prompt met extractie-instructies is al voor je gedefinieerd, samen met een LLM-instantie als llm.

Deze oefening maakt deel uit van de cursus

Graph RAG met LangChain en Neo4j

Bekijk cursus

Oefeninstructies

  • Werk de klasse LineOutput bij zodat er een lijst met Line-objecten wordt aangevraagd.
  • Definieer een LLM die gestructureerde outputs genereert met de klasse LineOutput.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

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)
Code bewerken en uitvoeren