Opik Python SDK 如何配置离线回退与消息重放参数【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llm你的应用通过 Opik Python SDK 上报 tracing 数据但网络中断时不希望丢失这些消息SDK 内置的离线回退offline fallback机制会在连不上 Opik 服务器时把消息持久化到本地 SQLite 数据库网络恢复后自动分批重放replay回服务器。本文介绍如何调整这套机制的连接探测与重放参数——包括 5 个可调参数的环境变量与配置文件写法、不同部署环境下的调优取值以及重放行为失效时的验证与排查方法。适用前提该功能仅在 Opik Python SDK 中提供且默认开启、无需任何配置即可工作TypeScript SDK 没有此功能。机制与保护范围确认你的消息类型在覆盖范围内离线回退在后台分三个阶段运行检测Detection后台线程OpikConnectionMonitor周期性 ping 服务器的/is-alive/ping端点ping 失败或消息发送遇到连接错误时SDK 将连接标记为不可用。存储Storage连接不可用期间每条新消息立即写入系统临时目录下的本地 SQLite 数据库断线瞬间正在发送中的消息也会被重新标记为失败并写入同一存储。重放Replay当OpikConnectionMonitor检测到服务器恢复可达后ReplayManager线程按可配置的批次读取存储的消息重新注入 SDK 的正常处理管线随后像普通消息一样投递。服务器确认收到后对应消息会从数据库中删除SQLite 数据库在 SDK 关闭时自动清理。以下 SDK 操作产生的消息类型都受离线回退保护完整清单见源文档client.trace()、trace.update()、trace.span()/client.span()、span.update()、client.log_traces_feedback_scores()、client.log_spans_feedback_scores()、client.log_threads_feedback_scores()、Guardrail 评估、experiment.insert()以及文件附件。如果你的操作不在上表内离线回退不会兜底这一点在判断为什么没重放之前需要先确认。配置五个参数环境变量或 ~/.opik.config离线回退开箱即用但你可以按环境调整其行为。参数有两种设置方式均在启动应用前生效。方式一环境变量# 连接探测的 ping 间隔秒默认 10 export OPIK_CONNECTION_MONITOR_PING_INTERVAL10 # 每次连通性 ping 的超时秒默认 5 export OPIK_CONNECTION_MONITOR_CHECK_TIMEOUT5 # 恢复后每个批次重放的消息数默认 50 export OPIK_REPLAY_BATCH_SIZE50 # 重放批次之间的延迟秒用于控制吞吐默认 0.5 export OPIK_REPLAY_BATCH_REPLAY_DELAY0.5 # 重放管理线程检查连接状态的间隔秒默认 0.3 export OPIK_REPLAY_TICK_INTERVAL0.3方式二配置文件在~/.opik.config文件的[opik]段添加参数。下例中your-api-key需替换为你自己的 API key该占位符来自源文档示例代表读者必须提供的值[opik] url_override https://www.comet.com/opik/api api_key your-api-key # Offline fallback tuning connection_monitor_ping_interval 10 connection_monitor_check_timeout 5 replay_batch_size 50 replay_batch_replay_delay 0.5 replay_tick_interval 0.3配置文件与url_override、api_key等常规配置放在同一文件里。~/.opik.config通常由opik configure命令创建也可以手动维护详见 SDK 配置文档。参数速查参数环境变量默认值文档说明connection_monitor_ping_intervalOPIK_CONNECTION_MONITOR_PING_INTERVAL10两次服务器健康 ping 之间的秒数。值越小故障检测越快代价是略多的网络流量connection_monitor_check_timeoutOPIK_CONNECTION_MONITOR_CHECK_TIMEOUT5等待 ping 响应的秒数超时即认为服务器不可达replay_batch_sizeOPIK_REPLAY_BATCH_SIZE50单批重放的消息数。内存受限环境应调小replay_batch_replay_delayOPIK_REPLAY_BATCH_REPLAY_DELAY0.5重放批次之间的暂停秒数。调大可降低恢复期间对服务器的压力replay_tick_intervalOPIK_REPLAY_TICK_INTERVAL0.3重放管理线程两次循环之间的秒数。调小让 SDK 对连接恢复反应更快这五个字段及其默认值与 SDK 源码一致可在 sdks/python/src/opik/config.py 中核对参数实际被接入连接监控与重放线程的位置见 sdks/python/src/opik/api_objects/connection_resources.py。Python SDK 的配置优先级为构造函数参数 → 环境变量 → 配置文件 → 默认值。按环境调优四种典型取值可选分支源文档针对四类环境给出了具体取值按需选择其一即可不需要全部设置。高吞吐应用每秒记录大量 trace 时故障期间会积压大量消息。希望恢复后尽快清空积压就加大批次、缩短批次间隔export OPIK_REPLAY_BATCH_SIZE200 export OPIK_REPLAY_BATCH_REPLAY_DELAY0.1内存受限环境限制重放期间从数据库读取消息所占用的内存export OPIK_REPLAY_BATCH_SIZE10 export OPIK_REPLAY_BATCH_REPLAY_DELAY1.0慢速或不稳定网络缩短 ping 间隔让 SDK 在故障开始后尽快停止尝试直发、转入落盘export OPIK_CONNECTION_MONITOR_PING_INTERVAL5 export OPIK_CONNECTION_MONITOR_CHECK_TIMEOUT3追求快速恢复检测最小化服务器恢复到重放开始之间的延迟export OPIK_CONNECTION_MONITOR_PING_INTERVAL5 export OPIK_REPLAY_TICK_INTERVAL0.1估算恢复所需时间文档给出的积压重放时间估算公式为replay_time ≈ ceil(failed_messages / replay_batch_size) × replay_batch_replay_delay文档示例500 条积压消息、默认设置batch_size50、delay0.5 s时ceil(500 / 50) × 0.5 10 × 0.5 5 seconds。这是文档给出的估算示例用于按公式推算你自己的积压量不是所有环境都应出现的固定值。据此也可以判断如果你积压了上万条消息且使用默认参数仅调小replay_batch_size不会更快反而更慢——应结合上一节的高吞吐取值。验证重放是否在工作文档给出了几个可直接执行的检查手段确认连通性运行opik healthcheck确认 SDK 能到达服务器。该命令会分析配置与后端连通性同样记录在 SDK 配置文档 的故障排查一节。给足检测窗口SDK 最多需要connection_monitor_ping_interval秒才能发现服务器恢复。默认 10 秒时服务器恢复后至少等待 10–15 秒再判断重放没发生。显式 flush调用client.flush()会触发一次立即重放尝试并等待所有待发投递完成。开启调试日志在import opik之前设置export OPIK_FILE_LOGGING_LEVELDEBUG export OPIK_LOGGING_FILE/tmp/opik-debug.log然后检查/tmp/opik-debug.log中来自replay_manager和db_manager的日志条目可以看到详细的重放活动。限制与已知现象降级而非崩溃如果本地 SQLite 数据库本身不可用例如临时目录不可写SDK 会记录一条警告并在没有离线回退的情况下继续运行——应用不会崩溃但此后的故障期间 tracing 数据会丢失。临时目录可写是硬前提运行 SDK 的进程必须能写系统临时目录多数系统上是/tmp或tempfile.gettempdir()返回的路径。特征日志如果日志中出现Some network resiliency features were disabled说明 SQLite 数据库未能初始化。检查临时目录是否可写、磁盘空间是否充足。积压过大导致重放慢时按前文高吞吐应用一节调大OPIK_REPLAY_BATCH_SIZE、调小OPIK_REPLAY_BATCH_REPLAY_DELAY。完整的机制说明、支持消息类型表和排错清单见源文档 offline_fallback.mdx。【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考