RestatePlugin: after_model_callback never invoked - before_model_callback returns LlmResponse causing ADK to skip post-model hooks
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Inizia tracciando RestatePlugin.before_model_callback e la gestione da parte di Google ADK dei valori restituiti da before_model_callback. Confronta questo flusso con after_model_callback e con il workaround tramite sottoclasse riportato. Il lavoro è completato quando l’hook post-modello può ricevere la risposta del modello e i metadati di utilizzo quando sono registrati plugin aggiuntivi, senza compromettere la semantica di replay di Restate.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug Description
When registering additional plugins, alongside Restate (in our case it was for ADK-level observability), after_model_callback is never invoked. This makes it impossible to access the model response and usage metadata in post-call hook, which is the natural place to capture $ai_generation events.
Environment
restate-sdk(version 0.16.0)google-adk(1.28.1)RestatePlugin
Root Cause
The ADK framework uses the return value of before_model_callback as a signal:
None-> proceed with the real model call, then invokeafter_model_callbackLlmResponse-> short-circuit: skip the model call and skipafter_model_callback
RestatePlugin.before_model_callback wraps the LLM call inside a Restate durable step, which means it executes the model call itself and returns a LlmResponse. This is correct for Restate's replay semantics, but it has a side effect: after_model_callback is never reached, regardless of what subclasses implement there.
Workaround
Our current workaround is to subclass (decorate) the RestatePlugin itself, so we can simulate the after_model_callback trigger inside the wrapped before_model_callback call, but we believe this is worth tracking and resolving.
- Lingua principale
- Python
- Stelle
- 81
- Fork
- 23
- Merge medio
- 4g 2h
- PR unite (30g)
- 1
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di restatedev/sdk-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
restatedev/sdk-python#223 · 1 commento ·
-
Difficoltà 2/5 1-2 giorni Idoneità per principianti 68/100
restatedev/sdk-python#204 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
restatedev/sdk-python#225 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
restatedev/sdk-python#222 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
restatedev/sdk-python#221 ·
Tutte le issue di restatedev/sdk-python
Issue simili
-
ACK_WAITING HELP_WANTED UPDATE_CS
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OWASP/CheatSheetSeries#2458 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
BasedHardware/omi#19711 ·
I maintainer di solito rispondono entro 1 giorno
-
Qwen3_5MoeModel no longer returns router_logits, breaking aux loss with output_router_logits=TrueAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
huggingface/transformers#49172 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
vllm-project/vllm-metal#885 ·
I maintainer di solito rispondono entro 1 giorno