Skip to content

Releases: honeyhiveai/python-sdk

v1.5.1

Choose a tag to compare

@github-actions github-actions released this 23 Jul 20:21

HoneyHive Python SDK v1.5.1

What's Changed

No customer-facing changes. Internal release tooling only.

Installation

pip install honeyhive==1.5.1

Links

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 22:46
66f5b59

HoneyHive Python SDK v1.4.0

What's Changed

Added

  • Copilot Studio trace forwarding adapter
    • New honeyhive.adapters.copilot_studio.copilot_studio_records_to_spans() converts Azure Application Insights diagnostic-export records from a Copilot Studio agent into OpenTelemetry spans you can forward to HoneyHive via OTLP. Maps user/agent messages, tool calls, and errors using GenAI semantic conventions, preserves parent/child trace correlation, and groups a conversation into a single HoneyHive session. Set COPILOT_STUDIO_ADAPTER_KEEP_TOPIC_SPANS=1 to retain internal orchestration spans (dropped by default) and COPILOT_STUDIO_ADAPTER_DEBUG=1 to attach the raw source record for debugging.
  • dataset_name on experiment runs
    • ExperimentRunObject now includes a dataset_name field alongside dataset_id, so the linked dataset's name is available when listing or fetching experiment runs. The field is optional and resolves to None for offline (EXT-*), deleted, or unset datasets.

Changed

  • Event update: outputs must be an object
    • UpdateEventRequest.outputs and LegacyUpdateEventRequest.outputs are now typed as Dict[str, Any] instead of Any. Update calls accept only normalized (object-shaped) outputs; previously an array could slip through and corrupt the stored event. If you were passing a list when updating an event, wrap it as {"value": [...]}. Event creation and OTEL ingestion continue to normalize arrays automatically.

Installation

pip install honeyhive==1.4.0

Links

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 22:31
49baa96

HoneyHive Python SDK v1.3.0

What's Changed

Added

  • Configurable API request timeout
    • HoneyHive(timeout=...) now sets the per-request timeout, in seconds, for standard API client calls. You can also set HH_API_TIMEOUT; the explicit timeout= argument takes precedence. The default remains 5 seconds, so existing clients keep the same timeout unless you opt in.
  • Event lookup by ID
    • The generated sync and async event services now include GET /v1/events/{event_id} as getEvent(..., event_id=...), returning GetEventResponse / GetEventResponseEvent models exported from honeyhive.models.
  • Custom tracer export HTTP sessions
    • HoneyHiveTracer.init(requests_session=...) and TracerConfig(requests_session=...) now accept a caller-owned requests.Session for OTLP span export. Use this when you need custom proxies, retries, TLS settings, or connection pooling. The SDK does not close a session that you provide.

Compatibility

  • Self-host: GET /v1/events/{event_id} requires backend v1.3.0+
    • Self-hosted deployments must run a HoneyHive backend on version 1.3.0 or greater before calling GET /v1/events/{event_id}. Older self-host backends do not expose this route, so event-by-id calls will fail until the backend is upgraded. HoneyHive Cloud users are unaffected.

Installation

pip install honeyhive==1.3.0

Links

v1.2.1

Choose a tag to compare

@github-actions github-actions released this 11 Jun 23:58
e8bcb30

HoneyHive Python SDK v1.2.1

What's Changed

No customer-facing changes. Internal OpenAPI generator and generated-model cleanup only.

Installation

pip install honeyhive==1.2.1

Links

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 04 Jun 22:57
7f0bea3

HoneyHive Python SDK v1.2.0

What's Changed

Added

  • Metric versions API: client.metric_versions
    • New client.metric_versions.list(metric_id), .create(metric_id, request), and .deploy(metric_id, version_name) methods (plus *_async variants) for managing a metric's immutable version history, backed by /v1/metrics/{metric_id}/versions. Each metric keeps a history of versions with one deployed at a time; pass deploy_immediately=True on create to atomically deploy the new version. Version request/response models are exported from honeyhive.models.

Fixed

  • OTLP JSON exporter: serialize numeric fields as JSON strings
    • Integer span attributes (intValue) and uint64 timestamp fields
      (startTimeUnixNano, endTimeUnixNano, timeUnixNano) were emitted as
      raw JSON numbers. The protobuf JSON mapping spec requires these to be JSON
      strings; values above 2^53 could otherwise lose precision silently through
      float64 rounding. Now matches native opentelemetry-exporter-otlp-proto-http
      behavior.
  • Decorator input capture: remove truncation of serialized list/dict values
    • List and dict span attributes are serialized to strings and
      previously were truncated to 1000 characters in length. The arbitrary limit
      of 1000 characters has been removed.

Installation

pip install honeyhive==1.2.0

