feat&fix: update environment configuration for Docker compatibility and enhance result path handling

This commit is contained in:
adlsdztony
2025-06-06 02:53:20 +00:00
parent 71e0f1dfdd
commit 2ad48f04d7
3 changed files with 33 additions and 17 deletions

View File

@@ -2,10 +2,13 @@
# Do not write any secret keys or sensitive information here. # Do not write any secret keys or sensitive information here.
# Monitor configuration # Monitor configuration
TASK_CONFIG_PATH=../evaluation_examples/test_small.json TASK_CONFIG_PATH=../evaluation_examples/test_all.json
EXAMPLES_BASE_PATH=../evaluation_examples/examples EXAMPLES_BASE_PATH=../evaluation_examples/examples
RESULTS_BASE_PATH=../results_operator_aws/pyautogui/screenshot/computer-use-preview RESULTS_BASE_PATH=../results_operator_aws
MAX_STEPS=50 ACTION_SPACE=pyautogui
OBSERVATION_TYPE=screenshot
MODEL_NAME=computer-use-preview
MAX_STEPS=150
FLASK_PORT=80 FLASK_PORT=80
FLASK_HOST=0.0.0.0 FLASK_HOST=0.0.0.0
FLASK_DEBUG=false FLASK_DEBUG=true

View File

@@ -1,5 +1,3 @@
version: '3'
services: services:
monitor: monitor:
build: build:
@@ -9,10 +7,11 @@ services:
- "${FLASK_PORT:-8080}:8080" - "${FLASK_PORT:-8080}:8080"
volumes: volumes:
- .:/app/monitor - .:/app/monitor
- ../evaluation_examples:/app/evaluation_examples - ${TASK_CONFIG_PATH:-../evaluation_examples/test_all.json}:/app/evaluation_examples/test.json
- ../results_operator_aws:/app/results_operator_aws - ${EXAMPLES_BASE_PATH:-../evaluation_examples/examples}:/app/evaluation_examples/examples
- ${RESULTS_BASE_PATH:-../results_operator_aws}:/app/results
env_file: env_file:
- .env - .env
environment: environment:
- FLASK_ENV=production - MONITOR_IN_DOCKER=true
restart: unless-stopped restart: unless-stopped

View File

@@ -17,12 +17,26 @@ TASK_STATUS_CACHE = {}
app = Flask(__name__) app = Flask(__name__)
# Load configuration from environment variables MONITOR_IN_DOCKER = os.getenv("MONITOR_IN_DOCKER", "false").lower() == "true"
TASK_CONFIG_PATH = os.getenv("TASK_CONFIG_PATH", "../evaluation_examples/test_small.json")
EXAMPLES_BASE_PATH = os.getenv("EXAMPLES_BASE_PATH", "../evaluation_examples/examples") if MONITOR_IN_DOCKER:
RESULTS_BASE_PATH = os.getenv("RESULTS_BASE_PATH", "../results_operator_aws/pyautogui/screenshot/computer-use-preview") # If running in Docker, use default paths
TASK_CONFIG_PATH = "/app/evaluation_examples/test.json"
EXAMPLES_BASE_PATH = "/app/evaluation_examples/examples"
RESULTS_BASE_PATH = "/app/results"
else:
# Load configuration from environment variables
TASK_CONFIG_PATH = os.getenv("TASK_CONFIG_PATH", "../evaluation_examples/test_small.json")
EXAMPLES_BASE_PATH = os.getenv("EXAMPLES_BASE_PATH", "../evaluation_examples/examples")
RESULTS_BASE_PATH = os.getenv("RESULTS_BASE_PATH", "../results")
ACTION_SPACE=os.getenv("ACTION_SPACE", "pyautogui")
OBSERVATION_TYPE=os.getenv("OBSERVATION_TYPE", "screenshot")
MODEL_NAME=os.getenv("MODEL_NAME", "computer-use-preview")
MAX_STEPS = int(os.getenv("MAX_STEPS", "50")) MAX_STEPS = int(os.getenv("MAX_STEPS", "50"))
RESULTS_PATH = os.path.join(RESULTS_BASE_PATH, ACTION_SPACE, OBSERVATION_TYPE, MODEL_NAME)
def load_task_list(): def load_task_list():
with open(TASK_CONFIG_PATH, 'r') as f: with open(TASK_CONFIG_PATH, 'r') as f:
return json.load(f) return json.load(f)
@@ -35,7 +49,7 @@ def get_task_info(task_type, task_id):
return None return None
def get_task_status(task_type, task_id): def get_task_status(task_type, task_id):
result_dir = os.path.join(RESULTS_BASE_PATH, task_type, task_id) result_dir = os.path.join(RESULTS_PATH, task_type, task_id)
if not os.path.exists(result_dir): if not os.path.exists(result_dir):
return { return {
@@ -167,7 +181,7 @@ def get_task_status_brief(task_type, task_id):
if cache_key in TASK_STATUS_CACHE: if cache_key in TASK_STATUS_CACHE:
return TASK_STATUS_CACHE[cache_key] return TASK_STATUS_CACHE[cache_key]
result_dir = os.path.join(RESULTS_BASE_PATH, task_type, task_id) result_dir = os.path.join(RESULTS_PATH, task_type, task_id)
if not os.path.exists(result_dir): if not os.path.exists(result_dir):
return { return {
@@ -367,7 +381,7 @@ def api_tasks_brief():
@app.route('/task/<task_type>/<task_id>/screenshot/<path:filename>') @app.route('/task/<task_type>/<task_id>/screenshot/<path:filename>')
def task_screenshot(task_type, task_id, filename): def task_screenshot(task_type, task_id, filename):
"""Get task screenshot""" """Get task screenshot"""
screenshot_path = os.path.join(RESULTS_BASE_PATH, task_type, task_id, filename) screenshot_path = os.path.join(RESULTS_PATH, task_type, task_id, filename)
if os.path.exists(screenshot_path): if os.path.exists(screenshot_path):
return send_file(screenshot_path, mimetype='image/png') return send_file(screenshot_path, mimetype='image/png')
else: else:
@@ -376,7 +390,7 @@ def task_screenshot(task_type, task_id, filename):
@app.route('/task/<task_type>/<task_id>/recording') @app.route('/task/<task_type>/<task_id>/recording')
def task_recording(task_type, task_id): def task_recording(task_type, task_id):
"""Get task recording video""" """Get task recording video"""
recording_path = os.path.join(RESULTS_BASE_PATH, task_type, task_id, "recording.mp4") recording_path = os.path.join(RESULTS_PATH, task_type, task_id, "recording.mp4")
if os.path.exists(recording_path): if os.path.exists(recording_path):
response = send_file(recording_path, mimetype='video/mp4') response = send_file(recording_path, mimetype='video/mp4')
# Add headers to improve mobile compatibility # Add headers to improve mobile compatibility