Zacznij terazZacznij za darmo

Żądanie ustrukturyzowanego wyjścia

Podczas tworzenia grafów leksykalnych wyodrębniałeś imię postaci oraz kwestie z tekstu za pomocą narzędzia do podziału tekstu, jednak takie podejście często powoduje utratę kontekstu wokół granic podziału. Na przykład didaskalia zawarte w tekście można wykorzystać do ustalenia, do kogo dana postać się zwraca.

Użyjesz klasy Character wewnątrz nowej klasy Line, aby opisać wypowiadaną kwestię, mówiącego oraz listę postaci, do których kwestia jest kierowana. Stworzysz też klasę opakowującą LineOutput, która pozwoli wyodrębnić kilka takich kwestii naraz.

Zmienna prompt zawierająca instrukcje ekstrakcji została już dla ciebie zdefiniowana, podobnie jak instancja LLM o nazwie llm.

To ćwiczenie jest częścią kursu

Graph RAG z LangChain i Neo4j

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaktualizuj klasę LineOutput, aby żądała listy obiektów Line.
  • Zdefiniuj LLM generujący ustrukturyzowane dane wyjściowe, korzystając z klasy LineOutput.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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)
Edytuj i uruchom kod