mirror of
https://github.com/browser-use/browser-use.git
synced 2026-09-14 19:59:47 +08:00
82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
from typing import Any, Generic, TypeVar, Union
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from browser_use.llm.messages import ToolCall
|
|
|
|
T = TypeVar('T', bound=Union[BaseModel, str])
|
|
|
|
|
|
class ModelCapabilities(BaseModel):
|
|
"""Model and adapter features that affect structured agent output."""
|
|
|
|
native_tool_calling: bool = False
|
|
forced_tool_calling: bool = False
|
|
strict_tool_arguments: bool = False
|
|
parallel_tool_call_control: bool = False
|
|
|
|
|
|
class ChatInvokeUsage(BaseModel):
|
|
"""
|
|
Usage information for a chat model invocation.
|
|
"""
|
|
|
|
prompt_tokens: int
|
|
"""The number of tokens in the prompt (this includes the cached tokens as well. When calculating the cost, subtract the cached tokens from the prompt tokens)"""
|
|
|
|
prompt_cached_tokens: int | None
|
|
"""The number of cached tokens."""
|
|
|
|
prompt_cache_creation_tokens: int | None
|
|
"""Anthropic only: The number of tokens used to create the cache."""
|
|
|
|
prompt_cache_creation_5m_tokens: int | None = None
|
|
"""Anthropic only: The number of 5-minute cache write tokens."""
|
|
|
|
prompt_cache_creation_1h_tokens: int | None = None
|
|
"""Anthropic only: The number of 1-hour cache write tokens."""
|
|
|
|
prompt_image_tokens: int | None
|
|
"""Google only: The number of tokens in the image (prompt tokens is the text tokens + image tokens in that case)"""
|
|
|
|
completion_tokens: int
|
|
"""The number of tokens in the completion."""
|
|
|
|
total_tokens: int
|
|
"""The total number of tokens in the response."""
|
|
|
|
pricing_multiplier: float | None = None
|
|
"""Provider-specific cost multiplier, for example Anthropic US-only inference pricing."""
|
|
|
|
|
|
class ChatInvokeCompletion(BaseModel, Generic[T]):
|
|
"""
|
|
Response from a chat model invocation.
|
|
"""
|
|
|
|
completion: T
|
|
"""The completion of the response."""
|
|
|
|
tool_calls: list[ToolCall] = Field(default_factory=list)
|
|
"""Provider-native function calls returned by the model."""
|
|
|
|
response_id: str | None = None
|
|
"""Provider response identifier when available."""
|
|
|
|
# Thinking stuff
|
|
thinking: str | None = None
|
|
redacted_thinking: str | None = None
|
|
|
|
usage: ChatInvokeUsage | None
|
|
"""The usage of the response."""
|
|
|
|
stop_reason: str | None = None
|
|
"""The reason the model stopped generating. Common values: 'end_turn', 'max_tokens', 'stop_sequence'."""
|
|
|
|
stop_details: dict[str, Any] | None = None
|
|
"""Provider-specific stop details, for example Anthropic refusal category information."""
|
|
|
|
@property
|
|
def has_tool_calls(self) -> bool:
|
|
return bool(self.tool_calls)
|