/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
/*
* DO NOT EDIT, this is an Auto-generated file from:
* buildscripts/semantic-convention/templates/registry/semantic_metrics-h.j2
*/
#pragma once
#include "opentelemetry/common/macros.h"
#include "opentelemetry/metrics/meter.h"
#include "opentelemetry/version.h"
OPENTELEMETRY_BEGIN_NAMESPACE
namespace semconv
{
namespace gen_ai
{
/**
* GenAI operation duration
*
* histogram
*/
static constexpr const char *kMetricGenAiClientOperationDuration =
"gen_ai.client.operation.duration";
static constexpr const char *descrMetricGenAiClientOperationDuration = "GenAI operation duration";
static constexpr const char *unitMetricGenAiClientOperationDuration = "s";
static inline nostd::unique_ptr>
CreateSyncInt64MetricGenAiClientOperationDuration(metrics::Meter *meter)
{
return meter->CreateUInt64Histogram(kMetricGenAiClientOperationDuration,
descrMetricGenAiClientOperationDuration,
unitMetricGenAiClientOperationDuration);
}
static inline nostd::unique_ptr>
CreateSyncDoubleMetricGenAiClientOperationDuration(metrics::Meter *meter)
{
return meter->CreateDoubleHistogram(kMetricGenAiClientOperationDuration,
descrMetricGenAiClientOperationDuration,
unitMetricGenAiClientOperationDuration);
}
/**
* Measures number of input and output tokens used
*
* histogram
*/
static constexpr const char *kMetricGenAiClientTokenUsage = "gen_ai.client.token.usage";
static constexpr const char *descrMetricGenAiClientTokenUsage =
"Measures number of input and output tokens used";
static constexpr const char *unitMetricGenAiClientTokenUsage = "{token}";
static inline nostd::unique_ptr>
CreateSyncInt64MetricGenAiClientTokenUsage(metrics::Meter *meter)
{
return meter->CreateUInt64Histogram(kMetricGenAiClientTokenUsage,
descrMetricGenAiClientTokenUsage,
unitMetricGenAiClientTokenUsage);
}
static inline nostd::unique_ptr>
CreateSyncDoubleMetricGenAiClientTokenUsage(metrics::Meter *meter)
{
return meter->CreateDoubleHistogram(kMetricGenAiClientTokenUsage,
descrMetricGenAiClientTokenUsage,
unitMetricGenAiClientTokenUsage);
}
/**
* Generative AI server request duration such as time-to-last byte or last output token
*
* histogram
*/
static constexpr const char *kMetricGenAiServerRequestDuration = "gen_ai.server.request.duration";
static constexpr const char *descrMetricGenAiServerRequestDuration =
"Generative AI server request duration such as time-to-last byte or last output token";
static constexpr const char *unitMetricGenAiServerRequestDuration = "s";
static inline nostd::unique_ptr>
CreateSyncInt64MetricGenAiServerRequestDuration(metrics::Meter *meter)
{
return meter->CreateUInt64Histogram(kMetricGenAiServerRequestDuration,
descrMetricGenAiServerRequestDuration,
unitMetricGenAiServerRequestDuration);
}
static inline nostd::unique_ptr>
CreateSyncDoubleMetricGenAiServerRequestDuration(metrics::Meter *meter)
{
return meter->CreateDoubleHistogram(kMetricGenAiServerRequestDuration,
descrMetricGenAiServerRequestDuration,
unitMetricGenAiServerRequestDuration);
}
/**
* Time per output token generated after the first token for successful responses
*
* histogram
*/
static constexpr const char *kMetricGenAiServerTimePerOutputToken =
"gen_ai.server.time_per_output_token";
static constexpr const char *descrMetricGenAiServerTimePerOutputToken =
"Time per output token generated after the first token for successful responses";
static constexpr const char *unitMetricGenAiServerTimePerOutputToken = "s";
static inline nostd::unique_ptr>
CreateSyncInt64MetricGenAiServerTimePerOutputToken(metrics::Meter *meter)
{
return meter->CreateUInt64Histogram(kMetricGenAiServerTimePerOutputToken,
descrMetricGenAiServerTimePerOutputToken,
unitMetricGenAiServerTimePerOutputToken);
}
static inline nostd::unique_ptr>
CreateSyncDoubleMetricGenAiServerTimePerOutputToken(metrics::Meter *meter)
{
return meter->CreateDoubleHistogram(kMetricGenAiServerTimePerOutputToken,
descrMetricGenAiServerTimePerOutputToken,
unitMetricGenAiServerTimePerOutputToken);
}
/**
* Time to generate first token for successful responses
*
* histogram
*/
static constexpr const char *kMetricGenAiServerTimeToFirstToken =
"gen_ai.server.time_to_first_token";
static constexpr const char *descrMetricGenAiServerTimeToFirstToken =
"Time to generate first token for successful responses";
static constexpr const char *unitMetricGenAiServerTimeToFirstToken = "s";
static inline nostd::unique_ptr>
CreateSyncInt64MetricGenAiServerTimeToFirstToken(metrics::Meter *meter)
{
return meter->CreateUInt64Histogram(kMetricGenAiServerTimeToFirstToken,
descrMetricGenAiServerTimeToFirstToken,
unitMetricGenAiServerTimeToFirstToken);
}
static inline nostd::unique_ptr>
CreateSyncDoubleMetricGenAiServerTimeToFirstToken(metrics::Meter *meter)
{
return meter->CreateDoubleHistogram(kMetricGenAiServerTimeToFirstToken,
descrMetricGenAiServerTimeToFirstToken,
unitMetricGenAiServerTimeToFirstToken);
}
} // namespace gen_ai
} // namespace semconv
OPENTELEMETRY_END_NAMESPACE