From 0d50c62283847c60fc2d6b8b74b173237a2594ae Mon Sep 17 00:00:00 2001 From: bracesproul Date: Tue, 14 Jan 2025 10:39:57 -0800 Subject: [PATCH] cr --- .../langgraph/langgraph/prebuilt/interrupt.py | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/libs/langgraph/langgraph/prebuilt/interrupt.py b/libs/langgraph/langgraph/prebuilt/interrupt.py index d8bf7e79d..2ab3ee0d1 100644 --- a/libs/langgraph/langgraph/prebuilt/interrupt.py +++ b/libs/langgraph/langgraph/prebuilt/interrupt.py @@ -13,10 +13,10 @@ class HumanInterruptConfig(TypedDict): This controls the available interaction options when the graph is paused for human input. Attributes: - allow_ignore (bool): Whether the human can choose to ignore/skip the current step - allow_respond (bool): Whether the human can provide a text response/feedback - allow_edit (bool): Whether the human can edit the provided content/state - allow_accept (bool): Whether the human can accept/approve the current state + allow_ignore: Whether the human can choose to ignore/skip the current step + allow_respond: Whether the human can provide a text response/feedback + allow_edit: Whether the human can edit the provided content/state + allow_accept: Whether the human can accept/approve the current state """ allow_ignore: bool @@ -31,8 +31,8 @@ class ActionRequest(TypedDict): Contains the action type and any associated arguments needed for the action. Attributes: - action (str): The type or name of action being requested (e.g., "Approve XYZ action") - args (dict): Key-value pairs of arguments needed for the action + action: The type or name of action being requested (e.g., "Approve XYZ action") + args: Key-value pairs of arguments needed for the action """ action: str @@ -45,9 +45,29 @@ class HumanInterrupt(TypedDict): This is passed to the `interrupt` function when execution is paused for human input. Attributes: - action_request (ActionRequest): The specific action being requested from the human - config (HumanInterruptConfig): Configuration defining what actions are allowed - description (Optional[str]): Optional detailed description of what input is needed + action_request: The specific action being requested from the human + config: Configuration defining what actions are allowed + description: Optional detailed description of what input is needed + + Example: + ```python + # Extract a tool call from the state and create an interrupt request + request = HumanInterrupt( + action_request=ActionRequest( + action="run_command", # The action being requested + args={"command": "ls", "args": ["-l"]} # Arguments for the action + ), + config=HumanInterruptConfig( + allow_ignore=True, # Allow skipping this step + allow_respond=True, # Allow text feedback + allow_edit=False, # Don't allow editing + allow_accept=True # Allow direct acceptance + ), + description="Please review the command before execution" + ) + # Send the interrupt request and get the response + response = interrupt([request])[0] + ``` """ action_request: ActionRequest @@ -59,12 +79,12 @@ class HumanResponse(TypedDict): """The response provided by a human to an interrupt, which is returned when graph execution resumes. Attributes: - type (Literal['accept', 'ignore', 'response', 'edit']): The type of response: + type: The type of response: - "accept": Approves the current state without changes - "ignore": Skips/ignores the current step - "response": Provides text feedback or instructions - "edit": Modifies the current state/content - args (Union[None, str, ActionRequest]): The response payload: + arg: The response payload: - None: For ignore/accept actions - str: For text responses - ActionRequest: For edit actions with updated content