Add ai_trace_sample_rate to sample AI observability events by trace id
@jakesciotto đang làm issue này rồi.
Từ ngày 16/9/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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.
- Ngôn ngữ chính
- Python
- Star
- 61
- Fork
- 82
- Merge trung bình
- 1 ngày 15 giờ
- Pull request đã merge (30 ngày)
- 71
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của PostHog/posthog-python
-
Backpressure when queue is full Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
PostHog/posthog-python#146 · 1 bình luận ·
Tất cả issue của PostHog/posthog-python
Issue tương tự
-
bug confirmed issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
open-webui/open-webui#30750 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100