fix: Changing e2b template id as an env var reflects immediately (#2250)

This commit is contained in:
Matthew Zhou
2024-12-13 16:42:49 -08:00
committed by GitHub
parent 63a63e5183
commit 6776194ddd
2 changed files with 15 additions and 4 deletions

View File

@@ -3,10 +3,11 @@ import json
from enum import Enum
from typing import Any, Dict, List, Optional, Union
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, model_validator
from letta.schemas.agent import AgentState
from letta.schemas.letta_base import LettaBase, OrmMetadataBase
from letta.settings import tool_settings
# Sandbox Config
@@ -45,6 +46,16 @@ class E2BSandboxConfig(BaseModel):
def type(self) -> "SandboxType":
return SandboxType.E2B
@model_validator(mode="before")
@classmethod
def set_default_template(cls, data: dict):
"""
Assign a default template value if the template field is not provided.
"""
if data.get("template") is None:
data["template"] = tool_settings.e2b_sandbox_template_id
return data
class SandboxConfigBase(OrmMetadataBase):
__id_prefix__ = "sandbox"

View File

@@ -5,7 +5,7 @@ from letta.log import get_logger
from letta.orm.errors import NoResultFound
from letta.orm.sandbox_config import SandboxConfig as SandboxConfigModel
from letta.orm.sandbox_config import SandboxEnvironmentVariable as SandboxEnvVarModel
from letta.schemas.sandbox_config import E2BSandboxConfig, LocalSandboxConfig
from letta.schemas.sandbox_config import LocalSandboxConfig
from letta.schemas.sandbox_config import SandboxConfig as PydanticSandboxConfig
from letta.schemas.sandbox_config import SandboxConfigCreate, SandboxConfigUpdate
from letta.schemas.sandbox_config import SandboxEnvironmentVariable as PydanticEnvVar
@@ -27,7 +27,6 @@ class SandboxConfigManager:
from letta.server.server import db_context
self.session_maker = db_context
self.e2b_template_id = settings.e2b_sandbox_template_id
@enforce_types
def get_or_create_default_sandbox_config(self, sandbox_type: SandboxType, actor: PydanticUser) -> PydanticSandboxConfig:
@@ -37,8 +36,9 @@ class SandboxConfigManager:
# TODO: Add more sandbox types later
if sandbox_type == SandboxType.E2B:
default_config = E2BSandboxConfig(template=self.e2b_template_id).model_dump(exclude_none=True)
default_config = {} # Empty
else:
# TODO: May want to move this to environment variables v.s. persisting in database
default_local_sandbox_path = str(Path(__file__).parent / "tool_sandbox_env")
default_config = LocalSandboxConfig(sandbox_dir=default_local_sandbox_path).model_dump(exclude_none=True)