Solicitarea unei ieșiri structurate
La crearea grafurilor lexicale, ai extras numele personajului și replicile din text folosind un separator de text, însă această abordare duce adesea la pierderea contextului în jurul punctelor de separare. De exemplu, indicațiile scenice din text pot fi folosite pentru a determina cui i se adresează personajul în acel moment.
Vei folosi clasa Character în interiorul unei noi clase Line pentru a descrie replica rostită, împreună cu vorbitorul și o listă de personaje cărora li se adresează replica. Vei crea, de asemenea, o clasă container LineOutput pentru a extrage mai multe astfel de replici simultan.
Variabila prompt, care conține instrucțiunile de extracție, a fost deja definită pentru tine, împreună cu o instanță LLM denumită llm.
Acest exercițiu face parte din cursul
Graph RAG cu LangChain și Neo4j
Instrucțiuni pentru exercițiu
- Actualizează clasa
LineOutputpentru a solicita o listă de obiecteLine. - Definește un LLM care generează ieșiri structurate folosind clasa
LineOutput.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)