-
Notifications
You must be signed in to change notification settings - Fork 86
Open
Description
{'error': {'message': "Hosted tool 'computer_use_preview' is not supported with
gpt-5-nano.", 'type': 'invalid_request_error', 'param': 'tools', 'code': None}}
I want to add an agent using gpt-5-nano to execute it. It has already been configured in agent.py, but there is still no effect and an error is reported
MODEL_TO_CLIENT_CLASS_MAP: dict[str, type[AgentClient]] = {
"computer-use-preview-03-11": OpenAICUAClient,
"gpt-o4-mini": OpenAICUAClient,
"gpt-5-nano": OpenAICUAClient,
"claude-3-5-sonnet-latest": AnthropicCUAClient,
"claude-3-7-sonnet-latest": AnthropicCUAClient,
"claude-sonnet-4-20250514": AnthropicCUAClient,
"claude-sonnet-4-5-20250929": AnthropicCUAClient,
"gemini-2.5-computer-use-preview-10-2025": GoogleCUAClient,
}
MODEL_TO_PROVIDER_MAP: dict[str, AgentProvider] = {
"computer-use-preview-03-11": AgentProvider.OPENAI,
"gpt-o4-mini": AgentProvider.OPENAI,
"gpt-5-nano": AgentProvider.OPENAI,
"claude-3-5-sonnet-20240620": AgentProvider.ANTHROPIC,
"claude-3-7-sonnet-20250219": AgentProvider.ANTHROPIC,
"claude-sonnet-4-20250514": AgentProvider.ANTHROPIC,
"claude-sonnet-4-5-20250929": AgentProvider.ANTHROPIC,
"gemini-2.5-computer-use-preview-10-2025": AgentProvider.GOOGLE,
# Add more mappings as needed
}
class AvailableModel(str, Enum):
GPT_4O = "gpt-4o"
GPT_4O_MINI = "gpt-4o-mini"
CLAUDE_3_5_SONNET_LATEST = "claude-3-5-sonnet-latest"
CLAUDE_3_7_SONNET_LATEST = "claude-3-7-sonnet-latest"
COMPUTER_USE_PREVIEW = "computer-use-preview"
GEMINI_2_0_FLASH = "gemini-2.0-flash"
GPT_5_NANO="gpt-5-nano"
import asyncio
import logging
import os
from dotenv import load_dotenv
from rich.console import Console
from rich.panel import Panel
from rich.theme import Theme
from stagehand import Stagehand, StagehandConfig, configure_logging
# Create a custom theme for consistent styling
custom_theme = Theme(
{
"info": "cyan",
"success": "green",
"warning": "yellow",
"error": "red bold",
"highlight": "magenta",
"url": "blue underline",
}
)
# Create a Rich console instance with our theme
console = Console(theme=custom_theme)
load_dotenv()
# Configure logging with the utility function
configure_logging(
level=logging.INFO, # Set to INFO for regular logs, DEBUG for detailed
quiet_dependencies=True, # Reduce noise from dependencies
)
async def main():
# Build a unified configuration object for Stagehand
config = StagehandConfig(
env="LOCAL",
model_name="gpt-5-nano",
self_heal=True,
system_prompt="You are a browser automation assistant that helps users navigate websites effectively.",
model_client_options={"apiKey": "sk-proj-xxx"},
verbose=2,
)
# Create a Stagehand client using the configuration object.
stagehand = Stagehand(config)
# Initialize - this creates a new session automatically.
console.print("\nπ [info]Initializing Stagehand...[/]")
await stagehand.init()
console.print("\nβΆοΈ [highlight] Navigating[/] to Google")
await stagehand.page.goto("https://google.com/")
console.print("β
[success]Navigated to Google[/]")
console.print("\nβΆοΈ [highlight] Using Agent to perform a task[/]: playing a game of 2048")
agent = stagehand.agent(
model="gpt-5-nano",
instructions="You are a helpful web navigation assistant that helps users find information. You are currently on the following page: google.com. Do not ask follow up questions, the user will trust your judgement.",
options={"apiKey": "xxx"}
)
agent_result = await agent.execute(
instruction="Play a game of 2048",
max_steps=20,
auto_screenshot=True,
)
console.print("π [info]Agent execution result:[/]")
console.print(f"β
Success: [bold]{'Yes' if agent_result.success else 'No'}[/]")
console.print(f"π― Completed: [bold]{'Yes' if agent_result.completed else 'No'}[/]")
if agent_result.message:
console.print(f"π¬ Message: [italic]{agent_result.message}[/]")
if agent_result.actions:
console.print(f"π Actions performed: [bold]{len(agent_result.actions)}[/]")
for i, action in enumerate(agent_result.actions):
console.print(f" Action {i+1}: {action.get('type', 'Unknown')} - {action.get('description', 'No description')}")
# For debugging, you can also print the full JSON
console.print("[dim]Full response JSON:[/]")
console.print_json(f"{agent_result.model_dump_json()}")
# Close the session
console.print("\nβΉοΈ [warning]Closing session...[/]")
await stagehand.close()
console.print("β
[success]Session closed successfully![/]")
console.rule("[bold]End of Example[/]")
if __name__ == "__main__":
# Add a fancy header
console.print(
"\n",
Panel(
"[light_gray]Stagehand π€ Agent Example[/]",
border_style="green",
padding=(1, 10),
),
)
asyncio.run(main())
Metadata
Metadata
Assignees
Labels
No labels