diff --git a/.chloggen/1655.yaml b/.chloggen/1655.yaml new file mode 100644 index 0000000000..d15da0a393 --- /dev/null +++ b/.chloggen/1655.yaml @@ -0,0 +1,24 @@ +# Use this changelog template to create an entry for release notes. +# +# If your change doesn't affect end users you should instead start +# your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db) +component: genai + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: | + Adds OpenAI API compatible `gen_ai.system` attribute values: `az.ai.openai`, `deepseek`, `gemini`, `groq`, + `perplexity` and `xai`. Elaborates that `openai` can be ambiguous due to API emulation. + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +# The values here must be integers. +issues: [1655] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: diff --git a/docs/attributes-registry/gen-ai.md b/docs/attributes-registry/gen-ai.md index 6606150d2e..80903a65af 100644 --- a/docs/attributes-registry/gen-ai.md +++ b/docs/attributes-registry/gen-ai.md @@ -42,8 +42,10 @@ This document defines the attributes used to describe telemetry in the context o by `gen_ai.request.model` and `gen_ai.response.model` attributes. The actual GenAI product may differ from the one identified by the client. -For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system` -is set to `openai` based on the instrumentation's best knowledge. +Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client +libraries. In such cases, the `gen_ai.system` is set to `openai` based on the +instrumentation's best knowledge, instead of the actual system. The `server.address` +attribute may help identify the actual system in use for `openai`. For custom model, a custom friendly name SHOULD be used. If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. @@ -67,10 +69,16 @@ If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. | `anthropic` | Anthropic | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `aws.bedrock` | AWS Bedrock | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `az.ai.inference` | Azure AI Inference | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `az.ai.openai` | Azure OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `cohere` | Cohere | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `deepseek` | DeepSeek | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gemini` | Gemini | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `groq` | Groq | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `ibm.watsonx.ai` | IBM Watsonx AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `openai` | OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `perplexity` | Perplexity | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vertex_ai` | Vertex AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `xai` | xAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | --- diff --git a/docs/gen-ai/gen-ai-events.md b/docs/gen-ai/gen-ai-events.md index e786696f29..5f5501211f 100644 --- a/docs/gen-ai/gen-ai-events.md +++ b/docs/gen-ai/gen-ai-events.md @@ -69,8 +69,10 @@ The following attributes apply to all GenAI events. by `gen_ai.request.model` and `gen_ai.response.model` attributes. The actual GenAI product may differ from the one identified by the client. -For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system` -is set to `openai` based on the instrumentation's best knowledge. +Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client +libraries. In such cases, the `gen_ai.system` is set to `openai` based on the +instrumentation's best knowledge, instead of the actual system. The `server.address` +attribute may help identify the actual system in use for `openai`. For custom model, a custom friendly name SHOULD be used. If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. @@ -84,10 +86,16 @@ If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. | `anthropic` | Anthropic | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `aws.bedrock` | AWS Bedrock | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `az.ai.inference` | Azure AI Inference | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `az.ai.openai` | Azure OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `cohere` | Cohere | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `deepseek` | DeepSeek | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gemini` | Gemini | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `groq` | Groq | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `ibm.watsonx.ai` | IBM Watsonx AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `openai` | OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `perplexity` | Perplexity | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vertex_ai` | Vertex AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `xai` | xAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | diff --git a/docs/gen-ai/gen-ai-metrics.md b/docs/gen-ai/gen-ai-metrics.md index f47e0b2280..ac473e6c76 100644 --- a/docs/gen-ai/gen-ai-metrics.md +++ b/docs/gen-ai/gen-ai-metrics.md @@ -75,8 +75,10 @@ This metric SHOULD be specified with [ExplicitBucketBoundaries] of [1, 4, 16, 64 by `gen_ai.request.model` and `gen_ai.response.model` attributes. The actual GenAI product may differ from the one identified by the client. -For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system` -is set to `openai` based on the instrumentation's best knowledge. +Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client +libraries. In such cases, the `gen_ai.system` is set to `openai` based on the +instrumentation's best knowledge, instead of the actual system. The `server.address` +attribute may help identify the actual system in use for `openai`. For custom model, a custom friendly name SHOULD be used. If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. @@ -104,10 +106,16 @@ If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. | `anthropic` | Anthropic | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `aws.bedrock` | AWS Bedrock | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `az.ai.inference` | Azure AI Inference | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `az.ai.openai` | Azure OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `cohere` | Cohere | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `deepseek` | DeepSeek | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gemini` | Gemini | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `groq` | Groq | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `ibm.watsonx.ai` | IBM Watsonx AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `openai` | OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `perplexity` | Perplexity | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vertex_ai` | Vertex AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `xai` | xAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | --- @@ -156,8 +164,10 @@ This metric SHOULD be specified with [ExplicitBucketBoundaries] of [0.01, 0.02, by `gen_ai.request.model` and `gen_ai.response.model` attributes. The actual GenAI product may differ from the one identified by the client. -For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system` -is set to `openai` based on the instrumentation's best knowledge. +Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client +libraries. In such cases, the `gen_ai.system` is set to `openai` based on the +instrumentation's best knowledge, instead of the actual system. The `server.address` +attribute may help identify the actual system in use for `openai`. For custom model, a custom friendly name SHOULD be used. If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. @@ -197,10 +207,16 @@ Instrumentations SHOULD document the list of errors they report. | `anthropic` | Anthropic | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `aws.bedrock` | AWS Bedrock | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `az.ai.inference` | Azure AI Inference | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `az.ai.openai` | Azure OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `cohere` | Cohere | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `deepseek` | DeepSeek | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gemini` | Gemini | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `groq` | Groq | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `ibm.watsonx.ai` | IBM Watsonx AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `openai` | OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `perplexity` | Perplexity | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vertex_ai` | Vertex AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `xai` | xAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | @@ -247,8 +263,10 @@ This metric SHOULD be specified with [ExplicitBucketBoundaries] of by `gen_ai.request.model` and `gen_ai.response.model` attributes. The actual GenAI product may differ from the one identified by the client. -For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system` -is set to `openai` based on the instrumentation's best knowledge. +Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client +libraries. In such cases, the `gen_ai.system` is set to `openai` based on the +instrumentation's best knowledge, instead of the actual system. The `server.address` +attribute may help identify the actual system in use for `openai`. For custom model, a custom friendly name SHOULD be used. If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. @@ -288,10 +306,16 @@ Instrumentations SHOULD document the list of errors they report. | `anthropic` | Anthropic | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `aws.bedrock` | AWS Bedrock | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `az.ai.inference` | Azure AI Inference | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `az.ai.openai` | Azure OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `cohere` | Cohere | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `deepseek` | DeepSeek | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gemini` | Gemini | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `groq` | Groq | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `ibm.watsonx.ai` | IBM Watsonx AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `openai` | OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `perplexity` | Perplexity | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vertex_ai` | Vertex AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `xai` | xAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | @@ -337,8 +361,10 @@ This metric SHOULD be specified with [ExplicitBucketBoundaries] of by `gen_ai.request.model` and `gen_ai.response.model` attributes. The actual GenAI product may differ from the one identified by the client. -For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system` -is set to `openai` based on the instrumentation's best knowledge. +Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client +libraries. In such cases, the `gen_ai.system` is set to `openai` based on the +instrumentation's best knowledge, instead of the actual system. The `server.address` +attribute may help identify the actual system in use for `openai`. For custom model, a custom friendly name SHOULD be used. If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. @@ -366,10 +392,16 @@ If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. | `anthropic` | Anthropic | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `aws.bedrock` | AWS Bedrock | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `az.ai.inference` | Azure AI Inference | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `az.ai.openai` | Azure OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `cohere` | Cohere | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `deepseek` | DeepSeek | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gemini` | Gemini | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `groq` | Groq | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `ibm.watsonx.ai` | IBM Watsonx AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `openai` | OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `perplexity` | Perplexity | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vertex_ai` | Vertex AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `xai` | xAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | @@ -414,8 +446,10 @@ This metric SHOULD be specified with [ExplicitBucketBoundaries] of by `gen_ai.request.model` and `gen_ai.response.model` attributes. The actual GenAI product may differ from the one identified by the client. -For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system` -is set to `openai` based on the instrumentation's best knowledge. +Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client +libraries. In such cases, the `gen_ai.system` is set to `openai` based on the +instrumentation's best knowledge, instead of the actual system. The `server.address` +attribute may help identify the actual system in use for `openai`. For custom model, a custom friendly name SHOULD be used. If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. @@ -443,10 +477,16 @@ If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. | `anthropic` | Anthropic | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `aws.bedrock` | AWS Bedrock | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `az.ai.inference` | Azure AI Inference | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `az.ai.openai` | Azure OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `cohere` | Cohere | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `deepseek` | DeepSeek | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gemini` | Gemini | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `groq` | Groq | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `ibm.watsonx.ai` | IBM Watsonx AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `openai` | OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `perplexity` | Perplexity | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vertex_ai` | Vertex AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `xai` | xAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | diff --git a/docs/gen-ai/gen-ai-spans.md b/docs/gen-ai/gen-ai-spans.md index 70c8d3d5bf..e58d68dd07 100644 --- a/docs/gen-ai/gen-ai-spans.md +++ b/docs/gen-ai/gen-ai-spans.md @@ -70,8 +70,10 @@ Many of these attributes only apply to specific GenAI operations. For example, G by `gen_ai.request.model` and `gen_ai.response.model` attributes. The actual GenAI product may differ from the one identified by the client. -For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system` -is set to `openai` based on the instrumentation's best knowledge. +Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client +libraries. In such cases, the `gen_ai.system` is set to `openai` based on the +instrumentation's best knowledge, instead of the actual system. The `server.address` +attribute may help identify the actual system in use for `openai`. For custom model, a custom friendly name SHOULD be used. If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. @@ -117,10 +119,16 @@ Instrumentations SHOULD document the list of errors they report. | `anthropic` | Anthropic | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `aws.bedrock` | AWS Bedrock | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `az.ai.inference` | Azure AI Inference | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `az.ai.openai` | Azure OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `cohere` | Cohere | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `deepseek` | DeepSeek | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gemini` | Gemini | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `groq` | Groq | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `ibm.watsonx.ai` | IBM Watsonx AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `openai` | OpenAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `perplexity` | Perplexity | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vertex_ai` | Vertex AI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `xai` | xAI | ![Experimental](https://img.shields.io/badge/-experimental-blue) | diff --git a/model/gen-ai/registry.yaml b/model/gen-ai/registry.yaml index 918b0a2f21..e60badab3f 100644 --- a/model/gen-ai/registry.yaml +++ b/model/gen-ai/registry.yaml @@ -17,6 +17,10 @@ groups: stability: experimental value: "vertex_ai" brief: 'Vertex AI' + - id: gemini + stability: experimental + value: "gemini" + brief: 'Gemini' - id: anthropic stability: experimental value: "anthropic" @@ -29,6 +33,10 @@ groups: stability: experimental value: "az.ai.inference" brief: 'Azure AI Inference' + - id: az.ai.openai + stability: experimental + value: "az.ai.openai" + brief: 'Azure OpenAI' - id: ibm.watsonx.ai stability: experimental value: "ibm.watsonx.ai" @@ -37,14 +45,33 @@ groups: stability: experimental value: "aws.bedrock" brief: 'AWS Bedrock' + - id: perplexity + stability: experimental + value: "perplexity" + brief: 'Perplexity' + - id: xai + stability: experimental + value: "xai" + brief: 'xAI' + - id: deepseek + stability: experimental + value: "deepseek" + brief: 'DeepSeek' + - id: groq + stability: experimental + value: "groq" + brief: 'Groq' + brief: The Generative AI product as identified by the client or server instrumentation. note: | The `gen_ai.system` describes a family of GenAI models with specific model identified by `gen_ai.request.model` and `gen_ai.response.model` attributes. The actual GenAI product may differ from the one identified by the client. - For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system` - is set to `openai` based on the instrumentation's best knowledge. + Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client + libraries. In such cases, the `gen_ai.system` is set to `openai` based on the + instrumentation's best knowledge, instead of the actual system. The `server.address` + attribute may help identify the actual system in use for `openai`. For custom model, a custom friendly name SHOULD be used. If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`.