[BOT ISSUE] Google GenAI (Gemini) streaming calls are not instrumented
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- java
- Lĩnh vực
- observability
Hướng nghiên cứu
Bắt đầu với BraintrustApiClient.java ở các dòng 186–312 và kiểm tra các phương thức streaming của ApiClient upstream được generateContentStream sử dụng. So sánh cách xử lý SSE và việc tích lũy các chunk trong các triển khai TracingHttpClient của OpenAI và Anthropic, sau đó xem lại BraintrustGenAITest.java. Hoàn tất nghĩa là các lệnh gọi Gemini streaming tạo ra spans, thu thập đầu ra và các chỉ số sử dụng token.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
The Google GenAI instrumentation wraps ApiClient.request() and ApiClient.asyncRequest() for synchronous and asynchronous non-streaming calls, but does not override any streaming methods. Calls to client.models.generateContentStream() and similar streaming APIs bypass the instrumentation entirely, producing no spans, no output capture, and no token usage metrics.
What is missing
BraintrustApiClient.java overrides 4 methods:
request(String, String, String, Optional)(line 186)request(String, String, byte[], Optional)(line 210)asyncRequest(String, String, String, Optional)(line 239)asyncRequest(String, String, byte[], Optional)(line 277)
The upstream ApiClient class in the Google GenAI SDK also has streaming request methods (used internally by generateContentStream) that are not overridden. This means streaming Gemini calls — a common pattern for chat applications — are completely invisible to Braintrust tracing.
For comparison, both the OpenAI and Anthropic instrumentations in this repo handle streaming via SSE detection and chunk accumulation in their respective TracingHttpClient implementations.
Upstream sources
- Google GenAI Java SDK: https://github.com/googleapis/java-genai — streaming is a core feature, with
generateContentStreamavailable since early versions. The SDK is now at v1.46.0 (this repo pins to v1.18.0). - Gemini API streaming docs: https://ai.google.dev/gemini-api/docs/text-generation#generate-a-text-stream
Braintrust docs status
not_found— braintrust.dev/docs does not reference Google GenAI streaming instrumentation for Java. The Java SDK docs page redirects to the GitHub repo.
Local files inspected
braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java— lines 186–312 (only non-streamingrequest/asyncRequestoverridden; no streaming method override)braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustInstrumentation.java— wraps ApiClient in Client and service fields, no streaming awarenessbraintrust-sdk/instrumentation/genai_1_18_0/src/main/java/dev/braintrust/instrumentation/genai/v1_18_0/BraintrustGenAI.java— thin wrapper, delegates to BraintrustInstrumentationbraintrust-sdk/instrumentation/genai_1_18_0/src/test/java/dev/braintrust/instrumentation/genai/v1_18_0/BraintrustGenAITest.java— only tests sync and async non-streaming; no streaming tests exist
- Ngôn ngữ chính
- Java
- Star
- 21
- Fork
- 5
- Merge trung bình
- 2 ngày 7 giờ
- Pull request đã merge (30 ngày)
- 8
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 braintrustdata/braintrust-sdk-java
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Tất cả issue của braintrustdata/braintrust-sdk-java
Issue tương tự
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Đang mởarea/plugin
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
kestra-io/plugin-kestra#190 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Add canonical URLs and a sitemap Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
integra-team-red/meet-map#249 ·
-
[Studio][Bug] Cancelled create-user dialog keeps the password and admin switch for the next attempt Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
apache/rocketmq-dashboard#5064 ·