使用已抽取的實體
文本中的 Dramatis Personæ 段落描述了劇中角色,可視為完整且可信的依據。這些資訊也包含了角色之間的人際關係。
Dramatis Personæ
ESCALUS, Prince of Verona.
MERCUTIO, kinsman to the Prince, and friend to Romeo.
PARIS, a young Nobleman, kinsman to the Prince.
Page to Paris.
請完成程式碼,使用 character_chain 從 personae 文字中抽取角色,接著利用角色清單,透過 relationship_chain 從文本建立角色關係清單。
visualize_families() 函式會在圖形中顯示產生的關係。
本練習屬於課程
使用 LangChain 與 Neo4j 的 Graph RAG
練習說明
- 呼叫
character_chain,並傳入personae,以抽取角色實體。 - 在角色名稱、
personae,以及已抽取且為 JSON 格式的角色(character_json)上呼叫relationship_chain,以抽取所列三位角色與personae中其他角色之間的關係。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Extract characters from the personae variable
output = character_chain.____({"personae": ____})
character_json = dumps([dict(character) for character in output.characters])
# Extract the relationships
for character_name in ["Romeo", "Juliet", "Friar Lawrence"]:
relationship_output = relationship_chain.invoke({
"character_name": character_name,
"personae": ____,
"characters": ____
})
for relationship in relationship_output.relationships:
all_relationships.append(relationship)
visualize_families(all_relationships, output)