Skip to content

Commit ad198c4

Browse files
Merge pull request #237 from askui/fix/guard-act-tools-when-no-agent-os
fix(agent): add get/locate tools to act loop only when agent_os is set
2 parents 92fc4f7 + 66870ac commit ad198c4

5 files changed

Lines changed: 13 additions & 17 deletions

File tree

examples/model_providers.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ def try_act(agent: ComputerAgent, provider_name: str) -> None:
3535
"""Test the act() method with a simple goal."""
3636
logger.info(f"Testing act() with {provider_name}")
3737
agent.act(
38-
goal=(
39-
"Open a new Chrome window and navigate to askui.com. "
40-
),
38+
goal=("Open a new Chrome window and navigate to askui.com. "),
4139
)
4240

4341

@@ -116,19 +114,19 @@ def create_mixed_providers() -> AgentSettings:
116114
if __name__ == "__main__":
117115
# Define which provider configurations to test
118116
provider_configs = {
119-
#"AskUI (default)": create_askui_providers,
120-
#"Anthropic (direct)": create_anthropic_providers,
121-
#"Google (Gemini)": create_google_providers,
117+
# "AskUI (default)": create_askui_providers,
118+
# "Anthropic (direct)": create_anthropic_providers,
119+
# "Google (Gemini)": create_google_providers,
122120
"Mixed providers": create_mixed_providers,
123121
}
124122

125123
# Select which configuration to run (change this to test different providers)
126124
selected_config = "AskUI (default)"
127125

128126
for selected_config in provider_configs.keys():
129-
logger.info("#"*60)
127+
logger.info("#" * 60)
130128
logger.info(f"Running with provider configuration: {selected_config}")
131-
logger.info("#"*60)
129+
logger.info("#" * 60)
132130
settings = provider_configs[selected_config]()
133131

134132
with ComputerAgent(settings=settings, display=1) as agent:

src/askui/agent_base.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,9 @@ def __init__(
9191
self.act_tool_collection.add_agent_os(agent_os)
9292

9393
# Add provider-based tools to the act loop
94-
self.act_tool_collection.append_tool(self._get_tool)
95-
self.act_tool_collection.append_tool(self._locate_tool)
94+
if self._agent_os is not None:
95+
self.act_tool_collection.append_tool(self._get_tool)
96+
self.act_tool_collection.append_tool(self._locate_tool)
9697

9798
# Settings stored at agent level (mutable)
9899
self.act_settings = ActSettings()

src/askui/models/openrouter/get_model.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,7 @@ def get(
178178
raise NotImplementedError(err_msg)
179179

180180
# Use system prompt from settings if provided, otherwise use default
181-
system_prompt = (
182-
get_settings.system_prompt
183-
if get_settings.system_prompt
184-
else SYSTEM_PROMPT_GET
185-
)
181+
system_prompt = get_settings.system_prompt or SYSTEM_PROMPT_GET
186182

187183
response = self._predict(
188184
image_url=source.to_data_url(),

src/askui/tools/askui/askui_controller.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1052,7 +1052,7 @@ def _send_command(self, command: Command) -> AskUIAgentOSSendResponseSchema:
10521052
)
10531053
except grpc.RpcError as e:
10541054
if e.code() == grpc.StatusCode.INVALID_ARGUMENT:
1055-
details = e.details() if e.details() else None
1055+
details = e.details() or None
10561056
raise AskUiControllerInvalidCommandError(details) from e
10571057
raise
10581058

src/askui/utils/not_given.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
SerializerFunctionWrapHandler,
88
model_serializer,
99
)
10+
from typing_extensions import Self
1011

1112

1213
class NotGiven(BaseModel):
@@ -19,7 +20,7 @@ class NotGiven(BaseModel):
1920
_uuid: ClassVar[str] = str(uuid4())
2021
_instance: ClassVar["NotGiven | None"] = None
2122

22-
def __new__(cls) -> "NotGiven":
23+
def __new__(cls) -> Self:
2324
if cls._instance is None:
2425
cls._instance = super().__new__(cls)
2526
return cls._instance

0 commit comments

Comments
 (0)