Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

[bot] Google GenAI: Chat session API (`chats.create`, `send_message`) not instrumented in Python (documented as traced in JS)

Offen
#799 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
65/100
Issue-Typ
Feature
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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

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 — no Chat/chats patcher)
  • py/src/braintrust/integrations/google_genai/tracing.py (grepped for all top-level class/def names and chat — no matches)
  • py/uv.lock (confirms pinned google-genai==2.24.0)
Vorherrschende Sprache
Python
Sterne
19
Forks
17
Ø Merge
1 T. 5 Std.
Gemergte PRs (30 T.)
61

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus braintrustdata/braintrust-sdk-python

Alle Issues in braintrustdata/braintrust-sdk-python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.