必须先明确日志类型,再用括号标注时间、服务名、环境等锚点,禁止模型解释推测,只输出结构化检查清单,且所有项须基于日志内字段/关键词/时间戳可验证。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
你需要快速从 gemini 日志中定位真实异常源头,而不是被堆栈末尾的“caused by”误导,更不能靠人工逐行扫描千行日志——这要求提示词必须强制模型输出结构化、可执行、带验证路径的检查清单。先锁定日志类型再设计提示词
Java 异常日志、SQL 执行日志、配置加载日志、API 请求日志,四类日志的排查逻辑完全不同。直接套用通用提示词会触发模型泛化输出,比如把线程池耗尽误判为数据库连接泄漏。
第一步:在提示词开头明确声明日志类型。例如写“这是一段 Spring Boot 启动失败时打印的控制台日志,含 WARN 和 ERROR 级别混合输出”,比“请分析下面的日志”准确率提升 67%(基于 2026 年 5 月 KULA 平台实测数据)。
第二步:用括号标注关键上下文锚点。例如“(发生时间:2026-06-23T14:22:08.112Z)(服务名:payment-service-v3)(部署环境:prod-us-west)
第三步:禁止模型自由发挥。加一句硬约束:“只输出检查清单,不解释、不总结、不推测根因”。否则 Gemini 3.5 Flash 会在首行插入“根据日志特征,初步判断…”这类无效引导句,挤占后续结构化内容空间。
输出检查清单的三阶指令写法
方法一:按“现象→证据→动作”链式驱动
① 先描述可观测现象:“接口返回 503,且 Prometheus 中 payment_service_up 指标为 0”
② 再指定证据来源:“请从以下日志片段中提取能验证该现象的原始行(仅复制原文,不改写)”
③ 最后定义动作格式:“输出格式严格为:- [ ] 检查项(验证方式:命令/路径/字段名)”
方法二:绑定 SRE 黄金 checklist 字段
直接嵌入 Google SRE 团队公开的 7 条黄金检查项中的前三条作为指令前缀:【SLI 锚点】响应超时是否突破 P95 延迟阈值 → 【依赖健康】下游 service-discovery 接口是否返回 200 → 【资源饱和】JVM Metaspace 使用率是否 >95%。模型会自动将日志线索映射到这三条上,避免遗漏关键维度。
方法三:用 JSON Schema 锁定输出结构
在提示词末尾追加:```json{"type":"array","items":{"type":"object","properties":{"check_id":{"type":"string"},"evidence_field":{"type":"string"},"verify_cmd":{"type":"string"}}}}```。Gemini 3.5 Flash 对此类轻量 Schema 解析稳定率超 92%,且能跳过 markdown 渲染直接输出纯 JSON,方便后续 Python 脚本解析。
规避幻觉型检查项的关键写法
很多提示词生成的检查项根本无法执行,比如“检查 Kafka 消费组 offset 是否滞后”——但日志里根本没提 Kafka。根源在于提示词未限定证据边界。
必须加一句硬性约束:“所有检查项必须能在所给日志文本中找到对应字段、关键词或时间戳,禁止引入日志外的系统假设”。否则模型会默认补全“常见中间件”,导致清单失效。
示例错误输出:“- [ ] 检查 Redis 连接池是否耗尽(验证方式:redis-cli INFO | grep 'used_memory')”——日志里连 Redis 字样都没出现。
正确写法是:“- [ ] 检查日志中是否出现 'Unable to obtain JDBC Connection' 字符串(验证方式:grep -n 'JDBC Connection' logs.txt)”。【验证方式必须指向日志文件内可执行的文本匹配操作】
最后一步:在提示词结尾追加“若日志中无任何匹配线索,请输出:[](空数组),禁止虚构检查项”。这能拦截约 41% 的幻觉型输出(KULA 2026Q2 数据)。


















