{
  "messages": [
    {
      "role": "system",
      "content": "You are a knowledge graph extraction agent for long-form novels. Extract entities and relations from the given text chunk. Return JSON only."
    },
    {
      "role": "user",
      "content": "Ontology constraints (prefer these core types and normalized relations):\nAllowed core entity types:\n- 人物: 角色姓名, 主角/关键人物, 配角\n- 地点: 山岳/洞天, 洞府/殿阁, 城镇/疆域, 秘境\n- 组织: 宗门, 门派, 势力, 机构\n- 物品: 兵器, 法器, 经卷典籍, 其他道具\n- 功法体系: 功法, 法门, 修炼体系\n- 术法神通: 法术, 剑诀, 神通, 招式\n- 境界体系: 练气, 筑基, 金丹, 元婴\n- 生物种族: 妖兽, 异种, 神魔, 灵体\n- 职位称号: 真人, 真君, 掌门, 老祖\n- 事件仪式: 拜师, 祭祀, 闭关, 试炼\n- 概念法则: 大道/天道, 世界规则, 禁忌概念\n- 其他\nNormalized relations:\n- 告知: aliases=说道, 问道, 笑道, 答道, 开口\n- 修炼: aliases=修炼, 修行, 参悟, 参修, 修习\n- 拥有: aliases=拥有, 持有, 携带, 手持, 背着\n- 前往: aliases=前往, 来到, 进入, 回到, 抵达\n- 对抗: aliases=出手, 拔剑, 斩向, 追杀, 打斗\n- 施展: aliases=施法, 施展, 催动, 发动, 召出\nKey rules:\n- 实体 type 必须落在核心类型集合中；subtype 仅作细分，不得替代 type。\n- 若实体更像角色身份标签而非完整人物名，优先使用职位称号。\n- 若实体强调修炼路径与长期体系，优先使用功法体系；强调施展动作时优先使用术法神通。\n- 无法安全判断时允许使用其他，但应在后续 Type Consolidation 中优先收缩。\n\nCHUNK_ID: C0028 | PARA_RANGE: 216-219\n\nFrom the text chunk below, extract entities and relations. Output STRICT JSON with keys: entities (list) and relations (list). Entity schema: {name,type,aliases,attributes,descriptions,evidence,mentions}. mentions is a list of {chunk_id,summary,attributes,evidence}. Relation schema: {subject,relation,object,evidence,mentions}. mentions is a list of {chunk_id,summary,evidence}. Use ontology core types when possible. Do not invent new top-level entity type labels outside the ontology if an existing type fits. Prefer normalized relation names from the ontology alias list. If an existing entity card clearly matches a mention in this chunk, reuse that card's canonical name. If the chunk uses a title, alias, or shortened reference that matches a card, keep it under the same entity instead of splitting it. Keep outputs compact: at most 8 entities and 8 relations for this pass. Each description/evidence/summary should be short (<=30 characters) and avoid full sentences. Limit each entity to <=2 descriptions and <=2 mentions; each relation to <=1 mention. For mentions in this chunk, set chunk_id to the provided CHUNK_ID. Only include information supported by the chunk. Return a single JSON object and nothing else (no markdown, no code fences). If unsure, return {\"entities\":[],\"relations\":[]}.\n\nTEXT CHUNK:\n正嚷间，真君到了，问：“兄弟们，赶到那厢不见了？”众神道：“才在这里围住，就不见了。”二郎圆睁凤眼观看，见大圣变了麻雀儿，钉在树上，就收了法象，撇了神锋，卸下弹弓，摇身一变，变作个雀鹰儿，抖开翅，飞将去扑打。大圣见了，搜的一翅飞起，去变作一只大鹚老，冲天而去。二郎见了，急抖翎毛，摇身一变，变作一只大海鹤，钻上云霄来衔。大圣又将身按下，入涧中，变作一个鱼儿，淬入水内。二郎赶至涧边，不见踪迹。心中暗想道：“这猢狲必然下水去也。定变作鱼虾之类。等我再变变拿他。”果一变变作个鱼鹰儿，飘荡在下溜头波面上。等待片时，那大圣变鱼儿，顺水正游，忽见一只飞禽，似青鹞，毛片不青；似鹭鸶，顶上无缨；似老鹳，腿又不红：“想是二郎变化了等我哩！……”急转头，打个花就走。二郎看见道：“打花的鱼儿，似鲤鱼，尾巴不红；似鳜鱼，花鳞不见；似黑鱼，头上无星；似鲂鱼，腮上无针。他怎么见了我就回去了？必然是那猴变的。”赶上来，刷的啄一嘴。那大圣就窜出水中，一变，变作一条水蛇，游近岸，钻入草中。二郎因衔他不着，他见水响中，见一条蛇撺出去，认得是大圣，急转身，又变了一只朱绣顶的灰鹤，伸着一个长嘴，与一把尖头铁钳子相似，径来吃这水蛇。水蛇跳一跳，又变做一只花鸨，木木樗樗的，立在蓼汀之上。二郎见他变得低贱，--花鸨乃鸟中至贱至淫之物，不拘鸾、凤、鹰、鸦都与交群--故此不去拢傍，即现原身，走将去，取过弹弓拽满，一弹子把他打个踵。\n\n那大圣趁着机会，滚下山崖，伏在那里又变，变一座土地庙儿；大张着口，似个庙门；牙齿变做门扇，舌头变做菩萨，眼睛变做窗棂。只有尾巴不好收拾，竖在后面，变做一根旗竿。真君赶到崖下，不见打倒的鸨鸟，只有一间小庙，急睁凤眼，仔细看之，见旗竿立在后面，笑道：“是这猢狲了！他今又在那里哄我。我也曾见庙宇，更不曾见一个旗竿竖在后面的。断是这畜生弄谊！他若哄我进去，他便一口咬住。我怎肯进去？等我掣拳先捣窗棂，后踢门扇！”大圣听得，心惊道：“好狠！好狠！门扇是我牙齿，窗棂是我眼睛；若打了牙，捣了眼，却怎么是好？”扑的一个虎跳，又冒在空中不见。\n\n真君前前后后乱赶，只见四太尉、二将军一齐拥至道：“兄长，拿住大圣了么？”真君笑道：“那猴儿才自变座庙宇哄我。我正要捣他窗棂，踢他门扇，他就纵一纵，又渺无踪迹。可怪！可怪！”众皆愕然，四望更无形影。真君道：“兄弟们在此看守巡逻，等我上去寻他。”即纵身驾云，起在半空。见那李天王高擎照妖镜，与哪吒驻立云端，真君道：“天王，曾见那猴王么？”天王道：“不曾上来。我这里照着他哩。”真君把那睹变化，弄神通，拿群猴一事说毕，却道：“他变庙宇，正打处，就走了。”李天王闻言，又把照妖镜四方一照，呵呵的笑道：“真君，快去！快去！那猴使了个隐身法，走出营围，往你那灌江口去也。”二郎听说，即取神锋，回灌江口来赶。\n\n却说那大圣已至灌江口，摇身一变，变作二郎爷爷的模样，按下云头，径入庙里。鬼判不能相认，一个个磕头迎接。他坐中间，点查香火：见李虎拜还的三牲，张龙许下的保福，赵甲求子的文书，钱丙告病的良愿。正看处，有人报：“又一个爷爷来了。”众鬼判急急观看，无不惊心。真君却道：“有个甚么齐天大圣，才来这里否？”众鬼判道：“不曾见甚么大圣，只有一个爷爷在里面查点哩。”真君撞进门，大圣见了，现出本相道：“郎君不消嚷，庙宇已姓孙了。”这真君即举三尖两刃神锋，劈脸就砍。那猴王使个身法，让过神锋，掣出那绣花针儿，幌一幌，碗来粗细，赶到前，对面相还。两个嚷嚷闹闹，打出庙门，半雾半云，且行且战，复打到花果山，慌得那四大天王等众，提防愈紧。这康、张太尉等迎着真君，合力努力，把那美猴王围绕不题。"
    }
  ]
}