| File: Common\OtelMetricHelpers.cs | |
| Project: ..\..\..\src\Libraries\Microsoft.Extensions.AI\Microsoft.Extensions.AI.csproj (Microsoft.Extensions.AI) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics.Metrics; namespace Microsoft.Extensions.AI; /// <summary>Shared metric instrument factories for the OpenTelemetry* clients.</summary> internal static class OtelMetricHelpers { /// <summary>Creates the standard <c>gen_ai.client.token.usage</c> histogram on <paramref name="meter"/>.</summary> public static Histogram<int> CreateGenAITokenUsageHistogram(Meter meter) => meter.CreateHistogram<int>( OpenTelemetryConsts.GenAI.Client.TokenUsage.Name, OpenTelemetryConsts.TokensUnit, OpenTelemetryConsts.GenAI.Client.TokenUsage.Description, advice: new() { HistogramBucketBoundaries = OpenTelemetryConsts.GenAI.Client.TokenUsage.ExplicitBucketBoundaries }); /// <summary>Creates the standard <c>gen_ai.client.operation.duration</c> histogram on <paramref name="meter"/>.</summary> public static Histogram<double> CreateGenAIOperationDurationHistogram(Meter meter) => meter.CreateHistogram<double>( OpenTelemetryConsts.GenAI.Client.OperationDuration.Name, OpenTelemetryConsts.SecondsUnit, OpenTelemetryConsts.GenAI.Client.OperationDuration.Description, advice: new() { HistogramBucketBoundaries = OpenTelemetryConsts.GenAI.Client.OperationDuration.ExplicitBucketBoundaries }); }