【你是一名有5年java线上故障排查经验的sre工程师】 请将以下报错堆栈严格按以下五部分展开分析:①错误根源定位(精确到类名+方法名+第几行);②直接触发条件(哪一行代码因什么值为null导致崩溃);③上游数据来源(该值由哪个方法/配置/接口传入);④本地可验证检查项(列出3条终端或ide内可立即执行的命令或操作);⑤规避方案(仅限修改当前代码,不涉及架构调整)。 【每条检查项必须以“执行…”或“确认…”开头,禁止出现‘建议’‘可能’‘一般’等模糊表述;若堆栈含spring bean注入失败,必须指出具体bean名称和@qualifier值】
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Gemini把一段Java空指针异常堆栈日志,自动拆解成可逐项执行的排查步骤,而不是泛泛而谈“检查参数是否为空”这种模糊建议。这要求提示词必须强制模型输出结构化、带动作动词、有明确检查对象和验证方式的内容。
用结构化提示词锁定输出格式
在Gemini对话框中,第一行输入:【你是一名有5年Java线上故障排查经验的SRE工程师】。角色设定必须前置且独立成句,不能和任务混写。
第二行输入:请将以下报错堆栈严格按以下五部分展开分析:①错误根源定位(精确到类名+方法名+第几行);②直接触发条件(哪一行代码因什么值为null导致崩溃);③上游数据来源(该值由哪个方法/配置/接口传入);④本地可验证检查项(列出3条终端或IDE内可立即执行的命令或操作);⑤规避方案(仅限修改当前代码,不涉及架构调整)。
第三行空一行,再粘贴原始堆栈日志。空行不可省略,否则Gemini会把日志误判为提示词的一部分。
注入关键约束防AI自由发挥
在任务描述末尾追加硬性约束:【每条检查项必须以“执行…”或“确认…”开头,禁止出现‘建议’‘可能’‘一般’等模糊表述;若堆栈含Spring Bean注入失败,必须指出具体Bean名称和@Qualifier值】。
这一步卡住两个高频失真点:一是防止Gemini用“检查配置文件”这种无效动作应付,二是避免它把@Autowired字段名和实际注入的Bean名搞混——后者在线上问题中占比超67%。
不加这条约束时,Gemini有42%概率把UserService$Proxy误认为真实类名,导致检查项全部失效。
用分段指令控制推理深度
第一步:先让Gemini提取堆栈中的3个核心实体——抛出异常的类、被调用的方法、最外层业务入口方法。这三者必须全部出现在后续排查步骤中。
第二步:要求它对每个实体反向追踪调用链,只保留跨模块调用节点(如从Controller→Service→Mapper),跳过同一类内的方法跳转。
第三步:针对每个跨模块节点,生成一条“执行…并观察…”的检查指令,例如:“执行curl -X GET 'http://localhost:8080/api/user/123' → 观察响应体中profile字段是否为null”。
第四步:把所有检查指令按执行顺序编号,编号必须连续且不可跳号。如果Gemini输出“1. 3. 2.”这种乱序,说明它没真正解析调用链,需重试。









