Gemini googleSearch grounding tool is dropped when running prompts via invoke / OpenAI-compat proxy
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- typescript
Piste de recherche
Commencez par reproduire le problème via prompt invoke et /v1/proxy/chat/completions avec l’outil googleSearch de Gemini, puis comparez la requête avec le chemin natif braintrustproxy.com generateContent. Suivez le routage du proxy et la détection du format de requête utilisés par ces points d’entrée. Le travail est terminé lorsque l’outil est transmis pour les requêtes Gemini et que groundingMetadata peut être généré via le flux Braintrust pris en charge.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
A Braintrust prompt configured with Gemini's search-grounding tool (tools: [{ "googleSearch": {} }]) does not perform grounding when the prompt is run through Braintrust (prompt invoke, experiments, or the /v1/proxy/chat/completions endpoint). The tool is silently dropped — the logged LLM span shows tools: null — so the model answers from training data only, and groundingMetadata is never produced.
This looks like the request-side root cause of braintrustdata/braintrust-sdk-javascript#1700 (grounding metadata not captured): grounding never actually runs via the OpenAI-compatible proxy path, so there is no metadata to capture.
Environment
braintrustJS SDK: 3.15.0- Model:
gemini-2.5-pro/gemini-2.5-flash - Prompt
prompt_data.tools:"[{\"googleSearch\":{}}]"
Reproduction
- Create a prompt for
gemini-2.5-prowhose tools array is the Gemini grounding tool[{ "googleSearch": {} }]. - Run it via the prompt
invokeAPI (or as an experiment task viainvoke()). - Inspect the logged LLM span.
Observed: span request metadata has tools: null; the model responds without searching; fields that require fresh web data come back empty. No groundingMetadata.
Direct proxy evidence
The OpenAI-compatible proxy rejects/drops the Gemini-native grounding tool:
# (A) googleSearch on the OpenAI-compat endpoint -> gateway error
curl https://api.braintrust.dev/v1/proxy/chat/completions \
-H "Authorization: Bearer $BT" -H "Content-Type: application/json" \
-d '{"model":"gemini-2.5-flash","messages":[{"role":"user","content":"latest news?"}],"tools":[{"googleSearch":{}}]}'
# -> "Braintrust gateway error: Unable to detect request source format"
# (B) {"type":"web_search"} -> same gateway error
# (C) a normal function tool (e.g. google_web_search) -> returned as finish_reason=tool_calls,
# never executed, so no grounding actually happens
The same grounding tool works through the native Google passthrough endpoint — but only on braintrustproxy.com, not api.braintrust.dev:
curl https://braintrustproxy.com/v1/proxy/google/models/gemini-2.5-flash:generateContent \
-H "Authorization: Bearer $BT" -H "Content-Type: application/json" \
-d '{"contents":[{"role":"user","parts":[{"text":"latest news?"}]}],"tools":[{"googleSearch":{}}]}'
# -> candidates[0].groundingMetadata present (webSearchQueries + groundingChunks)
For comparison, the same path on api.braintrust.dev returns HTTP 405 "Method POST not supported".
Expected
Running a prompt with the Gemini googleSearch grounding tool through Braintrust (invoke / experiments / playground) should forward it to Gemini so grounding actually runs — e.g. by routing gemini + googleSearch to the native generateContent request — instead of dropping the tool on the OpenAI-compatible path.
Workaround
Bypass invoke and call the native passthrough (https://braintrustproxy.com/v1/proxy/google/models/{model}:generateContent) with the native tools: [{ "googleSearch": {} }] body. Grounding runs and uses the Braintrust-configured Google key.
Related
- braintrustdata/braintrust-sdk-javascript#1700 — Google GenAI grounding metadata not captured (this issue is the request-side cause).
- Langage dominant
- TypeScript
- Étoiles
- 29
- Forks
- 21
- Merge moyen
- 1 j 12 h
- PR mergées (30 j)
- 70
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de braintrustdata/braintrust-sdk-javascript
-
High TypeScript checking cost from generated Zod 3 schemasPeut-être pris @lforst l’a pris il y a 12 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 22/100
braintrustdata/braintrust-sdk-javascript#2624 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
[bot] Instrument Luma AI (17,324 weekly downloads)Peut-être pris @karthiksenv l’a pris il y a 12 jours. Ouvertetypescript
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
braintrustdata/braintrust-sdk-javascript#2578 ·
Les mainteneurs répondent en général sous 1 jour
-
[bot] Instrument Letta Agent SDK (87,205 weekly downloads)Peut-être pris @karthiksenv l’a pris il y a 15 jours. Ouvertetypescript
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
braintrustdata/braintrust-sdk-javascript#2577 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
braintrustdata/braintrust-sdk-javascript#2527 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 65/100
braintrustdata/braintrust-sdk-javascript#2526 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de braintrustdata/braintrust-sdk-javascript
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 84/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
keptinventory/kept#336 ·
Les mainteneurs répondent en général sous 1 jour
-
good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
-
hemi-earn
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
vetro-protocol/vetro-monorepo#1013 ·
Les mainteneurs répondent en général sous 1 jour