Extraire des faits à partir d'historiques de conversation
Passons à la vitesse supérieure avec votre historique de conversation ! Vous allez définir des classes pydantic pour extraire, de façon structurée, des faits à partir d'historiques de conversation.
Cela posera les bases du prochain et dernier exercice du cours, où vous effectuerez réellement l'extraction.
Les classes pydantic nécessaires ont déjà été importées, et un llm a déjà été défini.
Cette activité fait partie du cours
Graph RAG avec LangChain et Neo4j
Instructions de l’exercice
- Définissez une classe
pydanticConversationFactpour extraire des faits d'une conversation ; incluez les champsobject,subject,relationshipetsession_idcorrespondant aux descriptions fournies. - Définissez une classe
pydanticConversationFactspour créer des listes d'objetsConversationFact. - Liez le format de sortie structuré au
llmfourni.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Define the ConversationFact with the correct fields
class ____(____):
"""
A class that holds the facts from a conversation in a format of object, subject, predicate.
For example, if the conversation includes the fact that the user likes ice creamthe facts would be:
- object: "Adam"
- subject: "ice cream"
- relationship: "LIKES"
The class also includes a session ID to identify the conversation.
"""
____: str = Field(description="The session ID of the conversation.")
____: str = Field(description="The object of the fact. For example, 'Adam' ")
____: str = Field(description="The subject of the fact. For example, 'Ice cream'")
____: str = Field(description="The relationship between the object and the subject. This should be a single word verb in upper case. For example, 'LIKES' or 'OWNS'")
# Define a ConversationFacts class for creating lists of ConversationFact objects
class ____(____):
"""A class that holds a list of ConversationFact objects."""
facts: list[____] = Field(description="A list of ConversationFact objects.")
# Bind the output to the llm provided
llm_with_output = llm.____(____)