Team Tool with User Input
Demonstrates collecting required user input during paused team tool execution.
1"""2User Input Required3=============================45Demonstrates collecting required user input during paused team tool execution.6"""78from kern.agent import Agent9from kern.db.sqlite import SqliteDb10from kern.models.openai import OpenAIResponses11from kern.team import Team12from kern.tools import tool13from kern.utils import pprint14from rich.console import Console15from rich.prompt import Prompt1617# ---------------------------------------------------------------------------18# Setup19# ---------------------------------------------------------------------------20console = Console()2122db = SqliteDb(session_table="team_user_input_sessions", db_file="tmp/team_hitl.db")232425@tool(requires_user_input=True, user_input_fields=["destination", "budget"])26def plan_trip(destination: str = "", budget: str = "") -> str:27 """Plan a trip based on user preferences."""28 return (29 f"Trip planned to {destination} with a budget of {budget}. "30 "Includes flights, hotel, and activities."31 )323334# ---------------------------------------------------------------------------35# Create Members36# ---------------------------------------------------------------------------37travel_agent = Agent(38 name="TravelAgent",39 model=OpenAIResponses(id="gpt-5.2-mini"),40 tools=[plan_trip],41 db=db,42 telemetry=False,43)4445# ---------------------------------------------------------------------------46# Create Team47# ---------------------------------------------------------------------------48team = Team(49 name="TravelTeam",50 model=OpenAIResponses(id="gpt-5.2-mini"),51 members=[travel_agent],52 db=db,53 telemetry=False,54 add_history_to_context=True,55)5657# ---------------------------------------------------------------------------58# Run Team59# ---------------------------------------------------------------------------60if __name__ == "__main__":61 session_id = "team_travel_session"62 run_response = team.run("Help me plan a vacation", session_id=session_id)6364 if run_response.is_paused:65 console.print("[bold yellow]Team is paused - user input needed[/]")6667 for requirement in run_response.active_requirements:68 if requirement.needs_user_input:69 console.print(70 f"Member [bold cyan]{requirement.member_agent_name}[/] needs input for "71 f"[bold blue]{requirement.tool_execution.tool_name}[/]"72 )7374 values = {}75 for field in requirement.user_input_schema or []:76 values[field.name] = Prompt.ask(77 f" {field.name}", default=field.value or ""78 )79 requirement.provide_user_input(values)8081 run_response = team.continue_run(run_response)8283 pprint.pprint_run_response(run_response)Run the Example
1# Clone and setup repo2git clone https://github.com/kern-ai/kern.git3cd kern/cookbook/03_teams/human_in_the_loop45# Create and activate virtual environment6./scripts/demo_setup.sh7source .venvs/demo/bin/activate89python user_input_required.py