Skip to content

Add OpenTelemetry tracing instrumentation#238

Merged
rbarbadillo merged 4 commits into
mainfrom
rbarbadillo/port-otel-observability
Jun 16, 2026
Merged

Add OpenTelemetry tracing instrumentation#238
rbarbadillo merged 4 commits into
mainfrom
rbarbadillo/port-otel-observability

Conversation

@rbarbadillo

@rbarbadillo rbarbadillo commented May 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add OpenTelemetry tracing hooks for SDK requests, responses, streaming responses, and API errors
  • expose observability helpers to register a tracer provider and create manual spans
  • keep @opentelemetry/api as an optional peer dependency and persist dependency metadata in Speakeasy config
  • run SDK HTTP sends with the GenAI span as the active OpenTelemetry context, so auto-instrumented HTTP/fetch spans parent correctly (avoids Fix OTEL parenting for HTTPX spans client-python#557)
  • normalize streamed completion chunks before tracing enrichment so nullable optional fields or missing finish_reason do not drop the first output chunk

Usage

import { Mistral } from "@mistralai/mistralai";
import { registerTracerProvider } from "@mistralai/mistralai/extra/observability";
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";

const provider = new NodeTracerProvider();

// Configure processors/exporters here if needed.
// provider.addSpanProcessor(...)

provider.register();
registerTracerProvider(provider);

const client = new Mistral({
  apiKey: process.env.MISTRAL_API_KEY,
});

const response = await client.chat.complete({
  model: "mistral-small-latest",
  messages: [{ role: "user", content: "Hello" }],
});

@rbarbadillo rbarbadillo self-assigned this May 29, 2026
@rbarbadillo rbarbadillo marked this pull request as ready for review May 29, 2026 08:48
@rbarbadillo rbarbadillo merged commit b7cc205 into main Jun 16, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants