把 AI 应用日志交给模型分析前,可以先用一个受控解析器统一格式。解析失败的行不能静默丢掉,否则错误发生处可能恰好从分析材料里消失。
需要整理AI应用运行日志的开发者。本文使用 Python 3.11 或以上版本的标准库,先验证一组人工构造的小样本。AI 负责提出实现或解释差异,结果由本地检查决定;这里没有把模型回答当成真实运行结果。

解析混合日志并保留失败行前,先定规则
输入包含JSON日志和LEVEL: message文本两种格式。统一输出保留line、level和message,异常清单保留原行与原因。
只接受INFO、WARN、ERROR三个等级。JSON能解码并不代表业务字段完整;缺少message或等级未知仍要拒绝。
全量对账是输入行数=成功行数+失败行数。空行在本例也记失败;如业务要忽略空行,则单独统计ignored,不能隐含排除。
给 AI 的输入要包含什么
把下面这份输入说明和你的实际样本一起交给可用的 AI 编程助手。示例只含虚构数据;对真实材料先去除账号凭据和个人信息。
写标准库日志解析器,先尝试JSON对象,否则按LEVEL: message解析。统一line/level/message,等级仅INFO WARN ERROR,message非空字符串。失败保留line/raw/reason。禁止忽略异常,检查成功数+失败数等于输入数。
要求模型保留检查条件,并把它认为缺少的业务定义列出来。若回答改变了输入字段、忽略异常分支或直接删除原材料,先要求修正,再运行。提示词的作用是缩小任务范围,验收仍以代码和数据为准。
保存并运行最小验证程序
下方程序把关键规则和验证用例放在同一个可复跑示例中,便于先理解输入如何变成输出,再用它检查 AI 给出的实现。
新建一个空目录,把下面代码保存为 check.py,在该目录打开终端,运行 python -X utf8 check.py。代码自带示例输入,不需要安装第三方库。
import json
lines=['{"level":"INFO","message":"start"}','ERROR: model timeout','broken line','{"level":"INFO"}']
ok=[]; bad=[]
for number,raw in enumerate(lines,1):
try:
if raw.startswith('{'):
record=json.loads(raw)
if not isinstance(record,dict): raise ValueError('需要对象')
level,message=record.get('level'),record.get('message')
else:
if ': ' not in raw: raise ValueError('缺少分隔符')
level,message=raw.split(': ',1)
if level not in {'INFO','WARN','ERROR'}: raise ValueError('未知等级')
if not isinstance(message,str) or not message.strip(): raise ValueError('消息为空')
ok.append({'line':number,'level':level,'message':message})
except (ValueError,TypeError) as e:
bad.append({'line':number,'raw':raw,'reason':str(e)})
assert len(ok)+len(bad)==len(lines)
assert [r['line'] for r in bad]==[3,4]
print('accepted',len(ok),'rejected',len(bad))
print('failed_lines',[r['line'] for r in bad])
怎样判断结果符合要求
成功2行、失败2行,失败行号为3和4。检查第4行:它是合法JSON,失败原因却是消息缺失,说明语法校验与字段校验都需要保留。
下方是这份最小示例在本地执行得到的输出。它验证示例程序与断言的关系,不代表任何 AI 模型一次就能生成同样代码,也不构成性能或生产可靠性结论。
accepted 2 rejected 2
failed_lines [3, 4]
只用try/except包围json.loads无法发现缺字段。AI若把get默认设成空字符串再强行输出“成功”,就破坏了业务规则。
文本中的第一个分隔符之后全部作为message,因此正文再含冒号也能保留。
哪些失败必须停下来处理
多行堆栈、包含换行的JSON和二进制日志不属于按行示例,需要先定义事件边界。
日志可能含令牌和客户内容,解析器成功不代表可直接上传AI,应在结构化后按字段脱敏。
异常清单要限制单条长度但保留定位依据,避免巨型错误行拖垮报告。
接入自己的任务前再核对一次
先取一小段无隐私日志让AI生成解析建议,再用人工标注真值比较每行结果。
正式运行输出成功与失败两个文件,并对账行数。AI总结引用原行号,读者可以回到来源核对。
资料与适用范围
json.loads解析JSON文本并在语法无效时抛出JSONDecodeError;结构合法仍需单独验证字段。以下链接核对于 2026-10-03;运行环境及额外依赖按本文前述说明。
相关基础可阅读 AI 日志时间怎么统一?用 pandas 定位无效值并转换为 UTC。本文的重点是解析混合日志并保留失败行,可以把两项检查作为不同步骤保留。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33340.html