gen_ai_metrics.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /*
  2. * Copyright The OpenTelemetry Authors
  3. * SPDX-License-Identifier: Apache-2.0
  4. */
  5. /*
  6. * DO NOT EDIT, this is an Auto-generated file from:
  7. * buildscripts/semantic-convention/templates/registry/semantic_metrics-h.j2
  8. */
  9. #pragma once
  10. #include "opentelemetry/common/macros.h"
  11. #include "opentelemetry/metrics/meter.h"
  12. #include "opentelemetry/version.h"
  13. OPENTELEMETRY_BEGIN_NAMESPACE
  14. namespace semconv
  15. {
  16. namespace gen_ai
  17. {
  18. /**
  19. * GenAI operation duration
  20. * <p>
  21. * histogram
  22. */
  23. static constexpr const char *kMetricGenAiClientOperationDuration =
  24. "gen_ai.client.operation.duration";
  25. static constexpr const char *descrMetricGenAiClientOperationDuration = "GenAI operation duration";
  26. static constexpr const char *unitMetricGenAiClientOperationDuration = "s";
  27. static inline nostd::unique_ptr<metrics::Histogram<uint64_t>>
  28. CreateSyncInt64MetricGenAiClientOperationDuration(metrics::Meter *meter)
  29. {
  30. return meter->CreateUInt64Histogram(kMetricGenAiClientOperationDuration,
  31. descrMetricGenAiClientOperationDuration,
  32. unitMetricGenAiClientOperationDuration);
  33. }
  34. static inline nostd::unique_ptr<metrics::Histogram<double>>
  35. CreateSyncDoubleMetricGenAiClientOperationDuration(metrics::Meter *meter)
  36. {
  37. return meter->CreateDoubleHistogram(kMetricGenAiClientOperationDuration,
  38. descrMetricGenAiClientOperationDuration,
  39. unitMetricGenAiClientOperationDuration);
  40. }
  41. /**
  42. * Measures number of input and output tokens used
  43. * <p>
  44. * histogram
  45. */
  46. static constexpr const char *kMetricGenAiClientTokenUsage = "gen_ai.client.token.usage";
  47. static constexpr const char *descrMetricGenAiClientTokenUsage =
  48. "Measures number of input and output tokens used";
  49. static constexpr const char *unitMetricGenAiClientTokenUsage = "{token}";
  50. static inline nostd::unique_ptr<metrics::Histogram<uint64_t>>
  51. CreateSyncInt64MetricGenAiClientTokenUsage(metrics::Meter *meter)
  52. {
  53. return meter->CreateUInt64Histogram(kMetricGenAiClientTokenUsage,
  54. descrMetricGenAiClientTokenUsage,
  55. unitMetricGenAiClientTokenUsage);
  56. }
  57. static inline nostd::unique_ptr<metrics::Histogram<double>>
  58. CreateSyncDoubleMetricGenAiClientTokenUsage(metrics::Meter *meter)
  59. {
  60. return meter->CreateDoubleHistogram(kMetricGenAiClientTokenUsage,
  61. descrMetricGenAiClientTokenUsage,
  62. unitMetricGenAiClientTokenUsage);
  63. }
  64. /**
  65. * Generative AI server request duration such as time-to-last byte or last output token
  66. * <p>
  67. * histogram
  68. */
  69. static constexpr const char *kMetricGenAiServerRequestDuration = "gen_ai.server.request.duration";
  70. static constexpr const char *descrMetricGenAiServerRequestDuration =
  71. "Generative AI server request duration such as time-to-last byte or last output token";
  72. static constexpr const char *unitMetricGenAiServerRequestDuration = "s";
  73. static inline nostd::unique_ptr<metrics::Histogram<uint64_t>>
  74. CreateSyncInt64MetricGenAiServerRequestDuration(metrics::Meter *meter)
  75. {
  76. return meter->CreateUInt64Histogram(kMetricGenAiServerRequestDuration,
  77. descrMetricGenAiServerRequestDuration,
  78. unitMetricGenAiServerRequestDuration);
  79. }
  80. static inline nostd::unique_ptr<metrics::Histogram<double>>
  81. CreateSyncDoubleMetricGenAiServerRequestDuration(metrics::Meter *meter)
  82. {
  83. return meter->CreateDoubleHistogram(kMetricGenAiServerRequestDuration,
  84. descrMetricGenAiServerRequestDuration,
  85. unitMetricGenAiServerRequestDuration);
  86. }
  87. /**
  88. * Time per output token generated after the first token for successful responses
  89. * <p>
  90. * histogram
  91. */
  92. static constexpr const char *kMetricGenAiServerTimePerOutputToken =
  93. "gen_ai.server.time_per_output_token";
  94. static constexpr const char *descrMetricGenAiServerTimePerOutputToken =
  95. "Time per output token generated after the first token for successful responses";
  96. static constexpr const char *unitMetricGenAiServerTimePerOutputToken = "s";
  97. static inline nostd::unique_ptr<metrics::Histogram<uint64_t>>
  98. CreateSyncInt64MetricGenAiServerTimePerOutputToken(metrics::Meter *meter)
  99. {
  100. return meter->CreateUInt64Histogram(kMetricGenAiServerTimePerOutputToken,
  101. descrMetricGenAiServerTimePerOutputToken,
  102. unitMetricGenAiServerTimePerOutputToken);
  103. }
  104. static inline nostd::unique_ptr<metrics::Histogram<double>>
  105. CreateSyncDoubleMetricGenAiServerTimePerOutputToken(metrics::Meter *meter)
  106. {
  107. return meter->CreateDoubleHistogram(kMetricGenAiServerTimePerOutputToken,
  108. descrMetricGenAiServerTimePerOutputToken,
  109. unitMetricGenAiServerTimePerOutputToken);
  110. }
  111. /**
  112. * Time to generate first token for successful responses
  113. * <p>
  114. * histogram
  115. */
  116. static constexpr const char *kMetricGenAiServerTimeToFirstToken =
  117. "gen_ai.server.time_to_first_token";
  118. static constexpr const char *descrMetricGenAiServerTimeToFirstToken =
  119. "Time to generate first token for successful responses";
  120. static constexpr const char *unitMetricGenAiServerTimeToFirstToken = "s";
  121. static inline nostd::unique_ptr<metrics::Histogram<uint64_t>>
  122. CreateSyncInt64MetricGenAiServerTimeToFirstToken(metrics::Meter *meter)
  123. {
  124. return meter->CreateUInt64Histogram(kMetricGenAiServerTimeToFirstToken,
  125. descrMetricGenAiServerTimeToFirstToken,
  126. unitMetricGenAiServerTimeToFirstToken);
  127. }
  128. static inline nostd::unique_ptr<metrics::Histogram<double>>
  129. CreateSyncDoubleMetricGenAiServerTimeToFirstToken(metrics::Meter *meter)
  130. {
  131. return meter->CreateDoubleHistogram(kMetricGenAiServerTimeToFirstToken,
  132. descrMetricGenAiServerTimeToFirstToken,
  133. unitMetricGenAiServerTimeToFirstToken);
  134. }
  135. } // namespace gen_ai
  136. } // namespace semconv
  137. OPENTELEMETRY_END_NAMESPACE