mirror of
https://github.com/langchain-ai/docs.git
synced 2026-08-27 02:41:59 -04:00
275 lines
7.8 KiB
Plaintext
275 lines
7.8 KiB
Plaintext
<CodeGroup>
|
|
```python Google
|
|
from langchain.tools import tool
|
|
from deepagents import create_deep_agent
|
|
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
|
|
@tool
|
|
def remove_file(path: str) -> str:
|
|
"""Delete a file from the filesystem."""
|
|
return f"Deleted {path}"
|
|
|
|
|
|
@tool
|
|
def fetch_file(path: str) -> str:
|
|
"""Read a file from the filesystem."""
|
|
return f"Contents of {path}"
|
|
|
|
|
|
@tool
|
|
def notify_email(to: str, subject: str, body: str) -> str:
|
|
"""Send an email."""
|
|
return f"Sent email to {to}"
|
|
|
|
|
|
# Checkpointer is REQUIRED for human-in-the-loop
|
|
checkpointer = MemorySaver()
|
|
|
|
agent = create_deep_agent(
|
|
model="google_genai:gemini-3.6-flash",
|
|
tools=[remove_file, fetch_file, notify_email],
|
|
interrupt_on={
|
|
"remove_file": True, # Default: approve, edit, reject, respond
|
|
"fetch_file": False, # No interrupts needed
|
|
"notify_email": {"allowed_decisions": ["approve", "reject"]}, # No editing
|
|
},
|
|
checkpointer=checkpointer, # Required!
|
|
)
|
|
```
|
|
|
|
```python OpenAI
|
|
from langchain.tools import tool
|
|
from deepagents import create_deep_agent
|
|
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
|
|
@tool
|
|
def remove_file(path: str) -> str:
|
|
"""Delete a file from the filesystem."""
|
|
return f"Deleted {path}"
|
|
|
|
|
|
@tool
|
|
def fetch_file(path: str) -> str:
|
|
"""Read a file from the filesystem."""
|
|
return f"Contents of {path}"
|
|
|
|
|
|
@tool
|
|
def notify_email(to: str, subject: str, body: str) -> str:
|
|
"""Send an email."""
|
|
return f"Sent email to {to}"
|
|
|
|
|
|
# Checkpointer is REQUIRED for human-in-the-loop
|
|
checkpointer = MemorySaver()
|
|
|
|
agent = create_deep_agent(
|
|
model="openai:gpt-5.5",
|
|
tools=[remove_file, fetch_file, notify_email],
|
|
interrupt_on={
|
|
"remove_file": True, # Default: approve, edit, reject, respond
|
|
"fetch_file": False, # No interrupts needed
|
|
"notify_email": {"allowed_decisions": ["approve", "reject"]}, # No editing
|
|
},
|
|
checkpointer=checkpointer, # Required!
|
|
)
|
|
```
|
|
|
|
```python Anthropic
|
|
from langchain.tools import tool
|
|
from deepagents import create_deep_agent
|
|
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
|
|
@tool
|
|
def remove_file(path: str) -> str:
|
|
"""Delete a file from the filesystem."""
|
|
return f"Deleted {path}"
|
|
|
|
|
|
@tool
|
|
def fetch_file(path: str) -> str:
|
|
"""Read a file from the filesystem."""
|
|
return f"Contents of {path}"
|
|
|
|
|
|
@tool
|
|
def notify_email(to: str, subject: str, body: str) -> str:
|
|
"""Send an email."""
|
|
return f"Sent email to {to}"
|
|
|
|
|
|
# Checkpointer is REQUIRED for human-in-the-loop
|
|
checkpointer = MemorySaver()
|
|
|
|
agent = create_deep_agent(
|
|
model="anthropic:claude-sonnet-4-6",
|
|
tools=[remove_file, fetch_file, notify_email],
|
|
interrupt_on={
|
|
"remove_file": True, # Default: approve, edit, reject, respond
|
|
"fetch_file": False, # No interrupts needed
|
|
"notify_email": {"allowed_decisions": ["approve", "reject"]}, # No editing
|
|
},
|
|
checkpointer=checkpointer, # Required!
|
|
)
|
|
```
|
|
|
|
```python OpenRouter
|
|
from langchain.tools import tool
|
|
from deepagents import create_deep_agent
|
|
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
|
|
@tool
|
|
def remove_file(path: str) -> str:
|
|
"""Delete a file from the filesystem."""
|
|
return f"Deleted {path}"
|
|
|
|
|
|
@tool
|
|
def fetch_file(path: str) -> str:
|
|
"""Read a file from the filesystem."""
|
|
return f"Contents of {path}"
|
|
|
|
|
|
@tool
|
|
def notify_email(to: str, subject: str, body: str) -> str:
|
|
"""Send an email."""
|
|
return f"Sent email to {to}"
|
|
|
|
|
|
# Checkpointer is REQUIRED for human-in-the-loop
|
|
checkpointer = MemorySaver()
|
|
|
|
agent = create_deep_agent(
|
|
model="openrouter:z-ai/glm-5.2",
|
|
tools=[remove_file, fetch_file, notify_email],
|
|
interrupt_on={
|
|
"remove_file": True, # Default: approve, edit, reject, respond
|
|
"fetch_file": False, # No interrupts needed
|
|
"notify_email": {"allowed_decisions": ["approve", "reject"]}, # No editing
|
|
},
|
|
checkpointer=checkpointer, # Required!
|
|
)
|
|
```
|
|
|
|
```python Fireworks
|
|
from langchain.tools import tool
|
|
from deepagents import create_deep_agent
|
|
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
|
|
@tool
|
|
def remove_file(path: str) -> str:
|
|
"""Delete a file from the filesystem."""
|
|
return f"Deleted {path}"
|
|
|
|
|
|
@tool
|
|
def fetch_file(path: str) -> str:
|
|
"""Read a file from the filesystem."""
|
|
return f"Contents of {path}"
|
|
|
|
|
|
@tool
|
|
def notify_email(to: str, subject: str, body: str) -> str:
|
|
"""Send an email."""
|
|
return f"Sent email to {to}"
|
|
|
|
|
|
# Checkpointer is REQUIRED for human-in-the-loop
|
|
checkpointer = MemorySaver()
|
|
|
|
agent = create_deep_agent(
|
|
model="fireworks:accounts/fireworks/models/glm-5p2",
|
|
tools=[remove_file, fetch_file, notify_email],
|
|
interrupt_on={
|
|
"remove_file": True, # Default: approve, edit, reject, respond
|
|
"fetch_file": False, # No interrupts needed
|
|
"notify_email": {"allowed_decisions": ["approve", "reject"]}, # No editing
|
|
},
|
|
checkpointer=checkpointer, # Required!
|
|
)
|
|
```
|
|
|
|
```python Baseten
|
|
from langchain.tools import tool
|
|
from deepagents import create_deep_agent
|
|
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
|
|
@tool
|
|
def remove_file(path: str) -> str:
|
|
"""Delete a file from the filesystem."""
|
|
return f"Deleted {path}"
|
|
|
|
|
|
@tool
|
|
def fetch_file(path: str) -> str:
|
|
"""Read a file from the filesystem."""
|
|
return f"Contents of {path}"
|
|
|
|
|
|
@tool
|
|
def notify_email(to: str, subject: str, body: str) -> str:
|
|
"""Send an email."""
|
|
return f"Sent email to {to}"
|
|
|
|
|
|
# Checkpointer is REQUIRED for human-in-the-loop
|
|
checkpointer = MemorySaver()
|
|
|
|
agent = create_deep_agent(
|
|
model="baseten:zai-org/GLM-5.2",
|
|
tools=[remove_file, fetch_file, notify_email],
|
|
interrupt_on={
|
|
"remove_file": True, # Default: approve, edit, reject, respond
|
|
"fetch_file": False, # No interrupts needed
|
|
"notify_email": {"allowed_decisions": ["approve", "reject"]}, # No editing
|
|
},
|
|
checkpointer=checkpointer, # Required!
|
|
)
|
|
```
|
|
|
|
```python Ollama
|
|
from langchain.tools import tool
|
|
from deepagents import create_deep_agent
|
|
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
|
|
@tool
|
|
def remove_file(path: str) -> str:
|
|
"""Delete a file from the filesystem."""
|
|
return f"Deleted {path}"
|
|
|
|
|
|
@tool
|
|
def fetch_file(path: str) -> str:
|
|
"""Read a file from the filesystem."""
|
|
return f"Contents of {path}"
|
|
|
|
|
|
@tool
|
|
def notify_email(to: str, subject: str, body: str) -> str:
|
|
"""Send an email."""
|
|
return f"Sent email to {to}"
|
|
|
|
|
|
# Checkpointer is REQUIRED for human-in-the-loop
|
|
checkpointer = MemorySaver()
|
|
|
|
agent = create_deep_agent(
|
|
model="ollama:north-mini-code-1.0",
|
|
tools=[remove_file, fetch_file, notify_email],
|
|
interrupt_on={
|
|
"remove_file": True, # Default: approve, edit, reject, respond
|
|
"fetch_file": False, # No interrupts needed
|
|
"notify_email": {"allowed_decisions": ["approve", "reject"]}, # No editing
|
|
},
|
|
checkpointer=checkpointer, # Required!
|
|
)
|
|
```
|
|
</CodeGroup>
|