Meminta keluaran terstruktur
Saat membuat graf leksikal, Anda mengekstraksi nama karakter dan dialog dari teks menggunakan pemisah teks, tetapi pendekatan ini sering menyebabkan konteks di sekitar batas pemisahan hilang. Misalnya, petunjuk panggung yang ada dalam teks dapat digunakan untuk menentukan kepada siapa karakter tersebut sedang berbicara saat itu.
Anda akan menggunakan kelas Character di dalam kelas Line baru untuk mendeskripsikan dialog yang diucapkan, beserta pembicaranya dan daftar karakter yang menjadi lawan bicara. Anda juga akan membuat kelas pembungkus LineOutput untuk mengekstrak beberapa dialog ini sekaligus.
Variabel prompt yang berisi instruksi ekstraksi telah disiapkan untuk Anda, bersama dengan instance LLM sebagai llm.
Latihan ini merupakan bagian dari kursus
Graph RAG dengan LangChain dan Neo4j
Instruksi latihan
- Perbarui kelas
LineOutputuntuk meminta daftar objekLine. - Definisikan LLM yang menghasilkan keluaran terstruktur menggunakan kelas
LineOutput.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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)