CommencerCommencez gratuitement

Demander une sortie structurée

Lors de la création de graphes lexicaux, vous avez extrait le nom du personnage et les répliques à partir du texte à l’aide d’un découpeur de texte, mais cette approche entraîne souvent une perte de contexte aux points de séparation. Par exemple, les didascalies présentes dans le texte peuvent servir à déterminer à qui le personnage s’adresse à ce moment-là.

Vous allez utiliser la classe Character au sein d’une nouvelle classe Line pour décrire la réplique prononcée, ainsi que l’orateur et la liste des personnages à qui la réplique est adressée. Vous créerez également une classe enveloppe LineOutput pour extraire plusieurs de ces répliques en une seule fois.

La variable prompt contenant les instructions d’extraction a été définie pour vous, ainsi qu’une instance de LLM sous le nom llm.

Cet exercice fait partie du cours

<cours>Graph RAG avec LangChain et Neo4j</cours>
Voir le cours

Instructions de l’exercice

  • Mettez à jour la classe LineOutput pour demander une liste d’objets Line.
  • Définissez un LLM qui génère des sorties structurées en utilisant la classe LineOutput.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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)
Modifier et exécuter le code