fix(browser): улучшить совместимость с контейнерами и добавить конфигурацию модели через env

- Добавить логику headless режима на основе настройки удалённой отладки
- Добавить keep_alive для сохранения сессии браузера между задачами
- Добавить флаги --no-sandbox и --disable-dev-shm-usage для поддержки контейнеров
- Использовать переменную окружения LLM_MODEL_NAME для конфигурации модели
This commit is contained in:
nafer committed 2026-03-05 23:31:51 +03:00
1 parent 039010522a
commit fdf98f6004
2 files changed
+10 -4

No files matched your search

Binary file not shown.
+10 -4
View File
@@ -6,7 +6,7 @@ import os
import asyncio import asyncio
from typing import Optional from typing import Optional
from fastapi import FastAPI, HTTPException from fastapi import FastAPI, HTTPException
from pydantic import BaseModel from pydantic import BaseModel, Field
from browser_use import Agent, Browser, BrowserProfile, ChatOpenAI from browser_use import Agent, Browser, BrowserProfile, ChatOpenAI
from browser_use.agent.views import AgentHistoryList from browser_use.agent.views import AgentHistoryList
import uvicorn import uvicorn
@@ -25,7 +25,7 @@ app = FastAPI(title="Browser Use API", version="1.0.0")
class TaskRequest(BaseModel): class TaskRequest(BaseModel):
task: str task: str
max_steps: Optional[int] = 20 max_steps: Optional[int] = 20
model: Optional[str] = DEFAULT_MODEL model: Optional[str] = Field(default_factory=lambda: os.getenv("LLM_MODEL_NAME", "openai/gpt-4o-mini"))
class TaskResponse(BaseModel): class TaskResponse(BaseModel):
task_id: str task_id: str
@@ -75,10 +75,14 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str):
) )
# Настройки браузера через BrowserProfile # Настройки браузера через BrowserProfile
# Если включен remote debugging - запускаем в не-headless режиме
is_headless = not REMOTE_DEBUGGING_ENABLED
browser_profile = BrowserProfile( browser_profile = BrowserProfile(
user_data_dir="/app/browser-data", user_data_dir="/app/browser-data",
profile_directory="Default", profile_directory="Default",
headless=True, headless=is_headless,
keep_alive=True, # Сохраняем сессию между задачами
) )
# Добавляем remote debugging если включено # Добавляем remote debugging если включено
@@ -86,7 +90,9 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str):
if REMOTE_DEBUGGING_ENABLED: if REMOTE_DEBUGGING_ENABLED:
extra_args = [ extra_args = [
f"--remote-debugging-port={REMOTE_DEBUGGING_PORT}", f"--remote-debugging-port={REMOTE_DEBUGGING_PORT}",
"--remote-debugging-address=0.0.0.0" "--remote-debugging-address=0.0.0.0",
"--no-sandbox", # Важно для работы в контейнере
"--disable-dev-shm-usage"
] ]
browser = Browser( browser = Browser(