Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[BOT ISSUE] Google GenAI embedContent spans lack embedding-specific input, metrics, and span type

オープン
#65 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
74/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
java
領域
observability

調査の方向性

braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java から始め、特に tagSpan() と getOperation() を確認します。BraintrustGenAITest.java と、Google GenAI の embedContent リクエストおよびレスポンス形式を確認します。embedding スパンが要求された入力フィールドと課金対象文字数メトリクスを取得し、embedding スパン型を使用し、焦点を絞ったテストカバレッジを備えていれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Summary

When client.models.embedContent() is called through the instrumented Google GenAI client, the call is captured at the HTTP level but the span contains almost no useful embedding-specific detail. The tagSpan() method in BraintrustApiClient only extracts fields relevant to generateContent (like contents, generationConfig, usageMetadata), which are absent from embedding requests and responses.

The span is created with the correct operation name (embed_content) but has:

  • Empty input_json: only {"model": "..."} — the actual content being embedded, taskType, title, and outputDimensionality are not extracted
  • No metrics: embedding responses use metadata.billableCharacterCount instead of usageMetadata, so no token/character counts are captured
  • Incorrect span type: marked as type: "llm" rather than type: "embedding" (or equivalent)

The full response is stored in output_json as a raw dump, so the embedding vector data is technically present but not meaningfully structured.

What is missing

In BraintrustApiClient.tagSpan() (lines 50–161):

Request parsing (lines 97–112):

  • Checks for contents (generateContent field) but embedContent uses content (singular)
  • Checks for generationConfig but embedContent uses taskType, title, outputDimensionality
  • Result: input_json only contains {"model": "..."} for embedding calls

Response parsing (lines 116–149):

  • Checks for usageMetadata with promptTokenCount/candidatesTokenCount but embedContent responses have metadata with billableCharacterCount
  • Result: no metrics are captured

Span attributes (line 156):

  • Hardcodes type: "llm" for all calls including embeddings

Braintrust docs status

  • The Braintrust Gemini integration docs at braintrust.dev/docs/integrations/ai-providers/gemini do not mention embeddings: not_found
  • No embeddings instrumentation is documented for any provider in Java

Upstream sources

  • Google GenAI embeddings docs: https://ai.google.dev/gemini-api/docs/embeddings — documents embedContent as a stable, first-class API with models like gemini-embedding-001
  • Google GenAI Java SDK: client.models.embedContent() is available with EmbedContentConfig (taskType, title, outputDimensionality) and returns EmbedContentResponse with embeddings and metadata
  • embedContent request format: uses content (singular), taskType, title, outputDimensionality — none of which match the generateContent fields currently extracted
  • embedContent response format: returns embedding.values array and metadata.billableCharacterCount — not usageMetadata

Local files inspected

  • braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java — lines 50–161 (tagSpan only extracts generateContent-relevant fields), lines 325–333 (getOperation correctly parses embedContent to embed_content)
  • braintrust-sdk/instrumentation/genai_1_18_0/src/test/java/dev/braintrust/instrumentation/genai/v1_18_0/BraintrustGenAITest.java — no embedContent test exists
  • braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustInstrumentation.java — wraps ApiClient generically, no embedding-specific logic
主要言語
Java
スター
21
フォーク
5
平均マージ
2日 7時間
マージ済み PR(30日)
8

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

braintrustdata/braintrust-sdk-java のほかの issue

braintrustdata/braintrust-sdk-java の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。