news 2026/8/30 10:04:01

litellm 回调系统:5 个事件钩子 × 4 个监控平台的自定义日志与监控集成指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
litellm 回调系统:5 个事件钩子 × 4 个监控平台的自定义日志与监控集成指南

litellm 回调系统:5 个事件钩子 × 4 个监控平台的自定义日志与监控集成指南

【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm

多模型网关上线两周,混用了 6 个 provider 的 deployment,错误率突然涨了一倍,只能去各平台后台手动翻日志,对齐是哪个请求挂了、花了多少钱。litellm 回调系统把请求生命周期拆成几个固定事件点,所有 provider 的请求、响应、异常都能写进你自己指定的日志目标,排查时只需要看一处。

最小配置启用第一个回调

代理模式下三步即可,不需要写任何代码:

  1. 在配置文件里声明回调名,只写平台名,litellm 内部会注册对应的 logger:
# proxy_server_config.yaml general_settings: success_callback: ["langfuse"]
  1. 导出该平台要求的凭据环境变量(Langfuse 对应LANGFUSE_PUBLIC_KEYLANGFUSE_SECRET_KEY),凭据清单可对照 集成目录文档。
  2. 重启进程,发一个测试请求,到 Langfuse 后台确认 trace 逐条出现即完成。

SDK 直连场景则是把回调实例传给completion()callbacks参数,或挂到全局litellm.callbacks,效果相同。

5 个事件钩子的触发时机与可取数据

回调基类 CustomLogger 把一次调用切成下面的事件点,每个钩子都有async_*同名变体:

事件钩子触发时机可获取数据典型用途
log_pre_api_call请求发往 provider 之前model、messages、完整 kwargs参数改写、请求拦截、前置审计
log_post_api_call响应解析完成之后请求 + 响应 + start/end 时间戳算耗时、统计 token 与成本
log_stream_event流式响应中每个 chunk当前 chunk 内容流式转发、逐 chunk 打点
log_success_event调用成功收尾时同 post 事件,无异常成功侧指标、批量落盘
log_failure_event调用抛异常时同 post 事件 + 异常信息告警、错误类型分布

需要注意两点:同步与异步钩子是独立方法,只实现同步版在 async 路径上不会触发;流式调用只会走到log_stream_event,不会触发 post 钩子。

按场景选平台:告警、指标、追踪、质量对比表

内置适配器超过 15 个,按目的分四类选型更清晰:

场景工具核心能力接入成本
告警响应SlackAlerting预算阈值(如用到 80%)、慢请求、hanging 请求经 webhook 推到 Slack/MS Teams,支持按告警类型分流不同渠道低:一个 webhook URL + 阈值参数
性能观测Datadog调用延迟分位、按 token 的成本指标、错误类型分布,可走 API key 或本地 agent 两种通道中:需 API key 或部署 agent
调试追踪LangSmith以 span 串起完整调用链,看对话上下文与中间状态低:2 个环境变量
质量监控Arize(Phoenix)评测、模型行为质量观测高:需要额外配置评测流程

选型上,值班团队先上 SlackAlerting 兜底,性能调优再补 Datadog,开发和联调阶段用 LangSmith 最省事。

继承 CustomLogger 的最小自定义处理器模板

内置工具覆盖不了的场景(比如合规脱敏日志),继承基类重写对应钩子即可:

import json from litellm.integrations.custom_logger import CustomLogger class RedactedLogger(CustomLogger): def log_post_api_call(self, kwargs, response_obj, start_time, end_time): record = { "model": kwargs.get("model"), "duration_s": round(end_time - start_time, 3), # 不写 messages 原文,只留可追溯元数据 } with open("/var/log/litellm/access.log", "a") as f: f.write(json.dumps(record, ensure_ascii=False) + "\n")

启用时completion(..., callbacks=[RedactedLogger(turn_off_message_logging=True)])。三个要点:turn_off_message_logging=True让标准日志 payload 不再携带消息原文,是控制日志体积的第一道闸;高 QPS 下不要逐条写,参考 CustomBatchLogger 做批量聚合上报;并发压力大的环境自行加采样(如 10% 记录全量、其余只记元数据)。

回调不触发、日志过大等常见坑排查

现象原因处理
回调完全不触发只实现了同步钩子而请求走 async 路径,或事件类型没对上(流式只走log_stream_event补实现async_log_*变体;流式场景单独实现 stream 钩子
日志体积暴涨每条记录都带 messages 全文构造时传turn_off_message_logging=True,或自行截断 payload 中的 content
监控指标缺失Prometheus 指标服务未启动或指标未注册检查 prometheus_services.py 中指标注册与抓取配置
只部分调用有数据general_settings漏写回调名,或凭据环境变量未设置,logger 初始化时静默跳过对照 集成文档 补齐回调名与环境变量
代理端没数据、SDK 端有代理读general_settings,SDK 读litellm.callbacks,两处配置不通用明确生效面,两边各配一次

回调系统只覆盖日志与监控这一层:内容护栏、预算和限流由 guardrails 与 budget manager 各自负责,路由与负载均衡在 router 模块,混用时不要把它们的职责算到回调里。完整钩子签名(含 prompt 管理、pre-routing 等扩展钩子)以 CustomLogger 源码 为准,各平台的接入细节见 集成目录。

【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 10:03:18

如何免费用 Jellyfin 搭建家庭照片库:3 步上手加避坑指南

如何免费用 Jellyfin 搭建家庭照片库:3 步上手加避坑指南 【免费下载链接】jellyfin The Free Software Media System - Server Backend & API 项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin 你是不是也翻遍手机相册,却找不到去年夏天和女儿在公园的那…

作者头像 李华
网站建设 2026/8/30 10:02:58

Windows X Lite 容器化部署指南:在 Docker 里跑通轻量 Windows 环境

Windows X Lite 容器化部署指南:在 Docker 里跑通轻量 Windows 环境 【免费下载链接】windows Windows inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/wi/windows 本指南介绍 Windows X Lite 容器化部署:基于 docku…

作者头像 李华
网站建设 2026/8/30 10:01:39

如何用 LiteLLM 缓存为大模型重复请求降本提速

如何用 LiteLLM 缓存为大模型重复请求降本提速 【免费下载链接】litellm The fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenA…

作者头像 李华
网站建设 2026/8/30 9:59:56

12岁小学生重构代码:低龄编程中的代码可读性训练

重构代码这四个字放在12岁小学生身上,天然自带话题感。很多人第一反应是怀疑:一个小学刚毕业的孩子,语法都没完全学明白,谈什么重构?但如果你真的看过少儿编程课上的修改记录,会发现这个说法并不夸张&#…

作者头像 李华