From c2c75b133ccd002bc0217b1e27a3f500351a516b Mon Sep 17 00:00:00 2001 From: Adrian Stritzinger Date: Thu, 14 Aug 2025 09:41:06 +0200 Subject: [PATCH] fix: change `ModelName` to a regular class so that (class) constants can be used like regular strings in Python 3.13 --- src/askui/agent.py | 4 ++-- src/askui/android_agent.py | 4 ++-- src/askui/models/anthropic/messages_api.py | 4 ---- src/askui/models/models.py | 6 +++--- src/askui/web_agent.py | 4 ++-- src/askui/web_testing_agent.py | 4 ++-- tests/e2e/agent/test_get.py | 4 +++- 7 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/askui/agent.py b/src/askui/agent.py index 98fb82af..c6bd2dac 100644 --- a/src/askui/agent.py +++ b/src/askui/agent.py @@ -48,7 +48,7 @@ _ANTHROPIC__CLAUDE__3_5__SONNET__20241022__ACT_SETTINGS = ActSettings( messages=MessageSettings( - model=ModelName.ANTHROPIC__CLAUDE__3_5__SONNET__20241022.value, + model=ModelName.ANTHROPIC__CLAUDE__3_5__SONNET__20241022, system=_SYSTEM_PROMPT, betas=[COMPUTER_USE_20241022_BETA_FLAG], ), @@ -56,7 +56,7 @@ _CLAUDE__SONNET__4__20250514__ACT_SETTINGS = ActSettings( messages=MessageSettings( - model=ModelName.CLAUDE__SONNET__4__20250514.value, + model=ModelName.CLAUDE__SONNET__4__20250514, system=_SYSTEM_PROMPT, betas=[COMPUTER_USE_20250124_BETA_FLAG], thinking={"type": "enabled", "budget_tokens": 2048}, diff --git a/src/askui/android_agent.py b/src/askui/android_agent.py index 6fcb6d35..7292338d 100644 --- a/src/askui/android_agent.py +++ b/src/askui/android_agent.py @@ -103,7 +103,7 @@ _ANTHROPIC__CLAUDE__3_5__SONNET__20241022__ACT_SETTINGS = ActSettings( messages=MessageSettings( - model=ModelName.ANTHROPIC__CLAUDE__3_5__SONNET__20241022.value, + model=ModelName.ANTHROPIC__CLAUDE__3_5__SONNET__20241022, system=_SYSTEM_PROMPT, betas=[], ), @@ -111,7 +111,7 @@ _CLAUDE__SONNET__4__20250514__ACT_SETTINGS = ActSettings( messages=MessageSettings( - model=ModelName.CLAUDE__SONNET__4__20250514.value, + model=ModelName.CLAUDE__SONNET__4__20250514, system=_SYSTEM_PROMPT, thinking={"type": "enabled", "budget_tokens": 2048}, betas=[], diff --git a/src/askui/models/anthropic/messages_api.py b/src/askui/models/anthropic/messages_api.py index bfb8704a..0bfea53e 100644 --- a/src/askui/models/anthropic/messages_api.py +++ b/src/askui/models/anthropic/messages_api.py @@ -63,10 +63,6 @@ def build_system_prompt_locate(screen_width: str, screen_height: str) -> str: "claude-3-5-sonnet-20241022" ), ModelName.CLAUDE__SONNET__4__20250514: "claude-sonnet-4-20250514", - ModelName.ANTHROPIC__CLAUDE__3_5__SONNET__20241022.value: ( - "claude-3-5-sonnet-20241022" - ), - ModelName.CLAUDE__SONNET__4__20250514.value: "claude-sonnet-4-20250514", } ) ) diff --git a/src/askui/models/models.py b/src/askui/models/models.py index 5bd65ddc..5de4633d 100644 --- a/src/askui/models/models.py +++ b/src/askui/models/models.py @@ -1,7 +1,6 @@ import abc import re from collections.abc import Iterator -from enum import Enum from typing import Annotated, Callable, Type from pydantic import BaseModel, ConfigDict, Field, RootModel @@ -16,10 +15,11 @@ from askui.utils.image_utils import ImageSource -class ModelName(str, Enum): +class ModelName: """Enumeration of all available model names in AskUI. - This enum provides type-safe access to model identifiers used throughout the + This enum is not really an `enum.Enum` but rather a collection of literal strings. + It provides type-safe access to model identifiers used throughout the library. Each model name corresponds to a specific AI model or model composition that can be used for different tasks like acting, getting information, or locating elements. diff --git a/src/askui/web_agent.py b/src/askui/web_agent.py index 5cc9d969..ce1631a3 100644 --- a/src/askui/web_agent.py +++ b/src/askui/web_agent.py @@ -39,7 +39,7 @@ _ANTHROPIC__CLAUDE__3_5__SONNET__20241022__ACT_SETTINGS = ActSettings( messages=MessageSettings( - model=ModelName.ANTHROPIC__CLAUDE__3_5__SONNET__20241022.value, + model=ModelName.ANTHROPIC__CLAUDE__3_5__SONNET__20241022, system=_SYSTEM_PROMPT, betas=[COMPUTER_USE_20241022_BETA_FLAG], ), @@ -47,7 +47,7 @@ _CLAUDE__SONNET__4__20250514__ACT_SETTINGS = ActSettings( messages=MessageSettings( - model=ModelName.CLAUDE__SONNET__4__20250514.value, + model=ModelName.CLAUDE__SONNET__4__20250514, system=_SYSTEM_PROMPT, betas=[COMPUTER_USE_20250124_BETA_FLAG], thinking={"type": "enabled", "budget_tokens": 2048}, diff --git a/src/askui/web_testing_agent.py b/src/askui/web_testing_agent.py index 855c5e65..ca994f29 100644 --- a/src/askui/web_testing_agent.py +++ b/src/askui/web_testing_agent.py @@ -67,7 +67,7 @@ _ANTHROPIC__CLAUDE__3_5__SONNET__20241022__ACT_SETTINGS = ActSettings( messages=MessageSettings( - model=ModelName.ANTHROPIC__CLAUDE__3_5__SONNET__20241022.value, + model=ModelName.ANTHROPIC__CLAUDE__3_5__SONNET__20241022, system=_TESTING_SYSTEM_PROMPT, betas=[COMPUTER_USE_20241022_BETA_FLAG], ), @@ -75,7 +75,7 @@ _CLAUDE__SONNET__4__20250514__ACT_SETTINGS = ActSettings( messages=MessageSettings( - model=ModelName.CLAUDE__SONNET__4__20250514.value, + model=ModelName.CLAUDE__SONNET__4__20250514, system=_TESTING_SYSTEM_PROMPT, betas=[COMPUTER_USE_20250124_BETA_FLAG], thinking={"type": "enabled", "budget_tokens": 2048}, diff --git a/tests/e2e/agent/test_get.py b/tests/e2e/agent/test_get.py index 5dc1d43a..ebcd7a2a 100644 --- a/tests/e2e/agent/test_get.py +++ b/tests/e2e/agent/test_get.py @@ -207,7 +207,9 @@ def test_get_with_string_schema( assert response in ["https://github.com/login", "github.com/login"] -@pytest.mark.parametrize("model", [ModelName.ASKUI]) +@pytest.mark.parametrize( + "model", [ModelName.ASKUI, ModelName.ASKUI__GEMINI__2_5__FLASH] +) def test_get_with_boolean_schema( vision_agent: VisionAgent, github_login_screenshot: PILImage.Image,