magnificent-umbrella-70558
05/14/2026, 12:28 PMtall-airline-16756
05/14/2026, 12:28 PMtall-airline-16756
05/14/2026, 12:29 PMctx.update().”
• Make tool intent explicit — craft the tool name + description to clearly state it must be invoked immediately (e.g., “ImmediateBackgroundLookup: call immediately, then report progress via updates”).
• Use pre-turn retrieval — if applicable, run your lookup before handing control to the LLM (perform RAG or a prior fetch) so the LLM has the data available and won’t narrate a lookup intent.
• Rely on AsyncRunContext updates — once the tool runs, use await ctx.update("...") frequently; the agent will translate those updates into speech while the tool continues.
• Combine approaches — small prompt rule + explicit tool description + pre-fetch for critical paths gives the best chance the LLM will call the tool first.
If you’d like, tell me:
• which LLM (model) you’re using, and
• one example of the tool signature + current prompt you give the agent.
With that I can suggest a concrete prompt rewrite and a sample tool description to increase the chance the model calls the tool before speaking.
Sources: Async tools | LiveKit Documentation | External data and RAG | LiveKit Documentation | The ReAct Pattern for Voice Agents and How AI Agents Think, Act, and Respon..., with interactive elements