CommencezCommencez gratuitement

Demander une sortie structurée

Lorsque vous créez des graphes lexicaux, vous avez extrait le nom du personnage et ses répliques à partir du texte au moyen d'un séparateur de texte, mais cette approche fait souvent perdre du contexte autour des limites de découpage. Par exemple, les didascalies incluses dans le texte peuvent servir à déterminer à qui le personnage s'adresse à ce moment-là.

Vous utiliserez la classe Character à l'intérieur d'une nouvelle classe Line pour décrire la réplique prononcée, ainsi que l'intervenant et la liste des personnages à qui la réplique est adressée. Vous créerez aussi une classe d'enrobage LineOutput pour extraire plusieurs de ces répliques en une seule fois.

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

Cette activité fait partie du cours

Graph RAG avec LangChain et Neo4j

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