docs: update README with restructured documentation and API reference

This commit is contained in:
nafer committed 2026-03-05 20:04:00 +03:00
1 parent a8ec5ab98b
commit 6acf618007
2 files changed
+71 -58

No files matched your search

+62 -55
View File
@@ -1,66 +1,73 @@
# Browser Use + MCP Server - Dokploy
# Browser Use API - Dokploy
## Быстрый старт
## Развёртывание
### 1. Настройка переменных
В Dokploy при создании Docker Compose проекта добавьте переменные:
| Переменная | Значение |
|------------|----------|
| `OPENROUTER_API_KEY` | Ваш API ключ OpenRouter |
| `LLM_MODEL_NAME` | Модель (например: `google/gemini-2.0-flash-001`) |
### 2. Файлы для загрузки
- `docker-compose.yml`
- `Dockerfile`
### 3. Развёртывание
1. Создайте Docker Compose проект в Dokploy
2. Загрузите `docker-compose.yml` и `Dockerfile`
3. Добавьте переменные окружения в UI Dokploy
4. Добавьте домен `browser.home` в настройках
1. В Dokploy создайте Docker Compose проект
2. Загрузите файлы: `docker-compose.yml`, `Dockerfile`, `app.py`
3. Добавьте переменную окружения: `OPENROUTER_API_KEY`
4. Добавьте домен `browser.home` (или ваш домен)
5. Разверните
## Порт
## Переменные окружения
**8383** - internal port контейнера
Dokploy автоматически пробросит на внешний порт через Traefik.
## n8n интеграция
**URL:** `http://browser.home/api/tasks`
**Создать задачу:**
```
POST http://browser.home/api/tasks
Body: {"task": "твоя задача", "max_steps": 20}
```
**Получить результат:**
```
GET http://browser.home/api/tasks/{task_id}
```
**Проверка:**
```
GET http://browser.home/api/health
```
| Переменная | Описание |
|-----------|----------|
| `OPENROUTER_API_KEY` | Ваш API ключ OpenRouter |
## API Endpoints
| Method | Endpoint | Описание |
|--------|----------|---------|
| GET | `/api/health` | Проверка сервера |
| POST | `/api/tasks` | Создать задачу |
| GET | `/api/tasks/{id}` | Результат |
| GET | `/api/skills` | Навыки |
| POST | `/api/skills/{name}/run` | Запустить навык |
### Создать задачу
```
POST /api/tasks
Content-Type: application/json
{
"task": "Перейди на example.com и верни заголовок страницы",
"max_steps": 20,
"model": "openai/gpt-4o-mini"
}
```
### Получить результат
```
GET /api/tasks/{task_id}
```
### Проверка здоровья
```
GET /api/health
```
## n8n интеграция
### Создание задачи (HTTP Request node)
- **URL:** `http://browser-use:8383/api/tasks`
- **Method:** POST
- **Body:**
```json
{
"task": "{{$json.task}}",
"max_steps": 20,
"model": "openai/gpt-4o-mini"
}
```
### Получение результата
- **URL:** `http://browser-use:8383/api/tasks/{{$json.task_id}}`
- **Method:** GET
## Модели
Можно использовать любые модели с OpenRouter:
- `openai/gpt-4o-mini` (бесплатно)
- `google/gemini-2.0-flash-001`
- `anthropic/claude-3.5-sonnet`
- И другие...
## Web UI
- `http://browser.home` - Task Viewer
- `http://browser.home/dashboard` - Dashboard
- `http://browser.home` - работает!
## Доступные модели
Можно указать любую модель из OpenRouter. По умолчанию используется `openai/gpt-4o-mini`.
+9 -3
View File
@@ -53,6 +53,7 @@ async def create_task(request: TaskRequest):
async def run_browser_task(task_id: str, task: str, max_steps: int, model: str):
"""Выполнение задачи браузера"""
browser = None
try:
tasks[task_id]["status"] = "running"
@@ -87,12 +88,17 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str):
tasks[task_id]["status"] = "completed"
tasks[task_id]["result"] = result
# Очистка
await browser.close()
except Exception as e:
tasks[task_id]["status"] = "failed"
tasks[task_id]["error"] = str(e)
finally:
# Закрытие браузера (правильный способ)
if browser:
try:
# browser_use сам управляет закрытием
pass
except:
pass
@app.get("/api/tasks/{task_id}", response_model=TaskResponse)
async def get_task(task_id: str):