Add ai_trace_sample_rate to sample AI observability events by trace id
Maintainer antworten meist innerhalb von 1 Tag
@jakesciotto arbeitet bereits daran.
Seit 16.9.2026.
Bewertung
Dieses Issue wurde noch nicht bewertet.
Beschreibung
Problem Statement
Teams whose AI observability volume is mostly $ai_* events have no supported way to keep a fraction of traces. The only path today is a hand-written before_send hook that hashes $ai_trace_id. Most teams do not write one. A hook that samples per event splits a trace, so the trace view shows partial trees.
Related: PostHog/posthog-js#4997 for the same option in posthog-node.
Solution Brainstorm
One client option, default off:
Client(api_key, ai_trace_sample_rate=0.1)
Env var POSTHOG_AI_TRACE_SAMPLE_RATE, same precedence rule as POSTHOG_CAPTURE_MODE (kwarg > env > default).
Behavior:
- Applies to events named
$ai_*that carry$ai_trace_id. - FNV-1a 32-bit hash of the trace id. Keep when
hash / 2^32 < rate. Same hash in every SDK, so a mixed Python and Node stack makes one decision per trace. - Runs in
Client._enqueuebeforebefore_send, so a customer hook sees only kept events. - Adds
$ai_trace_sample_rateto kept events, so the server can scale totals later. - Events with no trace id are kept. Rate unset or
1.0means no sampling. Out-of-range values log a warning and are ignored.
flowchart LR
W[AI wrappers and agent processors] --> C[_capture_ai_event]
M[Manual capture of $ai_* events] --> E[Client._enqueue]
C --> E
E --> S{ai_trace_sample_rate}
S -- drop --> X[Dropped]
S -- keep --> B[before_send] --> Q[Queue]
Alternatives considered: a helper that returns a before_send function. Rejected because before_send takes one callable, so the helper does not compose with an existing hook.
Impact
- Gives AI observability users a supported volume lever that keeps traces whole.
- Removes the need for a custom hook that is easy to get wrong.
Blast radius
- Default off. No behavior change for any existing caller.
- Touches
Client.__init__andClient._enqueueonly. Wrappers do not change. - Affects
$ai_*events only. Other events never reach the sampler. - Kept
$ai_*events gain one property when the option is set. - Public API grows by one option and one env var.
references/public_api_snapshot.txtchanges.
Not in this issue
Tail sampling that keeps errored traces. A per-call override. Server-side upweighting of cost dashboards.
- Vorherrschende Sprache
- Python
- Sterne
- 61
- Forks
- 85
- Ø Merge
- 1 T. 22 Std.
- Gemergte PRs (30 T.)
- 66
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus PostHog/posthog-python
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
PostHog/posthog-python#146 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in PostHog/posthog-python
Ähnliche Issues
-
customer-reported question
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Azure/azure-sdk-for-python#49548 · 1 Kommentar · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
btclib-org/btclib-wallet#409 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Phase 2 PSA Capability & Career Profile
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
bcgov/digital-journeys#2310 ·
-
bug good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
fastmachinelearning/hls4ml#1582 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Sort modelsOffenenhancement good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 1 Tag