Session State Tools
Use `session_state` as a parameter name in your factory to receive the session state dict directly (no need for run_context).
1"""2Session State Tools3===================4Use `session_state` as a parameter name in your factory to receive5the session state dict directly (no need for run_context).67Set `cache_callables=False` so the factory runs fresh every time,8picking up any session_state changes between runs.9"""1011from kern.agent import Agent12from kern.models.openai import OpenAIResponses1314# ---------------------------------------------------------------------------15# Tools16# ---------------------------------------------------------------------------171819def get_greeting(name: str) -> str:20 """Greet someone by name."""21 return f"Hello, {name}!"222324def get_farewell(name: str) -> str:25 """Say goodbye to someone."""26 return f"Goodbye, {name}!"272829def get_tools(session_state: dict):30 """Pick tools based on the 'mode' key in session_state."""31 mode = session_state.get("mode", "greet")32 print(f"--> Factory resolved mode: {mode}")3334 if mode == "greet":35 return [get_greeting]36 else:37 return [get_farewell]383940# ---------------------------------------------------------------------------41# Create the Agent42# ---------------------------------------------------------------------------4344agent = Agent(45 model=OpenAIResponses(id="gpt-5-mini"),46 tools=get_tools,47 cache_callables=False,48 instructions=["Use the available tool to respond."],49)505152# ---------------------------------------------------------------------------53# Run the Agent54# ---------------------------------------------------------------------------5556if __name__ == "__main__":57 print("=== Greet mode ===")58 agent.print_response(59 "Say hi to Alice",60 session_state={"mode": "greet"},61 stream=True,62 )6364 print("\n=== Farewell mode ===")65 agent.print_response(66 "Say bye to Alice",67 session_state={"mode": "farewell"},68 stream=True,69 )Run the Example
1# Clone and setup repo2git clone https://github.com/kern-ai/kern.git3cd kern/cookbook/02_agents/04_tools45# Create and activate virtual environment6./scripts/demo_setup.sh7source .venvs/demo/bin/activate89python 02_session_state_tools.py