diff --git a/src/oss/deepagents/cli/overview.mdx b/src/oss/deepagents/cli/overview.mdx index 7b9f73f714..03d57fe469 100644 --- a/src/oss/deepagents/cli/overview.mdx +++ b/src/oss/deepagents/cli/overview.mdx @@ -616,14 +616,14 @@ For a deeper look at sandbox architecture, integration patterns, and security be Included by default when installing `deepagents-cli`. No extra installation needed. - + ```bash - uv tool install deepagents-cli --with langchain-agentcore-codeinterpreter + uv tool install deepagents-cli --with langchain-daytona ``` - + ```bash - uv tool install deepagents-cli --with langchain-daytona + uv tool install deepagents-cli --with langchain-modal ``` @@ -631,9 +631,9 @@ For a deeper look at sandbox architecture, integration patterns, and security be uv tool install deepagents-cli --with langchain-runloop ``` - + ```bash - uv tool install deepagents-cli --with langchain-modal + uv tool install deepagents-cli --with langchain-agentcore-codeinterpreter ``` @@ -646,17 +646,14 @@ For a deeper look at sandbox architecture, integration patterns, and security be export LANGSMITH_API_KEY="your-key" ``` - + ```bash - export AWS_ACCESS_KEY_ID="your-key" - export AWS_SECRET_ACCESS_KEY="your-secret" - export AWS_SESSION_TOKEN="session-token" - export AWS_REGION="us-west-2" + export DAYTONA_API_KEY="your-key" ``` - + ```bash - export DAYTONA_API_KEY="your-key" + modal setup ``` @@ -664,9 +661,12 @@ For a deeper look at sandbox architecture, integration patterns, and security be export RUNLOOP_API_KEY="your-key" ``` - + ```bash - modal setup + export AWS_ACCESS_KEY_ID="your-key" + export AWS_SECRET_ACCESS_KEY="your-secret" + export AWS_SESSION_TOKEN="session-token" + export AWS_REGION="us-west-2" ``` @@ -679,14 +679,14 @@ For a deeper look at sandbox architecture, integration patterns, and security be deepagents --sandbox langsmith ``` - + ```bash - deepagents --sandbox agentcore + deepagents --sandbox daytona ``` - + ```bash - deepagents --sandbox daytona + deepagents --sandbox modal ``` @@ -694,9 +694,9 @@ For a deeper look at sandbox architecture, integration patterns, and security be deepagents --sandbox runloop ``` - + ```bash - deepagents --sandbox modal + deepagents --sandbox agentcore ``` diff --git a/src/oss/deepagents/data-analysis.mdx b/src/oss/deepagents/data-analysis.mdx index b17aba6e7e..9813d7aeb5 100644 --- a/src/oss/deepagents/data-analysis.mdx +++ b/src/oss/deepagents/data-analysis.mdx @@ -83,27 +83,6 @@ Deep Agents use [backends](/oss/deepagents/backends) to execute code in sandboxe See [available providers](/oss/deepagents/sandboxes#available-providers) for setup details. - - - - ```bash pip - pip install langchain-agentcore-codeinterpreter - ``` - ```bash uv - uv add langchain-agentcore-codeinterpreter - ``` - - - ```python - from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter - from langchain_agentcore_codeinterpreter import AgentCoreSandbox - - interpreter = CodeInterpreter(region="us-west-2") - interpreter.start() - backend = AgentCoreSandbox(interpreter=interpreter) - ``` - - @@ -170,6 +149,27 @@ backend = RunloopSandbox(devbox=devbox) ``` + + + + ```bash pip + pip install langchain-agentcore-codeinterpreter + ``` + ```bash uv + uv add langchain-agentcore-codeinterpreter + ``` + + + ```python + from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter + from langchain_agentcore_codeinterpreter import AgentCoreSandbox + + interpreter = CodeInterpreter(region="us-west-2") + interpreter.start() + backend = AgentCoreSandbox(interpreter=interpreter) + ``` + + This backend provides unrestricted filesystem and shell access. Use only in controlled environments for development and testing. See the [security considerations](/oss/deepagents/backends#localshellbackend-local-shell) for more details. diff --git a/src/oss/deepagents/sandboxes.mdx b/src/oss/deepagents/sandboxes.mdx index 545be39125..bcfb0e7d6e 100644 --- a/src/oss/deepagents/sandboxes.mdx +++ b/src/oss/deepagents/sandboxes.mdx @@ -146,21 +146,19 @@ await sandbox.close(); :::python - + ```python - from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter - - from langchain_agentcore_codeinterpreter import AgentCoreSandbox + from daytona import Daytona - interpreter = CodeInterpreter(region="us-west-2") - interpreter.start() + from langchain_daytona import DaytonaSandbox - backend = AgentCoreSandbox(interpreter=interpreter) + sandbox = Daytona().create() + backend = DaytonaSandbox(sandbox=sandbox) result = backend.execute("echo hello") # ... use sandbox - interpreter.stop() + sandbox.stop() ``` @@ -198,19 +196,21 @@ await sandbox.close(); ``` - + ```python - from daytona import Daytona + from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter - from langchain_daytona import DaytonaSandbox + from langchain_agentcore_codeinterpreter import AgentCoreSandbox - sandbox = Daytona().create() - backend = DaytonaSandbox(sandbox=sandbox) + interpreter = CodeInterpreter(region="us-west-2") + interpreter.start() + + backend = AgentCoreSandbox(interpreter=interpreter) result = backend.execute("echo hello") # ... use sandbox - sandbox.stop() + interpreter.stop() ``` @@ -544,32 +544,27 @@ You can also call the backend `execute()` method directly in your application co :::python - + ```bash pip - pip install langchain-agentcore-codeinterpreter + pip install langchain-daytona ``` ```bash uv - uv add langchain-agentcore-codeinterpreter + uv add langchain-daytona ``` ```python - from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter - - from langchain_agentcore_codeinterpreter import AgentCoreSandbox + from daytona import Daytona - interpreter = CodeInterpreter(region="us-west-2") - interpreter.start() + from langchain_daytona import DaytonaSandbox - backend = AgentCoreSandbox(interpreter=interpreter) + sandbox = Daytona().create() + backend = DaytonaSandbox(sandbox=sandbox) - try: - result = backend.execute("python3 --version") - print(result.output) - finally: - interpreter.stop() + result = backend.execute("python --version") + print(result.output) ``` @@ -615,27 +610,32 @@ You can also call the backend `execute()` method directly in your application co devbox.shutdown() ``` - + ```bash pip - pip install langchain-daytona + pip install langchain-agentcore-codeinterpreter ``` ```bash uv - uv add langchain-daytona + uv add langchain-agentcore-codeinterpreter ``` ```python - from daytona import Daytona + from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter - from langchain_daytona import DaytonaSandbox + from langchain_agentcore_codeinterpreter import AgentCoreSandbox - sandbox = Daytona().create() - backend = DaytonaSandbox(sandbox=sandbox) + interpreter = CodeInterpreter(region="us-west-2") + interpreter.start() - result = backend.execute("python --version") - print(result.output) + backend = AgentCoreSandbox(interpreter=interpreter) + + try: + result = backend.execute("python3 --version") + print(result.output) + finally: + interpreter.stop() ``` @@ -761,31 +761,29 @@ The deepagents sandbox backends support file transfer APIs for moving files betw Use `upload_files()` to populate the sandbox before the agent runs. Paths must be absolute and contents are `bytes`: - + ```bash pip - pip install langchain-agentcore-codeinterpreter + pip install langchain-daytona ``` ```bash uv - uv add langchain-agentcore-codeinterpreter + uv add langchain-daytona ``` ```python - from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter - - from langchain_agentcore_codeinterpreter import AgentCoreSandbox + from daytona import Daytona - interpreter = CodeInterpreter(region="us-west-2") - interpreter.start() + from langchain_daytona import DaytonaSandbox - backend = AgentCoreSandbox(interpreter=interpreter) + sandbox = Daytona().create() + backend = DaytonaSandbox(sandbox=sandbox) backend.upload_files( [ - ("hello.py", b"print('Hello')\n"), - ("data.csv", b"name,value\na,1\nb,2\n"), + ("/src/index.py", b"print('Hello')\n"), + ("/pyproject.toml", b"[project]\nname = 'my-app'\n"), ] ) ``` @@ -838,29 +836,31 @@ Use `upload_files()` to populate the sandbox before the agent runs. Paths must b ) ``` - + ```bash pip - pip install langchain-daytona + pip install langchain-agentcore-codeinterpreter ``` ```bash uv - uv add langchain-daytona + uv add langchain-agentcore-codeinterpreter ``` ```python - from daytona import Daytona + from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter - from langchain_daytona import DaytonaSandbox + from langchain_agentcore_codeinterpreter import AgentCoreSandbox - sandbox = Daytona().create() - backend = DaytonaSandbox(sandbox=sandbox) + interpreter = CodeInterpreter(region="us-west-2") + interpreter.start() + + backend = AgentCoreSandbox(interpreter=interpreter) backend.upload_files( [ - ("/src/index.py", b"print('Hello')\n"), - ("/pyproject.toml", b"[project]\nname = 'my-app'\n"), + ("hello.py", b"print('Hello')\n"), + ("data.csv", b"name,value\na,1\nb,2\n"), ] ) ``` @@ -891,35 +891,31 @@ Use `upload_files()` to populate the sandbox before the agent runs. Paths must b Use `download_files()` to retrieve files from the sandbox after the agent finishes: - + ```bash pip - pip install langchain-agentcore-codeinterpreter + pip install langchain-daytona ``` ```bash uv - uv add langchain-agentcore-codeinterpreter + uv add langchain-daytona ``` ```python - from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter - - from langchain_agentcore_codeinterpreter import AgentCoreSandbox + from daytona import Daytona - interpreter = CodeInterpreter(region="us-west-2") - interpreter.start() + from langchain_daytona import DaytonaSandbox - backend = AgentCoreSandbox(interpreter=interpreter) + sandbox = Daytona().create() + backend = DaytonaSandbox(sandbox=sandbox) - results = backend.download_files(["hello.py"]) + results = backend.download_files(["/src/index.py", "/output.txt"]) for result in results: if result.content is not None: print(f"{result.path}: {result.content.decode()}") else: print(f"Failed to download {result.path}: {result.error}") - - interpreter.stop() ``` @@ -970,31 +966,35 @@ Use `download_files()` to retrieve files from the sandbox after the agent finish print(f"Failed to download {result.path}: {result.error}") ``` - + ```bash pip - pip install langchain-daytona + pip install langchain-agentcore-codeinterpreter ``` ```bash uv - uv add langchain-daytona + uv add langchain-agentcore-codeinterpreter ``` ```python - from daytona import Daytona + from bedrock_agentcore.tools.code_interpreter_client import CodeInterpreter - from langchain_daytona import DaytonaSandbox + from langchain_agentcore_codeinterpreter import AgentCoreSandbox - sandbox = Daytona().create() - backend = DaytonaSandbox(sandbox=sandbox) + interpreter = CodeInterpreter(region="us-west-2") + interpreter.start() - results = backend.download_files(["/src/index.py", "/output.txt"]) + backend = AgentCoreSandbox(interpreter=interpreter) + + results = backend.download_files(["hello.py"]) for result in results: if result.content is not None: print(f"{result.path}: {result.content.decode()}") else: print(f"Failed to download {result.path}: {result.error}") + + interpreter.stop() ``` diff --git a/src/oss/python/integrations/sandboxes/index.mdx b/src/oss/python/integrations/sandboxes/index.mdx index d996a6cd6b..d5ed93c782 100644 --- a/src/oss/python/integrations/sandboxes/index.mdx +++ b/src/oss/python/integrations/sandboxes/index.mdx @@ -7,10 +7,10 @@ description: "Integrate with sandbox providers using LangChain Python." Sandboxes provide isolated execution environments for running agent-generated code safely. Learn more about [sandboxes](/oss/deepagents/sandboxes).