106 lines
3.9 KiB
Python
106 lines
3.9 KiB
Python
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
|