moon add cybershang/agent-telemetry// 初始化 provider
let exporter = @print.SpanExporter::new().into_span_exporter()
let config = @telemetry.TelemetryConfig::new(service_name="my-agent")
let provider = @telemetry.init_telemetry(config, exporter~)
// 创建 GenAI chat span
let tracer = @telemetry.tracer("my-agent/llm")
let span = @telemetry.start_chat_span(
tracer,
provider_name="stepfun",
model="step-3.7-flash",
max_tokens=1024,
)
// ... 发起请求并拿到 response_json ...
@telemetry.record_chat_response(span, response_json)
@telemetry.end_span_ok(span)| 场景 | 函数 |
|---|---|
| 通用 | TelemetryConfig::new、init_telemetry、tracer、start_span、end_span、end_span_ok、end_span_error |
| LLM chat | start_chat_span、record_chat_usage、record_chat_response、set_chat_http_error |
| Tool | start_tool_span、record_tool_result、set_tool_error |
| Agent turn | start_agent_turn_span、record_turn_metrics、set_turn_max_tool_turns_error |
moon test -p cybershang/agent-telemetry --target nativepub struct TelemetryConfig {
otel_stdout : Bool
otel_endpoint : String
service_name : String
} derive(Debug)fn TelemetryConfig::new(otel_stdout? : Bool, otel_endpoint? : String, service_name? : String) -> TelemetryConfigfn init_telemetry(config : TelemetryConfig, exporter? : SpanExporter, id_generator : IdGenerator) -> SdkTracerProviderfn record_turn_metrics(span : Span, actual_turns : Int, tool_call_count : Int, output : String) -> Unit