Add ai_trace_sample_rate to sample AI observability events by trace id
Les mainteneurs répondent en général sous 1 jour
@jakesciotto y travaille déjà.
Depuis le 16/9/2026.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
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.
- Langage dominant
- Python
- Étoiles
- 61
- Forks
- 85
- Merge moyen
- 1 j 22 h
- PR mergées (30 j)
- 66
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de PostHog/posthog-python
-
Backpressure when queue is fullOuverteenhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
PostHog/posthog-python#146 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de PostHog/posthog-python
Issues similaires
-
vis.image() reports "Unsupported number of image channels: 224" for an HxWxC imagePeut-être pris @piyush182004 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
fossasia/visdom#1997 · 3 commentaires ·
Les mainteneurs répondent en général sous 6 jours
-
Byse new domainOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Gujal00/ResolveURL#1525 ·
Les mainteneurs répondent en général sous 1 jour
-
Serialisation fails with pydantic 2.14: wrap serialisers pass SerializationInfo as index_keyPeut-être pris @hugohills-regnosys l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
finos/rune-python-runtime#45 ·
-
[Bug]: LangGraph Store sync put bypasses namespace validationPeut-être pris @ktz03 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
volcengine/OpenViking#6050 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
hummingbot/condor#283 ·
Les mainteneurs répondent en général sous 1 jour