mirror of
https://github.com/All-Hands-AI/OpenHands.git
synced 2026-01-09 14:57:59 -05:00
Modify experiment manager defaults for nested runtimes (#10269)
Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
3
openhands/server/constants.py
Normal file
3
openhands/server/constants.py
Normal file
@@ -0,0 +1,3 @@
|
||||
"""Server constants."""
|
||||
|
||||
ROOM_KEY = 'room:{sid}'
|
||||
@@ -25,6 +25,7 @@ from openhands.llm.llm import LLM
|
||||
from openhands.runtime import get_runtime_cls
|
||||
from openhands.runtime.impl.docker.docker_runtime import DockerRuntime
|
||||
from openhands.server.config.server_config import ServerConfig
|
||||
from openhands.server.constants import ROOM_KEY
|
||||
from openhands.server.conversation_manager.conversation_manager import (
|
||||
ConversationManager,
|
||||
)
|
||||
@@ -32,7 +33,7 @@ from openhands.server.data_models.agent_loop_info import AgentLoopInfo
|
||||
from openhands.server.monitoring import MonitoringListener
|
||||
from openhands.server.session.conversation import ServerConversation
|
||||
from openhands.server.session.conversation_init_data import ConversationInitData
|
||||
from openhands.server.session.session import ROOM_KEY, Session
|
||||
from openhands.server.session.session import Session
|
||||
from openhands.storage.conversation.conversation_store import ConversationStore
|
||||
from openhands.storage.data_models.conversation_metadata import ConversationMetadata
|
||||
from openhands.storage.data_models.conversation_status import ConversationStatus
|
||||
|
||||
@@ -14,11 +14,12 @@ from openhands.events.action import MessageAction
|
||||
from openhands.events.stream import EventStreamSubscriber, session_exists
|
||||
from openhands.runtime import get_runtime_cls
|
||||
from openhands.server.config.server_config import ServerConfig
|
||||
from openhands.server.constants import ROOM_KEY
|
||||
from openhands.server.data_models.agent_loop_info import AgentLoopInfo
|
||||
from openhands.server.monitoring import MonitoringListener
|
||||
from openhands.server.session.agent_session import WAIT_TIME_BEFORE_CLOSE, AgentSession
|
||||
from openhands.server.session.conversation import ServerConversation
|
||||
from openhands.server.session.session import ROOM_KEY, Session
|
||||
from openhands.server.session.session import Session
|
||||
from openhands.storage.conversation.conversation_store import ConversationStore
|
||||
from openhands.storage.data_models.conversation_metadata import ConversationMetadata
|
||||
from openhands.storage.data_models.conversation_status import ConversationStatus
|
||||
|
||||
@@ -22,6 +22,7 @@ from openhands.events.observation import (
|
||||
AgentStateChangedObservation,
|
||||
NullObservation,
|
||||
)
|
||||
from openhands.experiments.experiment_manager import ExperimentConfig
|
||||
from openhands.integrations.provider import (
|
||||
PROVIDER_TOKEN_TYPE,
|
||||
ProviderHandler,
|
||||
@@ -71,6 +72,7 @@ from openhands.storage.data_models.conversation_metadata import (
|
||||
from openhands.storage.data_models.conversation_status import ConversationStatus
|
||||
from openhands.storage.data_models.settings import Settings
|
||||
from openhands.storage.data_models.user_secrets import UserSecrets
|
||||
from openhands.storage.locations import get_experiment_config_filename
|
||||
from openhands.storage.settings.settings_store import SettingsStore
|
||||
from openhands.utils.async_utils import wait_all
|
||||
from openhands.utils.conversation_summary import get_default_conversation_title
|
||||
@@ -707,3 +709,28 @@ async def update_conversation(
|
||||
},
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
)
|
||||
|
||||
|
||||
@app.post('/conversations/{conversation_id}/exp-config')
|
||||
def add_experiment_config_for_conversation(
|
||||
conversation_id: str, exp_config: ExperimentConfig
|
||||
) -> bool:
|
||||
exp_config_filepath = get_experiment_config_filename(conversation_id)
|
||||
exists = False
|
||||
try:
|
||||
file_store.read(exp_config_filepath)
|
||||
exists = True
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
|
||||
# Don't modify again if it already exists
|
||||
if exists:
|
||||
return False
|
||||
|
||||
try:
|
||||
file_store.write(exp_config_filepath, exp_config.model_dump_json())
|
||||
except Exception as e:
|
||||
logger.info(f'Failed to write experiment config for {conversation_id}: {e}')
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
@@ -28,16 +28,14 @@ from openhands.events.observation.agent import RecallObservation
|
||||
from openhands.events.observation.error import ErrorObservation
|
||||
from openhands.events.serialization import event_from_dict, event_to_dict
|
||||
from openhands.events.stream import EventStreamSubscriber
|
||||
from openhands.experiments.experiment_manager import ExperimentManagerImpl
|
||||
from openhands.llm.llm import LLM
|
||||
from openhands.runtime.runtime_status import RuntimeStatus
|
||||
from openhands.server.constants import ROOM_KEY
|
||||
from openhands.server.session.agent_session import AgentSession
|
||||
from openhands.server.session.conversation_init_data import ConversationInitData
|
||||
from openhands.storage.data_models.settings import Settings
|
||||
from openhands.storage.files import FileStore
|
||||
|
||||
ROOM_KEY = 'room:{sid}'
|
||||
|
||||
|
||||
class Session:
|
||||
sid: str
|
||||
@@ -75,6 +73,9 @@ class Session:
|
||||
)
|
||||
# Copying this means that when we update variables they are not applied to the shared global configuration!
|
||||
self.config = deepcopy(config)
|
||||
# Lazy import to avoid circular dependency
|
||||
from openhands.experiments.experiment_manager import ExperimentManagerImpl
|
||||
|
||||
self.config = ExperimentManagerImpl.run_config_variant_test(
|
||||
user_id, sid, self.config
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user