Thursday, 19 March 2026

adk cached gemini

from google.adk.models.google_llm import Gemini

class CachedGemini(Gemini):

    _cache: dict[str, list[dict]]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._cache = SqliteDict('./cache.sqlite', autocommit=True)

    async def generate_content_async(
        self, llm_request: LlmRequest, stream: bool = False
    ) -> AsyncGenerator[LlmResponse, None]:
        cache_key = hashlib.sha256(llm_request.model_dump_json().encode()).hexdigest() + ('_stream' if stream else '_nostream')
        if cache_key in self._cache:
            print("Cache hit for request")
            for cached_response in self._cache[cache_key]:
                yield LlmResponse.model_validate(cached_response)
            return

        events = [] 
        async for llm_response in super().generate_content_async(llm_request, stream):
            events.append(llm_response.model_dump())
            yield llm_response

        self._cache[cache_key] = events
        
root_agent = Agent(
    model=CachedGemini(model=MODEL),
    ...
)

No comments:

Post a Comment

adk cached gemini

from google.adk.models.google_llm import Gemini class CachedGemini(Gemini): _cache: dict[str, list[dict]] def __init__(self, *ar...