Kom igångKom igång gratis

Begära strukturerade utdata

När du skapade lexikala grafer extraherade du karaktärens namn och replikerna från texten med hjälp av en textdelare – men den metoden leder ofta till att kontexten kring delningsgränserna går förlorad. Till exempel kan scenanvisningarna i texten användas för att avgöra vem karaktären talar till just då.

Du använder klassen Character inuti en ny Line-klass för att beskriva repliken som framförs, tillsammans med den som talar och en lista över karaktärer som repliken riktar sig till. Du skapar också en wrapper-klass, LineOutput, för att extrahera flera sådana repliker på en gång.

Variabeln prompt med extraktionsinstruktioner har redan definierats åt dig, liksom en LLM-instans som llm.

Den här övningen är en del av kursen

Graph RAG med LangChain och Neo4j

Visa kurs

Övningsinstruktioner

  • Uppdatera klassen LineOutput så att den begär en lista med Line-objekt.
  • Definiera en LLM som genererar strukturerade utdata med hjälp av klassen LineOutput.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod