LangChain.OpenTelemetry.ProviderMapping (LangChain v0.9.2)

Copy Markdown View Source

Maps LangChain provider strings to OpenTelemetry GenAI Semantic Convention gen_ai.provider.name values.

Values are verified against the well-known gen_ai.provider.name set in the GenAI semantic conventions. Providers with no well-known value (ollama, orq, bumblebee) intentionally pass through unchanged — the spec permits custom identifiers for providers it doesn't enumerate.

googlegcp.gemini (reconciliation note)

The spec defines two Google values: gcp.gemini ("Gemini", i.e. the Gemini API / Google AI Studio served from generativelanguage.googleapis.com) and gcp.gen_ai ("any Google generative AI endpoint", a generic fallback). LangChain.ChatModels.ChatGoogleAI targets the Gemini API specifically, so we deliberately emit the more precise gcp.gemini rather than the generic gcp.gen_ai. (The sibling req_llm library maps its :google provider to the generic gcp.gen_ai; the divergence is intentional — LangChain's value is the more specific, spec-correct one for the Gemini endpoint.) Vertex AI is a separate provider (ChatVertexAIgcp.vertex_ai).

See: https://opentelemetry.io/docs/specs/semconv/gen-ai/

Summary

Functions

Returns the OTel gen_ai.provider.name for a LangChain provider string.

Functions

to_otel(provider)

@spec to_otel(String.t()) :: String.t()

Returns the OTel gen_ai.provider.name for a LangChain provider string.

Unknown providers are passed through unchanged.

Examples

iex> LangChain.OpenTelemetry.ProviderMapping.to_otel("openai")
"openai"

iex> LangChain.OpenTelemetry.ProviderMapping.to_otel("google")
"gcp.gemini"

iex> LangChain.OpenTelemetry.ProviderMapping.to_otel("custom_provider")
"custom_provider"