@sahil.dutta, the mechanic behind that: AgentSession doesn’t expose a runtime LLM-only swap. The llm, stt, tts plugins are set in init and stored as private fields with no public swap method livekit-agents/…/voice/agent_session.py. The only mid-session swap available is the whole Agent instance, via session.update_agent(agent).
You can use the pattern such as; instantiate two Agents (one with the fast model, one with the reasoning model) and call update_agent when you want to switch. The same source notes update_agent immediately blocks the old activity from accepting new user turns, which is what makes the transition seamless from the user’s perspective.