[Bug]: Testing agent gives one service's tools inconsistent name prefixes, so the model calls names that don't exist
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 55/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Bereich
- backend-api-design
Rechercherichtung
Start by locating GeminiToolConverter.getGeminiFunctionName and trace how converted function names are matched when the Gemini provider receives a tool call; the report also names GeminiProviderImpl as a possible entry point. Reproduce with one service whose methods cross the 64-character cutoff at different points, then verify that its tools have consistent names or that calls resolve correctly; the issue provides no test file to run.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
The Testing Agent shortens each AppFunction id to a Gemini function name of at most 64 characters by keeping as many _-separated parts as fit, from the right (GeminiToolConverter.getGeminiFunctionName). Because the cutoff depends on each method's length, the tools of one service end up with different prefixes:
com.example.app.feature.notes.ExampleNotesAppFunctionService#addNote
-> example_app_feature_notes_ExampleNotesAppFunctionService_addNote
com.example.app.feature.notes.ExampleNotesAppFunctionService#updateNoteSettings
-> feature_notes_ExampleNotesAppFunctionService_updateNoteSettings
com.example.app.feature.notes.ExampleNotesAppFunctionService#getNoteFieldDescriptions
-> notes_ExampleNotesAppFunctionService_getNoteFieldDescriptions
The model generalizes from the majority and "corrects" the others, so it calls names that don't exist, for example:
Called unknown function: feature_notes_ExampleNotesAppFunctionService_getNoteFieldDescriptions
We also saw a doubled prefix (the shortened prefix repeated in front of a full name) from the same confusion. Each failure ends the agent's turn.
Steps to reproduce
- Expose a service with a long package and class name and methods of varying length (anything that crosses the 64-character cutoff at different parts).
- Run a task in Agent Demo that needs one of the longer-named functions.
- The model calls a prefixed variant and the agent reports
Called unknown function.
Suggested fix
Any of these would help:
- Give all tools of one service the same prefix, e.g. pick the cutoff once per service (the deepest part every method of that service fits), or use
ClassName_methodwith a short hash when even that exceeds 64 characters. - Resolve calls tolerantly: when the exact name is unknown, fall back to the unique tool whose name ends with the called name's
ClassName_methodsuffix. A local patch doing this inGeminiProviderImplremoved the errors in our testing.
Environment
- Testing Agent at a3a2a89 (main, Oct 23, 2026)
- androidx.appfunctions 1.0.0-beta01
- Android 17 (API 37) emulator, model gemini-3.5-flash
Related: #62, #63.
- Vorherrschende Sprache
- Kotlin
- Sterne
- 210
- Forks
- 45
- Ø Merge
- 12 Std. 24 Min.
- Gemergte PRs (30 T.)
- 3
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus android/appfunctions
-
documentation
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
android/appfunctions#66 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
android/appfunctions#62 ·
-
[FR]: Testing agent should handle AppFunctionUriGrant results and pass returned images to the modelOffen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
android/appfunctions#63 ·
-
Clarify production invocation, Android Auto support, and Android 16 fallback in AppFunctions docsOffen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 52/100
android/appfunctions#51 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
android/appfunctions#50 · 1 Kommentar ·
Alle Issues in android/appfunctions
Ähnliche Issues
-
pending:code-area pending:issue-category to-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
T31n/YagniLauncher#1096 ·
Maintainer antworten meist innerhalb von 1 Tag
-
win_build: parallel PostBuildEvent race in example_app_atiopencl and example_app_nvopencl copying openclapp_kernels.clEvtl. vergeben @qixuancao hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
Maintainer antworten meist innerhalb von 1 Tag
-
OkHttp versions 5.4.0+ no longer include baseline-prof.txtEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offenbug
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 83/100
lysine-dev/okhttp#9828 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug Impact: Low Work: Low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
oppia/oppia-android#6532 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 3 Tagen