| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- from typing import Literal
- from langgraph.warnings import LangGraphDeprecatedSinceV10
- from typing_extensions import TypedDict, deprecated
- @deprecated(
- "HumanInterruptConfig has been moved to `langchain.agents.interrupt`. Please update your import to `from langchain.agents.interrupt import HumanInterruptConfig`.",
- category=LangGraphDeprecatedSinceV10,
- )
- class HumanInterruptConfig(TypedDict):
- """Configuration that defines what actions are allowed for a human interrupt.
- This controls the available interaction options when the graph is paused for human input.
- Attributes:
- 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
- allow_respond: bool
- allow_edit: bool
- allow_accept: bool
- @deprecated(
- "ActionRequest has been moved to `langchain.agents.interrupt`. Please update your import to `from langchain.agents.interrupt import ActionRequest`.",
- category=LangGraphDeprecatedSinceV10,
- )
- class ActionRequest(TypedDict):
- """Represents a request for human action within the graph execution.
- Contains the action type and any associated arguments needed for the action.
- Attributes:
- 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
- args: dict
- @deprecated(
- "HumanInterrupt has been moved to `langchain.agents.interrupt`. Please update your import to `from langchain.agents.interrupt import HumanInterrupt`.",
- category=LangGraphDeprecatedSinceV10,
- )
- class HumanInterrupt(TypedDict):
- """Represents an interrupt triggered by the graph that requires human intervention.
- This is passed to the `interrupt` function when execution is paused for human input.
- Attributes:
- 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
- config: HumanInterruptConfig
- description: str | None
- class HumanResponse(TypedDict):
- """The response provided by a human to an interrupt, which is returned when graph execution resumes.
- Attributes:
- 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: The response payload:
- - `None`: For ignore/accept actions
- - `str`: For text responses
- - `ActionRequest`: For edit actions with updated content
- """
- type: Literal["accept", "ignore", "response", "edit"]
- args: None | str | ActionRequest
|