diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc new file mode 100644 index 0000000..3e1b3ce Binary files /dev/null and b/__pycache__/app.cpython-312.pyc differ diff --git a/app.py b/app.py index fd1fe70..5f41084 100644 --- a/app.py +++ b/app.py @@ -9,10 +9,13 @@ from fastapi import FastAPI, HTTPException from pydantic import BaseModel from browser_use import Agent, Browser, ChatOpenAI from browser_use.agent.views import AgentHistoryList +from browser_use.browser.context import BrowserContextConfig, BrowserConfig import uvicorn +from fastapi.responses import HTMLResponse -# Обход проверки API ключа browser-use -os.environ["OPENAI_API_KEY"] = os.environ.get("OPENAI_API_KEY", "dummy") +# Настройки Remote Debugging +REMOTE_DEBUGGING_PORT = int(os.getenv("REMOTE_DEBUGGING_PORT", "9222")) +REMOTE_DEBUGGING_ENABLED = os.getenv("REMOTE_DEBUGGING_ENABLED", "false").lower() == "true" app = FastAPI(title="Browser Use API", version="1.0.0") @@ -20,7 +23,7 @@ app = FastAPI(title="Browser Use API", version="1.0.0") class TaskRequest(BaseModel): task: str max_steps: Optional[int] = 20 - model: Optional[str] = "openai/gpt-4o-mini" + model: Optional[str] = DEFAULT_MODEL class TaskResponse(BaseModel): task_id: str @@ -69,12 +72,22 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str): api_key=api_key ) - # Инициализация браузера с постоянной директорией для cookies - browser = Browser( + # Настройки браузера + browser_config = BrowserConfig( user_data_dir="/app/browser-data", - profile_directory="Default" + profile_directory="Default", + headless=True, ) + # Добавляем remote debugging если включено + if REMOTE_DEBUGGING_ENABLED: + browser_config.extra_chromium_args = [ + f"--remote-debugging-port={REMOTE_DEBUGGING_PORT}", + "--remote-debugging-address=0.0.0.0" + ] + + browser = Browser(config=browser_config) + # Создание агента agent = Agent( task=task, @@ -117,6 +130,22 @@ async def get_task(task_id: str): error=task.get("error") ) +@app.get("/api/tasks") +async def list_tasks(): + """Получить список всех задач""" + return { + "tasks": [ + { + "task_id": task_id, + "status": task["status"], + "task": task.get("task", ""), + "result": task.get("result"), + "error": task.get("error") + } + for task_id, task in tasks.items() + ] + } + @app.get("/api/health") async def health_check(): """Проверка здоровья сервера""" @@ -126,5 +155,174 @@ async def health_check(): "version": "1.0.0" } +# Web UI - Главная страница +WEB_UI_HTML = """ + + +
+ + +REST API для автоматизации браузера с помощью AI
+ +POST /api/tasks - Создать задачуGET /api/tasks/{task_id} - Получить результатGET /api/health - Проверка здоровьяcurl -X POST http://localhost:8383/api/tasks \\
+ -H "Content-Type: application/json" \\
+ -d '{"task": "Перейди на example.com", "max_steps": 20}'
+