追踪 Gemini CLI

MLflow Tracing 为 Google 的开源终端编程代理 Gemini CLI 提供自动追踪功能。Gemini CLI 内置了 OpenTelemetry 支持,可将丰富的对话追踪信息直接发送到 MLflow 的 OTLP 端点。追踪功能会自动捕获:
- 用户提示词和助手回复(包括思考/推理过程)
- 包含模型名称、令牌用量和成本的 LLM 调用
- 工具调用及其结果
- 会话元数据
设置
Gemini CLI 的追踪数据通过其原生的 OTLP 遥测技术进行摄取——无需使用 MLflow CLI 命令。
要求
- MLflow 追踪服务器(已启用 OTLP 端点)
- 已安装 Gemini CLI (
npm install -g @google/gemini-cli) - Node.js 22+
第 1 步:设置环境变量
bash
# Enable Gemini telemetry and point it at MLflow
export GEMINI_TELEMETRY_ENABLED=true
export GEMINI_TELEMETRY_TARGET=local
export GEMINI_TELEMETRY_OTLP_ENDPOINT=https://:5000
export GEMINI_TELEMETRY_OTLP_PROTOCOL=http
# Set the MLflow experiment ID via standard OTLP headers
export OTEL_EXPORTER_OTLP_HEADERS=x-mlflow-experiment-id=0
第 2 步:运行 Gemini CLI
bash
# Tracing happens automatically
gemini
当您与 Gemini CLI 交互时,追踪数据会实时发送到 MLflow。
第 3 步:查看追踪信息
bash
mlflow server
# Navigate to your experiment in the UI
配置参考
| 环境变量 | 必需 | 描述 |
|---|---|---|
GEMINI_TELEMETRY_ENABLED | 是 | 设置为 true 以启用遥测 |
GEMINI_TELEMETRY_TARGET | 是 | 设置为 local 以使用自定义 OTLP 端点 |
GEMINI_TELEMETRY_OTLP_ENDPOINT | 是 | MLflow 服务器的基本 URL(例如 https://:5000)。Gemini 会自动附加 /v1/traces |
GEMINI_TELEMETRY_OTLP_PROTOCOL | 是 | 必须为 http(MLflow 不支持 gRPC 摄取) |
OTEL_EXPORTER_OTLP_HEADERS | 是 | 设置 x-mlflow-experiment-id=<id> 以将追踪数据路由到特定实验 |
配置示例
bash
# Local MLflow server, default experiment
export GEMINI_TELEMETRY_ENABLED=true
export GEMINI_TELEMETRY_TARGET=local
export GEMINI_TELEMETRY_OTLP_ENDPOINT=https://:5000
export GEMINI_TELEMETRY_OTLP_PROTOCOL=http
export OTEL_EXPORTER_OTLP_HEADERS=x-mlflow-experiment-id=0
# Databricks-hosted MLflow
# See Databricks documentation for required authentication headers
export GEMINI_TELEMETRY_ENABLED=true
export GEMINI_TELEMETRY_TARGET=local
export GEMINI_TELEMETRY_OTLP_ENDPOINT=https://your-workspace.databricks.com
export GEMINI_TELEMETRY_OTLP_PROTOCOL=http
export OTEL_EXPORTER_OTLP_HEADERS=x-mlflow-experiment-id=123456789
工作原理
Gemini CLI 使用 GenAI 语义约定发出 OpenTelemetry 追踪数据。MLflow 的 OTLP 端点摄取这些追踪数据并自动执行以下操作:
- 映射 span 类型:将
llm_call映射为 LLM,tool_call映射为 TOOL,agent_call映射为 AGENT - 提取令牌用量:从
gen_ai.usage.input_tokens和gen_ai.usage.output_tokens中提取 - 计算成本:基于
gen_ai.request.model中的模型名称进行计算 - 设置
service.name:将gemini-cli传播到根 span 以进行标识 - 在聊天 UI 中呈现:消息将显示在 MLflow 的聊天视图中,包含思考/推理部分
Token 使用与成本
MLflow 会自动从 Gemini CLI 的 GenAI 语义约定属性中提取令牌用量,并根据模型计算成本。详情请参阅令牌用量与成本追踪文档。
故障排除
没有显示追踪记录
-
确认协议设置为
http(而非grpc)bashecho $GEMINI_TELEMETRY_OTLP_PROTOCOL # Should be "http" -
检查是否已设置实验 ID 标头
bashecho $OTEL_EXPORTER_OTLP_HEADERS # Should contain "x-mlflow-experiment-id=..." -
检查 MLflow 服务器日志以查看是否有传入请求
bash# Look for POST /v1/traces requeststail -f /tmp/mlflow-backend.log
400 Bad Request 错误
- 确保已设置
GEMINI_TELEMETRY_OTLP_PROTOCOL=http。若未设置,Gemini 默认为 gRPC,而 MLflow 不支持此协议。
追踪信息显示但为空
- Gemini CLI 发送混合的追踪数据。简单的提示词会产生
user_prompt+llm_callspans。涉及工具使用的复杂任务会产生包含agent_call、tool_call和多个llm_callspans 的更丰富追踪数据。
禁用追踪
取消设置遥测环境变量
bash
unset GEMINI_TELEMETRY_ENABLED
unset GEMINI_TELEMETRY_TARGET
unset GEMINI_TELEMETRY_OTLP_ENDPOINT
现有的追踪数据会被保留。