Links

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 19 May 23:19
147c35b

HoneyHive Python SDK v1.1.0

What's Changed

Added

  • Charts API: client.charts CRUD surface
    • New client.charts.create(), .list(), .get(chart_id), .update(chart_id, request), and .delete(chart_id) methods (plus *_async variants) backed by POST /v1/charts, GET /v1/charts, GET /v1/charts/{chart_id}, PUT /v1/charts/{chart_id}, and DELETE /v1/charts/{chart_id}. Chart request and response models are exported from honeyhive.models.

Changed

  • CrewAI integration example refreshed
    • The CrewAI example (examples/integrations/crewai_integration.py) has been rewritten with three realistic customer-support scenarios (single-agent with tool calls, sequential two-agent crew, and @trace escalation). Crews are now named for clearer span labels, and teardown properly flushes remaining spans.

Fixed

  • Tracer init: project / HH_PROJECT no longer required

    • HoneyHiveTracer.init() previously required project and treated a missing value as degraded mode. Since the backend determines the project from the API key, only api_key is actually needed. Callers that followed the v1.0.1 deprecation guidance and removed project were silently running in degraded mode — this is now fixed. project and HH_PROJECT remain accepted for backwards compatibility (deprecated, to be removed in v2.0).
  • Duplicate model spans in evaluate()

    • evaluate() could occasionally emit two model spans for a single LLM call when running multiple datapoints concurrently. The underlying race condition in instrumentation setup has been fixed.

Removed

  • cp_base_url= parameter and HH_CP_API_URL env var removed
    • These options were vestigial configuration for an incomplete Control Plane integration that was never wired up or shipped. No customer code could have depended on them. They have been removed to clean up the public API surface. If you happen to pass cp_base_url= or set HH_CP_API_URL, simply remove them — HH_API_URL / base_url= is the only base-URL setting.

Installation

pip install honeyhive==1.1.0

Links

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 11 May 19:47
0ebe36f

HoneyHive Python SDK v1.0.2

What's Changed

Fixed

  • Experiments: client-side evaluator scores now flow end-to-end in evaluate()

    • Scores returned by evaluators in evaluate() are now written to the correct user-function chain span via enrich_span(metrics=…), exported over OTLP, and surfaced in server-side run comparison's per-event metric_deltas. Previously, evaluator scores were duplicated into run.metadata.evaluator_metrics and onto the per-datapoint session event, but neither path actually populated the per-event surface that run comparison requires — client-side evaluator scoring and comparison did not work end-to-end.
    • The two legacy write paths have been removed now that the scores are correctly written to the chain span as the single source of truth.
  • API Client: event_id typed as required on POST /events responses

    • PostEventResponse.event_id was incorrectly typed as Optional[str] in the OpenAPI spec; the backend always returns the field on a 2xx response. The spec was corrected and the generated SDK now reflects the runtime guarantee, removing the need for defensive if event.event_id: guards. No runtime behavior change, but strictly typed mypy codebases with warn_unreachable = True or pyright with reportUnnecessaryComparison enabled may produce "unnecessary comparison" or "redundant Optional guard" warnings, depending on exact usage patterns.

Added

  • FilterFieldType.DATETIME enum value
    • The SDK enum was missing the "datetime" wire value supported by the backend. Additive — no behavior change for existing callers.

Deprecated

  • FilterFieldType.ID
    • ID = "id" was never a valid backend wire value and has always been rejected on the wire. Use "string" for UUID-shaped fields such as session_id. The alias is preserved so existing imports continue to resolve and will be removed in the next major.

Removed

  • honeyhive Python CLI entry point removed from pyproject.toml
    • The shipped Python honeyhive console script was non-functional (dead code) and shadowed the official TypeScript CLI on $PATH. CLI functionality is now provided by the official honeyhive TypeScript CLI; removing the Python script entry point lets honeyhive resolve correctly when both packages are installed globally.

Installation

pip install honeyhive==1.0.2

Links

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 05 May 17:06
f303e0c

HoneyHive Python SDK v1.0.1

What's Changed

Fixed

  • Default API URL fallback corrected to https://api.dp1.us.honeyhive.ai
    • The fallback value for the base API URL in the v1.0.0 release was incorrect. Any callers who relied on the implicit default would fail. The default now points at the host the SDK is built against, though self-hosted / non-default Data Plane deployments will still need to set HH_API_URL explicitly. Callers that explicitly set base_url= / server_url= or HH_API_URL are unaffected.

