[spring-ai] Bridge drops reasoning_content (thinking) — surface it as partial events and/or persist it
Los mantenedores suelen responder en 1 día
@hemasekhar-p ya está trabajando en esto.
Desde el 5/10/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Is your feature request related to a problem? Please describe.
Spring AI 2.0 already exposes reasoning content from thinking models such as DeepSeek-R1, Qwen-Thinking, and GLM via AssistantMessage metadata (reasoningContent). However, in the Spring AI bridge used by ADK, this field is not read or forwarded.
After decompiling 1.11.0, I confirmed the four core bridge classes — SpringAI, MessageConverter, StreamingResponseAggregator, and ConfigMapper — don't reference reasoningContent at all. The result is that reasoning is silently dropped: it is neither forwarded as partial events nor persisted to the session, and there is no warning. Users running thinking models through the bridge lose the entire reasoning stream.
Describe the solution you'd like
During streaming aggregation, the bridge should read reasoningContent and surface it to ADK consumers. For example:
- emit it as dedicated reasoning parts on partial
LlmResponses, persisted together with the final event; or - map it onto the thought flag if the Java SDK's
Partsupports it, similar to the Gemini path.
This would make thinking models actually usable through the bridge: UIs could render collapsible thinking panels, and session history would retain the reasoning trace for audit.
We already handle this in a production fork via a lightweight marker protocol around the reasoning text, with the frontend rendering collapsible thinking panels and per-segment timing. Happy to share the implementation or send a PR.
One thing the bridge would also need to normalize: OpenAI-compatible gateways differ in reasoning chunk semantics — some stream pure deltas, others return cumulative text per chunk. Consumers currently need prefix-detection heuristics to avoid duplication; if the bridge normalized to pure deltas once, all downstream code stays simple.
Describe alternatives you've considered
Keeping the status quo forces anyone using thinking models through the bridge to either fork it or lose reasoning entirely.
Additional context
Verified against 1.11.0 (current latest at the time of writing). No Spring AI changes are needed — the metadata is already there, waiting for the bridge to read it.
- Lenguaje dominante
- Java
- Estrellas
- 1.7k
- Forks
- 431
- Merge medio
- 3 d 2 h
- PR fusionados (30 d)
- 46
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de google/adk-java
-
[spring-ai] ToolConverter silently drops enum and items from tool parameter schemasPosiblemente ocupada @hirematha la tomó hace 1 día. Abiertoneeds review
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
google/adk-java#1609 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[spring-ai] Streaming responses ending with CJK punctuation (。!?) are misclassified as partial and never persisted to the sessionPosiblemente ocupada @hirematha la tomó hace 1 día. Abiertowaiting on reporter
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
google/adk-java#1608 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[core] Client disconnects don't cancel the model stream (per-step flow is cached) — and there is no public API to cancel an in-flight runPosiblemente ocupada @hemasekhar-p la tomó hoy. Abiertoneeds review
google/adk-java#1618 · 6 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[FEATURE] Port bypass_multi_tools_limit for built-in search tools from adk-pythonPosiblemente ocupada @hirematha la tomó hace 1 día. Abiertoneeds review
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
google/adk-java#1598 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
BaseLlmFlow nests each step inside the previous one and overflows the stack after a few hundred LLM callsPosiblemente ocupada @hemasekhar-p la tomó hace 8 días. Abiertoneeds review
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
google/adk-java#1564 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de google/adk-java
Issues similares
-
[Bug] Logo style setting missing and `classic` style not applied across multiple platforms (v3.1.0)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Stirling-Tools/Stirling-PDF#8382 · 1 reacción ·
Los mantenedores suelen responder en 2 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
Los mantenedores suelen responder en 4 días
-
enhancement untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
opensearch-project/sql#5842 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
openhab/openhab-addons#21882 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
YunaiV/ruoyi-vue-pro#1273 ·
Los mantenedores suelen responder en 3 días