Yêu cầu đầu ra có cấu trúc
Khi tạo lexical graph, bạn đã trích xuất tên nhân vật và các câu thoại từ văn bản bằng một bộ tách văn bản, nhưng cách này thường làm mất ngữ cảnh xung quanh ranh giới tách. Ví dụ, phần chỉ dẫn sân khấu trong văn bản có thể được dùng để xác định nhân vật đang nói chuyện với ai tại thời điểm đó.
Bạn sẽ dùng lớp Character bên trong một lớp Line mới để mô tả câu thoại, kèm theo người nói và danh sách các nhân vật mà câu thoại đang hướng tới. Bạn cũng sẽ tạo một lớp bọc LineOutput để trích xuất nhiều câu thoại như vậy cùng lúc.
Biến prompt chứa hướng dẫn trích xuất đã được định nghĩa sẵn cho bạn, cùng với một instance LLM là llm.
Bài tập này là một phần của khóa học
Graph RAG với LangChain và Neo4j
Hướng dẫn bài tập
- Cập nhật lớp
LineOutputđể yêu cầu một danh sách các đối tượngLine. - Định nghĩa một LLM tạo đầu ra có cấu trúc bằng cách sử dụng lớp
LineOutput.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)