llm_switcher
LLM switcher for switching between different LLMs at runtime, with different switching strategies.
- class pipecat.pipeline.llm_switcher.LLMSwitcher(llms: list[~pipecat.services.llm_service.LLMService], strategy_type: type[~pipecat.pipeline.service_switcher.StrategyType] = <class 'pipecat.pipeline.service_switcher.ServiceSwitcherStrategyManual'>)[source]
Bases:
ServiceSwitcher[StrategyType]A pipeline that switches between different LLMs at runtime.
Example:
llm_switcher = LLMSwitcher(llms=[openai_llm, anthropic_llm])
- __init__(llms: list[~pipecat.services.llm_service.LLMService], strategy_type: type[~pipecat.pipeline.service_switcher.StrategyType] = <class 'pipecat.pipeline.service_switcher.ServiceSwitcherStrategyManual'>)[source]
Initialize the service switcher with a list of LLMs and a switching strategy.
- Parameters:
llms – List of LLM services to switch between.
strategy_type – The strategy class to use for switching between LLMs. Defaults to
ServiceSwitcherStrategyManual.
- property llms: list[LLMService]
Get the list of LLMs managed by this switcher.
- Returns:
List of LLM services managed by this switcher.
- property active_llm: LLMService
Get the currently active LLM.
- Returns:
The currently active LLM service, or None if no LLM is active.
- async run_inference(context: LLMContext, **kwargs) str | None[source]
Run a one-shot, out-of-band (i.e. out-of-pipeline) inference with the given LLM context, using the currently active LLM.
- Parameters:
context – The LLM context containing conversation history.
**kwargs – Additional arguments forwarded to the active LLM’s run_inference (e.g. max_tokens, system_instruction).
- Returns:
The LLM’s response as a string, or None if no response is generated.
- register_function(function_name: str | None, handler: Any, *, cancel_on_interruption: bool = True, timeout_secs: float | None = None)[source]
Register a function handler for LLM function calls, on all LLMs, active or not.
- Parameters:
function_name – The name of the function to handle. Use None to handle all function calls with a catch-all handler.
handler – The function handler. Should accept a single FunctionCallParams parameter.
cancel_on_interruption – Whether to cancel this function call when an interruption occurs. Defaults to True.
timeout_secs – Optional timeout in seconds for the function call.
- register_direct_function(handler: DirectFunction, *, cancel_on_interruption: bool = True, timeout_secs: float | None = None)[source]
Register a direct function handler for LLM function calls, on all LLMs, active or not.
- Parameters:
handler – The direct function to register. Must follow DirectFunction protocol.
cancel_on_interruption – Whether to cancel this function call when an interruption occurs. Defaults to True.
timeout_secs – Optional timeout in seconds for the function call.