fix(browser): улучшить совместимость с контейнерами и добавить конфигурацию модели через env
- Добавить логику headless режима на основе настройки удалённой отладки - Добавить keep_alive для сохранения сессии браузера между задачами - Добавить флаги --no-sandbox и --disable-dev-shm-usage для поддержки контейнеров - Использовать переменную окружения LLM_MODEL_NAME для конфигурации модели
This commit is contained in:
1 parent
039010522a
commit
fdf98f6004
2 files changed
+10
-4
No files matched your search
Binary file not shown.
@@ -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(
|
||||||
|
|||||||
Reference in new issue
Block a user