跳到主要内容

审计日志 & 对话留痕

设计原则

  • 全量记录:所有对话输入/输出均留痕
  • 不可篡改:写入后不可修改,只可查询
  • 可搜索:支持按员工/时间/关键词检索
  • 可导出:支持 CSV 导出,满足合规要求

审计字段

字段类型说明
idUUID唯一记录 ID
user_emailstring员工邮箱
timestampdatetimeUTC 时间戳
instance_idstring实例 ID
session_keystringSession Key
modelstring使用的模型
input_texttext用户输入
output_texttextAI 输出
input_tokensint输入 Token 数
output_tokensint输出 Token 数
latency_msint响应耗时(毫秒)
cost_usddecimal本次费用(美元)

技术实现

采集方式(LiteLLM 回调)

# litellm callback
import litellm
from litellm.integrations.custom_logger import CustomLogger

class AuditLogger(CustomLogger):
async def async_log_success_event(self, kwargs, response, start_time, end_time):
await db.audit_logs.insert({
"user_email": kwargs.get("user"),
"timestamp": start_time,
"model": kwargs.get("model"),
"input_text": kwargs["messages"][-1]["content"],
"output_text": response.choices[0].message.content,
"input_tokens": response.usage.prompt_tokens,
"output_tokens": response.usage.completion_tokens,
})

litellm.callbacks = [AuditLogger()]

存储方案

  • 热数据(最近 30 天):PostgreSQL,快速查询
  • 冷数据(30 天以上):BigQuery,低成本海量存储

查询界面

管理后台提供:

  • 按员工邮箱过滤
  • 按时间范围过滤
  • 关键词全文搜索
  • 导出 CSV