出事之后,你翻得开日志吗
「用户说我们的 AI 给了错误的医疗建议」「监管要求说明某次生成的依据」「模型突然开始输出不该说的内容」——这三件事的共同点是:它们都发生在过去,而答案全在日志里。如果日志只有「请求 ID + 状态码 200」,这三件事都查不了。
LLM 应用的日志与传统 Web 应用有本质区别:要记录的不是「请求-响应」,是「提示-上下文-模型状态-输出-动作」的完整因果链。这篇讲 LLM 日志与审计的设计:记什么、怎么存、怎么查、以及合规的红线。
记什么:LLM 日志的七个字段族
字段族一:请求上下文——谁在问(用户 ID、租户、会话 ID、IP/设备——身份链的完整记录——出事后定位「是哪次会话、哪个用户」)、什么时候(时间戳精确到毫秒——多轮对话的顺序重建)。字段族二:输入——用户输入原文(含多模态的描述——图片的引用与哈希)、检索上下文(RAG 检索到的文档 ID 与分数——「模型看到什么」的完整记录——出错的归因(是模型错了还是检索错了——检索上下文缺失=归因失效——间接注入篇的审计配合)。字段族三:模型状态——模型标识与版本(gpt-4o-2024-11-20——「版本」是归因的关键——模型升级后的行为变化(同一提示不同版本输出不同——没有版本记录的模型行为变化无法归因)、参数(温度、top-p、max tokens——生成随机性的复现依据)。字段族四:输出——模型输出的完整原文(含工具调用的决策——「模型决定调用哪个工具、传什么参数」——「决策链」的记录——Agent 的每次工具调用是一条日志事件)。字段族五:动作与结果——工具执行的返回、外部副作用(发了邮件、改了数据——「副作用日志」——Agent 造成的现实世界变更要单独记录(幂等回滚的依据)。字段族六:安全事件——拒答事件(什么触发了拒答)、越狱尝试的标记、过滤器的拦截记录(「过滤器事件」的独立记录——什么被拦了、为什么——过滤器误伤的分析依赖它)。字段族七:成本与性能——token 消耗、延迟、重试——成本审计(滥用防护篇的对账)与性能优化的基础。
graph TD
A[LLM 日志七字段族] --> B[请求上下文: 身份链+时间]
A --> C[输入: 用户输入+检索上下文<br/>没有检索记录=归因失效]
A --> D[模型状态: 版本+参数<br/>无版本记录=无法归因]
A --> E[输出: 原文+工具调用决策]
A --> F[动作与结果: 工具返回+外部副作用]
A --> G[安全事件: 拒答+越狱+过滤拦截]
A --> H[成本与性能: token+延迟]
怎么存:结构、保留与「上下文的完整性」
结构化日志(structured logging):JSON 的结构化事件流(非文本日志——每类事件一个 schema(提示事件、工具事件、过滤事件的 schema 分立——结构化是「可查询」的前提——查日志不是 grep,是按字段过滤聚合)。链路关联(trace correlation):一次 LLM 调用的全链路 ID(用户请求→检索→模型→工具→响应——trace ID 串起因果链——OpenTelemetry 的 GenAI 语义约定(行业正在统一的日志规范——可观测性标准的标准化——OTel 的 gen-ai 规范让多供应商的日志可聚合)。保留策略与合规的平衡:保留多久(合规要求 vs 存储成本——不同法域不同(中国的日志留存要求、GDPR 的最小化原则——「合规的保留」与「隐私的最小化」的张力——解决方案:分级保留(安全事件日志长留、普通对话短留+脱敏);输入输出的敏感处理——日志里的用户输入可能含 PII(日志的脱敏处理——PII 的 masking(「日志即数据资产」的合规化——日志泄露=二次数据泄露——日志库的权限要严于业务库)。完整性的保障:日志的防篡改(审计日志的不可变存储(append-only、哈希链——「审计日志要能自证清白」——被质疑「日志被改过」时,哈希链证明完整性。
怎么查:审计的三个场景
场景一:质量事故的归因。「模型给了错误答案」的归因路径——按用户/会话定位日志→看检索上下文(检索到了错误的文档?)→看模型版本(版本升级后的行为变化?)→看参数(温度过高?)→看输出(模型的推理过程)——归因的四叉树:检索错/版本变/参数偏/模型真错——没有七字段族,归因树的第一层就断了。场景二:安全事件的响应。「模型输出了不该说的内容」——按安全事件字段定位→确认输出内容→追溯输入(越狱尝试?间接注入?)→评估影响(泄露了什么)→处置(内容下架、口径修正、用户沟通)——「事件的完整时间线」的重建——审计日志让「应急响应」从考古变成查询。场景三:合规的举证。「证明我们做了适当的安全措施」——过滤器事件日志(过滤器的部署与拦截记录)、人工审核的记录(高危场景的人审留痕)、模型的评测记录(上线前的安全评测——「合规的举证责任」在部署者——日志是举证的证据链——监管篇的合规要求在日志层的落地)。
日志与审计的进阶:从「查得到」到「看得懂」
LLM 日志的进阶形态:从「查得到」(可查询的结构化日志)到「看得懂」(自动化的分析与洞察)。「看得懂」层一:质量的自动分析。输出质量的分析管线(幻觉率的自动检测——「质量指标的日报」(每日的拒答率、幻觉率、工具失败率的趋势——「质量指标的异常告警」(幻觉率突增(模型版本变化?数据变化?——「指标异动的自动归因」(指标变化关联变更记录(模型版本、提示词、语料的变更时间线——「变更关联」是归因的自动化——变更日志与质量指标的 join。「看得懂」层二:安全事件的模式挖掘。攻击模式的聚类(越狱尝试的模式识别(同类攻击的变体聚合——「攻击的家族树」(同一来源的攻击会话的关联——「攻击者画像」(攻击的模式与目的的推断——「攻击模式库」的积累(攻击案例的结构化沉淀——红队的资产——「内部攻击数据」是私有评测集的原料(MLSecOps 篇的评测集来源)。「看得懂」层三:成本与价值的洞察。token 消耗的结构分析(成本的大头在哪(用户群/功能/模型——「成本的结构视图」(哪个功能烧钱最多、哪个用户群性价比最低——「成本-价值」的对齐分析(高消耗功能的价值验证——「烧钱的功能要证明价值」的治理依据——成本审计篇的治理落地。「看得懂」的技术底座:分析栈的选择(日志的聚合分析(OLAP 的查询(ClickHouse 类的分析库——「日志库与分析库的分离」(写入用日志库、分析用 OLAP——大规模日志的分析性能——LLM 可观测性平台的选择(自建 vs 商用(LangSmith/LangFuse 类的 LLM 观测平台——「观测平台的选型考量」(自研的可控性 vs 商用的效率——「数据主权」的考量(对话数据的出域合规——观测平台的数据流。日志工程的终极形态:「AI 应用的体检报告」——定期的自动健康报告(质量、安全、成本、性能的四维体检——「体检报告」的受众分层(工程师看细节、管理层看趋势、合规看义务——「一份日志,三份报告」——日志工程的终点不是日志,是「组织的 AI 应用健康度的持续可见」——看不见的才能出事,看得见的都能管理。
高频问答:日志审计的边界
收尾前回答三个高频问题。「日志记录用户对话是否侵犯隐私?」——要按「目的限定」处理:「隐私合规的四个支柱」:告知(隐私政策里明示日志的记录与用途——「明示的范围」(记什么、存多久、谁可见——都要说清楚);同意(必要的同意(「同意的类型」(明示同意(敏感场景)与推定同意(常规场景——法域的差异(GDPR 的严格、国内的明示规则——「同意的分层」);最小化(只记必要的(「最小化的工程」(日志字段的分级(必须记/可记/不记——PII 的脱敏(「脱敏的自动化」(PII 检测+掩码的自动处理——「脱敏的漏网风险」(检测器漏掉的 PII——「日志的定期清洗」(存量日志的定期清洗(过期的敏感数据删除——「清洗的调度」);权利(用户的权利(「用户的数据权利」(删除权(用户的对话日志删除请求——「删除的落地」(备份中的删除难题——「删除的工程」比想象中难——GDPR 的被遗忘权在日志场景的工程实现。「日志会不会拖慢响应?」——异步化解决:「日志的异步架构」(日志的异步写入(不阻塞主链路——「写日志的代价」(同步写=几毫秒的延迟——「异步的取舍」(异步的丢失风险(宕机时的日志丢失——「关键的日志同步写」(安全事件的日志同步、普通对话异步——「分级写入」的策略。日志审计的问答收束:日志工程的终极平衡是「合规要求记的、安全需要查的、隐私允许存的、成本允许扛的」四者的交集——交集的设计就是日志工程的全部手艺——「日志的价值在于出事时能查,日志的风险在于它本身是敏感数据」——管理与被管理,是日志工程的一体两面。
小结
LLM 日志与审计的设计要点:七个字段族(请求上下文、输入(含检索上下文)、模型状态(含版本)、输出(含工具决策)、动作与副作用、安全事件、成本性能——检索记录与模型版本是归因的两大命门);存储的三原则(结构化 schema、trace 链路关联、合规与隐私的平衡——分级保留+脱敏+防篡改);审计的三场景(质量归因的四叉树、安全响应的时间线重建、合规举证的证据链)。LLM 应用的日志与传统日志的本质区别:Web 日志记录「发生了请求」,LLM 日志要记录「发生了思考」——提示、上下文、版本、决策,缺一样,归因的链条就断一节。给工程团队的落地清单:今天就能做的三件事——给每次 LLM 调用加上模型版本字段、给每次 RAG 检索加上文档 ID 记录、给每个工具调用打上独立的日志事件——这三件事不做,你的应用在事故面前是「失忆」的。
在 AI 应用的世界里,日志不是运维的附件,是「责任的存证」——没有日志的 AI 应用,出了事连自辩的资格都没有。
读者留言
COMMENTS 暂无还没有留言,来说第一句?