Deprecated

  • project argument and HH_PROJECT environment variable
    • The SDK's public surface has accepted project= on HoneyHive() and HoneyHiveTracer.init() and the HH_PROJECT env var for historical reasons. These arguments and env vars have no influence on the backend and they were maintained purely for backwards compatibility of callers. This release sweeps the stale references out of the example scripts, README, and docstrings, and adds a DeprecationWarning at the remaining call sites that previously didn't emit one. The argument and the HH_PROJECT env var alias remain accepted for backwards compatibility and will be removed in v2.0.

Installation

pip install honeyhive==1.0.1

Links

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 05 May 03:11
a6adca1

HoneyHive Python SDK v1.0.0

What's Changed

First stable GA release of the HoneyHive Python SDK. Public APIs follow semver from this release forward — breaking changes only on major versions, additive on minor and patch.

The changes below are relative to 1.0.0rc22. For the full picture of what shipped during the release-candidate cycle, see the 1.0.0rc11.0.0rc22 entries.

Changed

  • Tracing: skip_backend_session_creation=True now works without an explicit session_id

    • Previously the flag only opted out of the init-time backend roundtrip when a session_id was also supplied. Setting the flag alone is now supported: the SDK skips the roundtrip, does not mint a UUID, and per-request create_session(session_id=..., skip_api_call=True) calls emit spans that ingestion materializes into Session rows on first arrival.
  • Tracing: create_session(skip_api_call=True) propagates session_name into baggage

    • When session_name is supplied, it now travels with session_id across async / threaded boundaries.

Removed

  • DeleteMetricQuery removed from honeyhive.models
    • Internal query-params type that was exported but unused — no public method accepted or returned it. The public client.metrics.delete(id=...) signature is unchanged.

Installation

pip install honeyhive==1.0.0

Links

v1.0.0rc22

v1.0.0rc22 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 May 23:24
03a7078

HoneyHive Python SDK v1.0.0rc22

What's Changed

Added

  • Integrations: OpenAI Agents support via OpenInference

    • New optional dependency group openinference-openai-agents (pip install honeyhive[openinference-openai-agents]); also included in all-openinference.
  • Integrations: LangChain + LangGraph support

    • New optional dependency groups openinference-langchain and traceloop-langchain — one install covers both LangChain chains/agents and LangGraph StateGraph workflows. Also included in all-openinference and all-traceloop.
  • Integrations: AWS Strands Agents support

    • New optional dependency group aws-strands (pip install honeyhive[aws-strands]). Strands emits OpenTelemetry spans natively via strands.telemetry, so no separate instrumentor is needed — the HoneyHiveTracer global TracerProvider is picked up automatically.

Changed

  • API Client: Stricter client-side validation on event creation

    • PostEventRequestEvent.event_type is now a required Pydantic field. Calls that previously failed server-side as 400 now fail earlier as ValidationError instead of HTTPException — same root cause, just a different exception type.
  • Tracing dependencies: OpenTelemetry minimum bumped from 1.20.0 to 1.41.0

    • Floors raised on opentelemetry-api / -sdk / -exporter-otlp-proto-http. Traceloop instrumentor floors raised to >= 0.58.0 (was >= 0.46.0).

    Action Required

    • Environments pinning older OTel versions will need to upgrade.
  • API Client: Response and request fields are now typed Pydantic models instead of dicts

    • Affects client.events.export() / .get_by_session_id(), client.datapoints.create() / .update(), client.datasets.create() / .update() / .delete(), and client.metrics.list() / get_metric().
    • On the request side no migration is needed — Pydantic coerces raw dicts at construction time and unknown fields still flow to the wire.

    Action Required

    • Read nested response fields with attribute access instead of dict subscript:
      # before
      new_id = response.result["insertedIds"][0]
      # after
      new_id = response.result.insertedIds[0]
      # escape hatch if you need the dict form
      raw = response.result.model_dump()
    • Per-endpoint migration table, validation steps, and edge cases: see .agents/skills/migrate-to-1-0-0rc22/SKILL.md. AI coding assistants can invoke the migrate-to-1-0-0rc22 skill directly.

Fixed

  • Tracing: OTLP exporter preserves attribute types

    • The exporter previously wrapped every attribute as {"stringValue": str(value)}, so numeric and boolean attributes round-tripped through the backend as strings. Now mapped to the correct OTLP AnyValue variant.
  • Tracing: OTLP batch export groups spans by instrumentation scope

    • All spans in a batch were previously placed under the first span's scope, causing BatchSpanProcessor mixes (e.g. pydantic-ai chat + httpx POST) to misclassify model events as chains. Spans are now grouped by their actual instrumentation_scope.
  • Integrations: Anthropic / LangChain + LangGraph / AWS Bedrock audits

    • Refreshed integration examples and docs (examples/integrations/, docs/how-to/integrations/) to current model IDs and modern usage patterns.

Installation

pip install honeyhive==1.0.0rc22

Links