[bot] Google GenAI: Chat session API (`chats.create`, `send_message`) not instrumented in Python (documented as traced in JS)
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 65/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- python
调研方向
The issue is to add instrumentation for the Chat session API in the Google GenAI Python SDK. Start by examining the existing patchers in py/src/braintrust/integrations/google_genai/patchers.py and integration.py. Look at the upstream google/genai/chats.py to understand the Chat/AsyncChat classes and their send_message methods. The goal is to create a new patcher that captures session-level spans for chat lifecycle and history, similar to the JS/TS implementation. Test by running the existing integration tests and verifying that chat spans appear in traces.
由索引模型根据 Issue 内容生成。
描述
Summary
The google-genai Python SDK's Chat session API (client.chats.create(model=...) returning a Chat/AsyncChat with send_message()/send_message_stream()) has no dedicated instrumentation in this repo's Python integration. Braintrust's own docs confirm this capability is already designed and shipped for the legacy JS/TS SDK ("Chat spans (send_message, send_message_stream): message input and model as metadata") — it is simply missing from the Python integration.
What is missing
py/src/braintrust/integrations/google_genai/patchers.py and integration.py register patchers only for Models/AsyncModels (generate_content, generate_content_stream, embed_content, generate_images) and Interactions/GAOSInteractions (create/get/cancel/delete, sync and async). There is no patcher targeting google.genai.chats.Chats/AsyncChats/Chat/AsyncChat anywhere in the file, and no reference to chat, Chat, or send_message in tracing.py or patchers.py.
Verified against the pinned upstream version (google-genai==2.24.0, per py/uv.lock): Chat.send_message() does internally delegate to self._modules.generate_content(...) — i.e. it reuses the already-patched Models.generate_content path, so a generate_content span is still produced per turn. However, Chat/AsyncChat (subclass _BaseChat) separately maintains cross-turn conversation state — self._curated_history and self._comprehensive_history, updated via record_history() after every turn — that is invisible to any single generate_content span. There is no session-level span capturing the chat object's lifecycle, turn count, or curated-vs-comprehensive history divergence (e.g. when a turn is marked invalid and excluded from curated history sent to the model on subsequent turns).
Braintrust docs status: supported (JS/TS) / not_found (Python)
The Gemini integration page, Python section, documents only: content generation spans (generate_content/generate_content_stream), embedding spans (embed_content), image generation spans (generate_images), and interaction spans (interactions.create/get/cancel/delete). It contains zero mentions of chat, chats, send_message, or ChatSession in the Python section.
The same page's legacy-SDK section (for @google/generative-ai, JS/TS) explicitly documents: "Chat spans (send_message, send_message_stream): message input and model as metadata." This confirms Braintrust considers chat-session tracing a real, intended capability — it has just not been ported to the Python google-genai integration.
Upstream sources
google-genaiPython SDK,google/genai/chats.py(tagv2.24.0), classesChat/AsyncChat/_BaseChat, factoriesChats.create()/AsyncChats.create(): https://github.com/googleapis/python-genai/blob/v2.24.0/google/genai/chats.py- Google GenAI Chat documentation: https://ai.google.dev/gemini-api/docs/text-generation#chat
Local repo files inspected
py/src/braintrust/integrations/google_genai/integration.py(full file — patcher list)py/src/braintrust/integrations/google_genai/patchers.py(full file — noChat/chatspatcher)py/src/braintrust/integrations/google_genai/tracing.py(grepped for all top-levelclass/defnames andchat— no matches)py/uv.lock(confirms pinnedgoogle-genai==2.24.0)
- 主要语言
- Python
- 星标
- 19
- 派生
- 17
- 平均合并
- 1 天 5 小时
- 30 天内合并 PR
- 61
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
braintrustdata/braintrust-sdk-python 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 86/100
-
难度 4/5 3-5 天 新手友好度 45/100
-
难度 4/5 3-5 天 新手友好度 48/100
-
难度 4/5 3-5 天 新手友好度 55/100
查看 braintrustdata/braintrust-sdk-python 的全部 Issue
相似的 Issue
-
agent-ready documentation needs-triage
难度 1/5 1-3 小时 新手友好度 88/100
-
documentation
难度 1/5 1 小时以内 新手友好度 91/100
-
workflow-status page template still says reusable workflows are "triggered only by workflow_call:" 未关闭
难度 1/5 1 小时以内 新手友好度 92/100
-
instance instance add
难度 1/5 1 小时以内 新手友好度 72/100
searxng/searx-instances#939 · 1 条评论 ·
-
area-deployment area-integrations triage:bot-seen
难度 2/5 半天 新手友好度 86/100