mcpField
M
mlflow-trace-retrieval

mlflow-trace-retrieval

github.com/mlflow其他8216 次安装2 天前更新
代码仓库

关于 mlflow-trace-retrieval

用于按 ID 获取或按条件搜索 MLflow trace 的 skill,涵盖时间范围、分页、结果验证及大型输出的处理。

主要功能

  1. 01按 ID 获取 trace
  2. 02按筛选条件和时间范围搜索
  3. 03保存完整 JSON 输出
  4. 04处理分页令牌
  5. 05验证查询范围与覆盖情况

适用场景

  1. 01检查已知 ID 的 trace
  2. 02查找事故时间范围内的 trace
  3. 03查看状态、延迟、会话或 span 数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mlflow/skills --skill mlflow-trace-retrieval

安装后在 Claude Code 中输入/mlflow-trace-retrieval确认已加载。

详细介绍

检索 MLflow 跟踪记录

步骤 1:选择检索方式

重用已配置的跟踪 URI、实验、提供的跟踪 ID 或筛选条件,以及事件/运行时间范围。对于所选操作,请通过 mlflow traces get --help 或 mlflow traces search --help 检查已安装 CLI 的标志。

对于 Databricks UC 跟踪记录,请先阅读 Databricks 跟踪设置:检索跟踪记录需要已配置的 SQL 仓库和工作区身份验证。请勿用直接 SQL、原始 REST 或粘贴的令牌代替缺失的仓库访问权限。

步骤 2:获取或搜索

如果有 ID,直接获取。先将完整 JSON 保存到文件,再进行解析,以免大型输出被工具截断。get 已经会输出 JSON;无需使用 --output 标志。

mlflow traces get --trace-id <TRACE_ID> > /tmp/trace.json

如果没有 ID,请搜索所选实验和指定的时间范围:

mlflow traces search --experiment-id <EXPERIMENT_ID> \
  --filter-string 'metadata.`mlflow.trace.session` = "<SESSION_ID>" AND trace.timestamp_ms >= <START_MS> AND trace.timestamp_ms <= <END_MS>' \
  --order-by 'timestamp_ms ASC' --max-results 50 --output json > /tmp/traces.json
  • 执行前请替换占位符。每次 UC 搜索都需要 trace.timestamp_ms 下限;已知上限时也要添加。
  • 按实验/运行/会话检索时也需要时间范围:较小的结果数量限制无法限制表扫描范围。
  • 使用用户指定的历史时间范围或事件/运行时间戳,切勿默默改用最近一小时。若时间段未知,请先询问,再进行范围较大的 UC 搜索。
筛选条件

使用 AND 组合谓词;确认已安装的后端/版本支持相应运算符。

选择条件谓词或标志
运行--run-id <RUN_ID>(与时间范围组合使用)
状态trace.status = 'ERROR'(也可使用 OK、IN_PROGRESS)
时间/延迟trace.timestamp_ms >= 1700000000000、trace.execution_time_ms > 1000(毫秒)
会话/用户metadata.`mlflow.trace.session` = 'abc'、metadata.`mlflow.trace.user` = 'user1'
标签/元数据tag.environment = 'production'、metadata.`user.id` = 'abc'
Spanspan.name = 'lookup'、span.type = 'RETRIEVER'
评估结果feedback.rating = 'positive'、expectation.<name> = <value>
文本trace.text LIKE '%error%'

字段名中的特殊字符用反引号括起来。在 shell 命令中,将外层表达式放在单引号内,如上所示;或者在双引号内转义反引号,以防止命令替换。请分别转义筛选值;不要将不可信值插入 shell 语法。允许使用模式匹配的情况下,LIKE、ILIKE 和 RLIKE 均支持模式匹配;有关字段/运算符的确切支持情况,请参阅搜索文档。

需要详细信息时使用 --include-spans;否则,请在搜索后获取选定的 ID。检查实际架构后,可以使用 --extract-fields 减少搜索输出,但嵌套的 span 输入/输出可能会被省略:诊断时请使用完整跟踪记录。继续使用固定的筛选条件/排序方式,通过 --page-token 跟进返回的续页令牌;报告有限样本时,应明确标注为样本,而非全部匹配结果。

Python 替代方案
trace = mlflow.get_trace(trace_id)
# Or search when the ID is unknown:
traces = mlflow.search_traces(
    locations=[experiment_id],
    filter_string=f"trace.timestamp_ms >= {start_ms} AND trace.timestamp_ms <= {end_ms}",
    max_results=50, return_type="list", include_spans=True,
)

请检查已安装版本的函数签名;较早版本可能使用 experiment_ids。search_traces() 没有 start_time 关键字参数。请通过 filter_string 设置时间戳谓词。

验证

  • 对于设置回读,请在运行前立即记录时间;如有设置验证,请遵循该流程。

确认返回的 ID、实验/位置、时间窗口和筛选条件与请求一致;区分无匹配结果、查询失败和页面结果不完整。返回 ID/输出文件以及任何覆盖范围限制。不要仅凭状态 OK 推断质量。

仅针对新添加的检测:强制执行 60 秒墙钟时间期限,包括刷新/回读/内部重试,并在期限到时终止命令。获取一个已捕获的 ID,或执行一次受运行时间限制且 max_results=1 的搜索。检查预期跨度以及实际输入/输出。只有在原预算内完成快速、明确的修复后,才能最多重试一次。遇到身份验证/提供商密钥/权限/数据仓库阻碍时停止,并报告失败的操作和所需前置条件。不得并行搜索、重复运行 Agent、直接执行 SQL、使用原始 REST 或回退到其他身份验证方式。此设置限制不取代专门检索/调查请求的范围。

参考资料

  • 更多搜索语法/API 选项:官方搜索指南,并已对照已安装的帮助信息/签名进行核实。仅在页面迁移时使用 llms.txt;如果无法访问,请使用已安装的帮助信息,并在无法确认正确性时停止。
  • 如果请求进行分析,请使用 mlflow-trace-analysis;如果仅请求检索,则只需返回所需证据。

评论

支持 Markdown