mirror of
https://github.com/browser-use/browser-use
synced 2026-05-06 17:52:15 +02:00
- Update telemetry event to include more comprehensive agent performance metrics - Modify `AgentEndTelemetryEvent` to capture total input tokens and duration - Refactor `is_successful()` method to return `None` if agent is not done - Adjust `ActionResult` default success value to `None`
64 lines
1.2 KiB
Python
64 lines
1.2 KiB
Python
from abc import ABC, abstractmethod
|
|
from dataclasses import asdict, dataclass
|
|
from typing import Any, Dict, Sequence
|
|
|
|
|
|
@dataclass
|
|
class BaseTelemetryEvent(ABC):
|
|
@property
|
|
@abstractmethod
|
|
def name(self) -> str:
|
|
pass
|
|
|
|
@property
|
|
def properties(self) -> Dict[str, Any]:
|
|
return {k: v for k, v in asdict(self).items() if k != 'name'}
|
|
|
|
|
|
@dataclass
|
|
class RegisteredFunction:
|
|
name: str
|
|
params: dict[str, Any]
|
|
|
|
|
|
@dataclass
|
|
class ControllerRegisteredFunctionsTelemetryEvent(BaseTelemetryEvent):
|
|
registered_functions: list[RegisteredFunction]
|
|
name: str = 'controller_registered_functions'
|
|
|
|
|
|
@dataclass
|
|
class AgentStepTelemetryEvent(BaseTelemetryEvent):
|
|
agent_id: str
|
|
step: int
|
|
step_error: list[str]
|
|
consecutive_failures: int
|
|
actions: list[dict]
|
|
name: str = 'agent_step'
|
|
|
|
|
|
@dataclass
|
|
class AgentRunTelemetryEvent(BaseTelemetryEvent):
|
|
agent_id: str
|
|
use_vision: bool
|
|
task: str
|
|
model_name: str
|
|
chat_model_library: str
|
|
version: str
|
|
source: str
|
|
name: str = 'agent_run'
|
|
|
|
|
|
@dataclass
|
|
class AgentEndTelemetryEvent(BaseTelemetryEvent):
|
|
agent_id: str
|
|
steps: int
|
|
max_steps_reached: bool
|
|
is_done: bool
|
|
success: bool | None
|
|
total_input_tokens: int
|
|
total_duration_seconds: float
|
|
|
|
errors: Sequence[str | None]
|
|
name: str = 'agent_end'
|