使用提取的实体
文本中的 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)