mirror of
https://github.com/trycua/computer.git
synced 2026-01-01 19:10:30 -06:00
Merge pull request #615 from trycua/fix/remove-deprecated-models
Remove `claude-3-5-sonnet-20241022`
This commit is contained in:
@@ -242,7 +242,7 @@ agent = ComputerAgent(model="huggingface-local/HelloKKMe/GTA1-7B+openai/gpt-5")
|
||||
agent = ComputerAgent(model="omniparser+openai/gpt-4o")
|
||||
|
||||
# Combine state-of-the-art grounding with powerful reasoning
|
||||
agent = ComputerAgent(model="huggingface-local/HelloKKMe/GTA1-7B+anthropic/claude-3-5-sonnet-20241022")
|
||||
agent = ComputerAgent(model="huggingface-local/HelloKKMe/GTA1-7B+anthropic/claude-sonnet-4-5-20250929")
|
||||
|
||||
# Combine two different vision models for enhanced capabilities
|
||||
agent = ComputerAgent(model="huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B+openai/gpt-4o")
|
||||
|
||||
@@ -25,7 +25,7 @@ desktop = computer.create_desktop_from_apps(["Safari", "Notes"])
|
||||
|
||||
# Your agent can now only see and interact with these apps
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[desktop]
|
||||
)
|
||||
```
|
||||
@@ -94,7 +94,7 @@ async def main():
|
||||
|
||||
# Initialize an agent
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[desktop]
|
||||
)
|
||||
|
||||
@@ -160,7 +160,7 @@ async def automate_iphone():
|
||||
|
||||
# Initialize an agent for iPhone automation
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[my_iphone]
|
||||
)
|
||||
|
||||
|
||||
@@ -145,9 +145,9 @@ While the core concept remains the same across all agent loops, different AI mod
|
||||
| Agent Loop | Supported Models | Description | Set-Of-Marks |
|
||||
|:-----------|:-----------------|:------------|:-------------|
|
||||
| `AgentLoop.OPENAI` | • `computer_use_preview` | Use OpenAI Operator CUA Preview model | Not Required |
|
||||
| `AgentLoop.ANTHROPIC` | • `claude-3-5-sonnet-20240620`<br>• `claude-3-7-sonnet-20250219` | Use Anthropic Computer-Use Beta Tools | Not Required |
|
||||
| `AgentLoop.ANTHROPIC` | • `claude-sonnet-4-5-20250929`<br>• `claude-3-7-sonnet-20250219` | Use Anthropic Computer-Use Beta Tools | Not Required |
|
||||
| `AgentLoop.UITARS` | • `ByteDance-Seed/UI-TARS-1.5-7B` | Uses ByteDance's UI-TARS 1.5 model | Not Required |
|
||||
| `AgentLoop.OMNI` | • `claude-3-5-sonnet-20240620`<br>• `claude-3-7-sonnet-20250219`<br>• `gpt-4.5-preview`<br>• `gpt-4o`<br>• `gpt-4`<br>• `phi4`<br>• `phi4-mini`<br>• `gemma3`<br>• `...`<br>• `Any Ollama or OpenAI-compatible model` | Use OmniParser for element pixel-detection (SoM) and any VLMs for UI Grounding and Reasoning | OmniParser |
|
||||
| `AgentLoop.OMNI` | • `claude-sonnet-4-5-20250929`<br>• `claude-3-7-sonnet-20250219`<br>• `gpt-4.5-preview`<br>• `gpt-4o`<br>• `gpt-4`<br>• `phi4`<br>• `phi4-mini`<br>• `gemma3`<br>• `...`<br>• `Any Ollama or OpenAI-compatible model` | Use OmniParser for element pixel-detection (SoM) and any VLMs for UI Grounding and Reasoning | OmniParser |
|
||||
|
||||
Each loop handles the same basic pattern we implemented manually in Part 1:
|
||||
|
||||
@@ -191,7 +191,7 @@ The performance of different Computer-Use models varies significantly across tas
|
||||
|
||||
- **AgentLoop.OPENAI**: Choose when you have OpenAI Tier 3 access and need the most capable computer-use agent for web-based tasks. Uses the same [OpenAI Computer-Use Loop](https://platform.openai.com/docs/guides/tools-computer-use) as Part 1, delivering strong performance on browser-based benchmarks.
|
||||
|
||||
- **AgentLoop.ANTHROPIC**: Ideal for users with Anthropic API access who need strong reasoning capabilities with computer-use abilities. Works with `claude-3-5-sonnet-20240620` and `claude-3-7-sonnet-20250219` models following [Anthropic's Computer-Use tools](https://docs.anthropic.com/en/docs/agents-and-tools/computer-use#understanding-the-multi-agent-loop).
|
||||
- **AgentLoop.ANTHROPIC**: Ideal for users with Anthropic API access who need strong reasoning capabilities with computer-use abilities. Works with `claude-sonnet-4-5-20250929` and `claude-3-7-sonnet-20250219` models following [Anthropic's Computer-Use tools](https://docs.anthropic.com/en/docs/agents-and-tools/computer-use#understanding-the-multi-agent-loop).
|
||||
|
||||
- **AgentLoop.UITARS**: Best for scenarios requiring more powerful OS/desktop, and latency-sensitive automation, as UI-TARS-1.5 leads in OS capabilities benchmarks. Requires running the model locally or accessing it through compatible endpoints (e.g. on Hugging Face).
|
||||
|
||||
|
||||
@@ -14,12 +14,12 @@ This is the kind of problem that makes you wonder if we're building the future o
|
||||
|
||||
Agent framework 0.4 solves this by doing something radical: making all these different models speak the same language.
|
||||
|
||||
Instead of writing separate code for each model's peculiarities, you now just pick a model with a string like `"anthropic/claude-3-5-sonnet-20241022"` or `"huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B"`, and everything else Just Works™. Behind the scenes, we handle all the coordinate normalization, token parsing, and image preprocessing so you don't have to.
|
||||
Instead of writing separate code for each model's peculiarities, you now just pick a model with a string like `"anthropic/claude-sonnet-4-5-20250929"` or `"huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B"`, and everything else Just Works™. Behind the scenes, we handle all the coordinate normalization, token parsing, and image preprocessing so you don't have to.
|
||||
|
||||
```python
|
||||
# This works the same whether you're using Anthropic, OpenAI, or that new model you found on Hugging Face
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022", # or any other supported model
|
||||
model="anthropic/claude-sonnet-4-5-20250929", # or any other supported model
|
||||
tools=[computer]
|
||||
)
|
||||
```
|
||||
|
||||
@@ -58,7 +58,7 @@ await run_full_dataset(
|
||||
# Or test on SheetBench (50 spreadsheet tasks)
|
||||
await run_full_dataset(
|
||||
dataset="hud-evals/SheetBench-V2",
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
split="train[:2]"
|
||||
)
|
||||
```
|
||||
|
||||
@@ -34,7 +34,7 @@ async def take_screenshot():
|
||||
) as computer:
|
||||
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
max_trajectory_budget=5.0
|
||||
)
|
||||
@@ -121,7 +121,7 @@ The output is an AsyncGenerator that yields response chunks.
|
||||
The `ComputerAgent` constructor provides a wide range of options for customizing agent behavior, tool integration, callbacks, resource management, and more.
|
||||
|
||||
- `model` (`str`): Default: **required**
|
||||
The LLM or agent model to use. Determines which agent loop is selected unless `custom_loop` is provided. (e.g., "claude-3-5-sonnet-20241022", "computer-use-preview", "omni+vertex_ai/gemini-pro")
|
||||
The LLM or agent model to use. Determines which agent loop is selected unless `custom_loop` is provided. (e.g., "claude-sonnet-4-5-20250929", "computer-use-preview", "omni+vertex_ai/gemini-pro")
|
||||
- `tools` (`List[Any]`):
|
||||
List of tools the agent can use (e.g., `Computer`, sandboxed Python functions, etc.).
|
||||
- `custom_loop` (`Callable`):
|
||||
@@ -159,7 +159,7 @@ from computer import Computer
|
||||
from agent.callbacks import ImageRetentionCallback
|
||||
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[Computer(...)],
|
||||
only_n_most_recent_images=3,
|
||||
callbacks=[ImageRetentionCallback(only_n_most_recent_images=3)],
|
||||
|
||||
@@ -13,7 +13,7 @@ Optimize agent costs with budget management and image retention callbacks.
|
||||
from agent.callbacks import BudgetManagerCallback
|
||||
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
callbacks=[
|
||||
BudgetManagerCallback(
|
||||
@@ -30,7 +30,7 @@ agent = ComputerAgent(
|
||||
```python
|
||||
# Simple budget limit
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
max_trajectory_budget=5.0 # $5 limit
|
||||
)
|
||||
```
|
||||
@@ -40,7 +40,7 @@ agent = ComputerAgent(
|
||||
```python
|
||||
# Advanced budget configuration
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
max_trajectory_budget={
|
||||
"max_budget": 10.0,
|
||||
"raise_error": True, # Raise error when exceeded
|
||||
@@ -55,7 +55,7 @@ agent = ComputerAgent(
|
||||
from agent.callbacks import ImageRetentionCallback
|
||||
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
callbacks=[
|
||||
ImageRetentionCallback(only_n_most_recent_images=3)
|
||||
@@ -67,7 +67,7 @@ agent = ComputerAgent(
|
||||
|
||||
```python
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
only_n_most_recent_images=3 # Auto-adds ImageRetentionCallback
|
||||
)
|
||||
@@ -77,7 +77,7 @@ agent = ComputerAgent(
|
||||
|
||||
```python
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
max_trajectory_budget=5.0, # Budget limit
|
||||
only_n_most_recent_images=3, # Image retention
|
||||
|
||||
@@ -21,7 +21,7 @@ from agent.callbacks import (
|
||||
)
|
||||
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
callbacks=[
|
||||
ImageRetentionCallback(only_n_most_recent_images=3),
|
||||
|
||||
@@ -14,7 +14,7 @@ from agent.callbacks import LoggingCallback
|
||||
import logging
|
||||
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
callbacks=[
|
||||
LoggingCallback(
|
||||
@@ -29,7 +29,7 @@ agent = ComputerAgent(
|
||||
|
||||
```python
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
verbosity=logging.INFO # Auto-adds LoggingCallback
|
||||
)
|
||||
@@ -72,7 +72,7 @@ class CustomLogger(AsyncCallbackHandler):
|
||||
|
||||
# Use custom logger
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
callbacks=[CustomLogger("my_agent")]
|
||||
)
|
||||
|
||||
@@ -13,7 +13,7 @@ The TrajectorySaverCallback records complete agent conversations including messa
|
||||
from agent.callbacks import TrajectorySaverCallback
|
||||
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
callbacks=[
|
||||
TrajectorySaverCallback(
|
||||
@@ -28,7 +28,7 @@ agent = ComputerAgent(
|
||||
|
||||
```python
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
trajectory_dir="trajectories", # Auto-save trajectories
|
||||
tools=[computer]
|
||||
)
|
||||
|
||||
@@ -7,7 +7,7 @@ This guide lists **breaking changes** when migrating from the original `Computer
|
||||
## Breaking Changes
|
||||
|
||||
- **Initialization:**
|
||||
- `ComputerAgent` (v0.4.x) uses `model` as a string (e.g. "anthropic/claude-3-5-sonnet-20241022") instead of `LLM` and `AgentLoop` objects.
|
||||
- `ComputerAgent` (v0.4.x) uses `model` as a string (e.g. "anthropic/claude-sonnet-4-5-20250929") instead of `LLM` and `AgentLoop` objects.
|
||||
- `tools` is a list (can include multiple computers and decorated functions).
|
||||
- `callbacks` are now first-class for extensibility (image retention, budget, trajectory, logging, etc).
|
||||
- **No explicit `loop` parameter:**
|
||||
@@ -39,7 +39,7 @@ async with Computer() as computer:
|
||||
```python
|
||||
async with Computer() as computer:
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer]
|
||||
)
|
||||
messages = [{"role": "user", "content": "Take a screenshot"}]
|
||||
|
||||
@@ -38,7 +38,7 @@ With the OpenAI provider, prompt caching is handled automatically for prompts of
|
||||
```python
|
||||
from agent import ComputerAgent
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
use_prompt_caching=True,
|
||||
)
|
||||
```
|
||||
|
||||
@@ -32,7 +32,7 @@ Any vision-enabled LiteLLM-compatible model can be used as the planning componen
|
||||
- Any All‑in‑one CUA (planning-capable). See [All‑in‑one CUAs](./computer-use-agents).
|
||||
- Any VLM via LiteLLM providers: `anthropic/*`, `openai/*`, `openrouter/*`, `gemini/*`, `vertex_ai/*`, `huggingface-local/*`, `mlx/*`, etc.
|
||||
- Examples:
|
||||
- **Anthropic**: `anthropic/claude-3-5-sonnet-20241022`, `anthropic/claude-opus-4-1-20250805`
|
||||
- **Anthropic**: `anthropic/claude-sonnet-4-5-20250929`, `anthropic/claude-opus-4-1-20250805`
|
||||
- **OpenAI**: `openai/gpt-5`, `openai/gpt-o3`, `openai/gpt-4o`
|
||||
- **Google**: `gemini/gemini-1.5-pro`, `vertex_ai/gemini-pro-vision`
|
||||
- **Local models**: Any Hugging Face vision-language model
|
||||
@@ -59,7 +59,7 @@ Combine state-of-the-art grounding with powerful reasoning:
|
||||
|
||||
```python
|
||||
agent = ComputerAgent(
|
||||
"huggingface-local/HelloKKMe/GTA1-7B+anthropic/claude-3-5-sonnet-20241022",
|
||||
"huggingface-local/HelloKKMe/GTA1-7B+anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer]
|
||||
)
|
||||
|
||||
@@ -113,7 +113,7 @@ async for _ in agent.run("Close the settings window, then open the Downloads fol
|
||||
Composed agents support both capabilities:
|
||||
|
||||
```python
|
||||
agent = ComputerAgent("huggingface-local/HelloKKMe/GTA1-7B+anthropic/claude-3-5-sonnet-20241022")
|
||||
agent = ComputerAgent("huggingface-local/HelloKKMe/GTA1-7B+anthropic/claude-sonnet-4-5-20250929")
|
||||
|
||||
# Full computer-use agent capabilities
|
||||
async for _ in agent.run("Complete this online form"):
|
||||
|
||||
@@ -29,10 +29,9 @@ Claude models with computer-use capabilities:
|
||||
- Claude 4.1: `claude-opus-4-1-20250805`
|
||||
- Claude 4: `claude-opus-4-20250514`, `claude-sonnet-4-20250514`
|
||||
- Claude 3.7: `claude-3-7-sonnet-20250219`
|
||||
- Claude 3.5: `claude-3-5-sonnet-20241022`
|
||||
|
||||
```python
|
||||
agent = ComputerAgent("claude-3-5-sonnet-20241022", tools=[computer])
|
||||
agent = ComputerAgent("claude-sonnet-4-5-20250929", tools=[computer])
|
||||
async for _ in agent.run("Open Firefox and navigate to github.com"):
|
||||
pass
|
||||
```
|
||||
|
||||
@@ -11,10 +11,10 @@ All models that support `ComputerAgent.run()` also support `ComputerAgent.predic
|
||||
|
||||
### Anthropic CUAs
|
||||
|
||||
- Claude 4.5: `claude-sonnet-4-5-20250929`
|
||||
- Claude 4.1: `claude-opus-4-1-20250805`
|
||||
- Claude 4: `claude-opus-4-20250514`, `claude-sonnet-4-20250514`
|
||||
- Claude 3.7: `claude-3-7-sonnet-20250219`
|
||||
- Claude 3.5: `claude-3-5-sonnet-20241022`
|
||||
|
||||
### OpenAI CUA Preview
|
||||
|
||||
@@ -61,7 +61,7 @@ Moondream3 is a powerful small model that can perform UI grounding and click pre
|
||||
|
||||
```python
|
||||
# Using any grounding model for click prediction
|
||||
agent = ComputerAgent("claude-3-5-sonnet-20241022", tools=[computer])
|
||||
agent = ComputerAgent("claude-sonnet-4-5-20250929", tools=[computer])
|
||||
|
||||
# Predict coordinates for specific elements
|
||||
login_coords = agent.predict_click("find the login button")
|
||||
@@ -75,7 +75,7 @@ print(f"Menu icon: {menu_coords}")
|
||||
|
||||
```python
|
||||
# OmniParser is just for OCR, so it requires an LLM for predict_click
|
||||
agent = ComputerAgent("omniparser+anthropic/claude-3-5-sonnet-20241022", tools=[computer])
|
||||
agent = ComputerAgent("omniparser+anthropic/claude-sonnet-4-5-20250929", tools=[computer])
|
||||
|
||||
# Predict click coordinates using composed agent
|
||||
coords = agent.predict_click("find the submit button")
|
||||
|
||||
@@ -28,7 +28,6 @@ model="cua/anthropic/claude-haiku-4.5" # Claude Haiku 4.5 (faster)
|
||||
Direct access to Anthropic's Claude models using your own Anthropic API key (BYOK - Bring Your Own Key).
|
||||
|
||||
```python
|
||||
model="anthropic/claude-3-5-sonnet-20241022"
|
||||
model="anthropic/claude-3-7-sonnet-20250219"
|
||||
model="anthropic/claude-opus-4-20250514"
|
||||
model="anthropic/claude-sonnet-4-20250514"
|
||||
@@ -62,6 +61,6 @@ Combine Omniparser for UI understanding with any LLM provider.
|
||||
```python
|
||||
model="omniparser+ollama_chat/mistral-small3.2"
|
||||
model="omniparser+vertex_ai/gemini-pro"
|
||||
model="omniparser+anthropic/claude-3-5-sonnet-20241022"
|
||||
model="omniparser+anthropic/claude-sonnet-4-5-20250929"
|
||||
model="omniparser+openai/gpt-4o"
|
||||
```
|
||||
|
||||
@@ -118,7 +118,7 @@ Telemetry settings are configured at initialization and can't be changed afterwa
|
||||
| Event Name | Data Collected | Trigger Notes |
|
||||
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
|
||||
| **module_init** | • `module`: "agent"<br />• `version`: Package version<br />• `python_version`: Full Python version string | Triggered once when the agent package is imported for the first time |
|
||||
| **agent_session_start** | • `session_id`: Unique UUID for this agent instance<br />• `agent_type`: Class name (e.g., "ComputerAgent")<br />• `model`: Model name (e.g., "claude-3-5-sonnet")<br />• `os`: Operating system<br />• `os_version`: OS version<br />• `python_version`: Python version | Triggered when TelemetryCallback is initialized (agent instantiation) |
|
||||
| **agent_session_start** | • `session_id`: Unique UUID for this agent instance<br />• `agent_type`: Class name (e.g., "ComputerAgent")<br />• `model`: Model name (e.g., "claude-sonnet-4-5")<br />• `os`: Operating system<br />• `os_version`: OS version<br />• `python_version`: Python version | Triggered when TelemetryCallback is initialized (agent instantiation) |
|
||||
| **agent_run_start** | • `session_id`: Agent session UUID<br />• `run_id`: Unique UUID for this run<br />• `start_time`: Unix timestamp<br />• `input_context_size`: Character count of input messages<br />• `num_existing_messages`: Count of existing messages<br />• `uploaded_trajectory`: Full conversation items (opt-in) | Triggered at the start of each agent.run() call |
|
||||
| **agent_run_end** | • `session_id`: Agent session UUID<br />• `run_id`: Run UUID<br />• `end_time`: Unix timestamp<br />• `duration_seconds`: Total run duration<br />• `num_steps`: Total steps taken in this run<br />• `total_usage`: Accumulated token usage and costs<br />• `uploaded_trajectory`: Full conversation items (opt-in) | Triggered at the end of each agent.run() call |
|
||||
| **agent_step** | • `session_id`: Agent session UUID<br />• `run_id`: Run UUID<br />• `step`: Step number (incremental)<br />• `timestamp`: Unix timestamp<br />• `duration_seconds`: Duration of previous step | Triggered on each agent response/step during a run |
|
||||
|
||||
@@ -6,7 +6,7 @@ The server is configured using environment variables (can be set in the Claude D
|
||||
|
||||
| Variable | Description | Default |
|
||||
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
|
||||
| `CUA_MODEL_NAME` | Model string (e.g., "anthropic/claude-sonnet-4-20250514", "anthropic/claude-3-5-sonnet-20240620", "openai/computer-use-preview", "huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B", "omniparser+litellm/gpt-4o", "omniparser+ollama_chat/gemma3") | anthropic/claude-sonnet-4-20250514 |
|
||||
| `CUA_MODEL_NAME` | Model string (e.g., "anthropic/claude-sonnet-4-20250514", "openai/computer-use-preview", "huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B", "omniparser+litellm/gpt-4o", "omniparser+ollama_chat/gemma3") | anthropic/claude-sonnet-4-20250514 |
|
||||
| `ANTHROPIC_API_KEY` | Your Anthropic API key (required for Anthropic models) | None |
|
||||
| `CUA_MAX_IMAGES` | Maximum number of images to keep in context | 3 |
|
||||
| `CUA_USE_HOST_COMPUTER_SERVER` | Target your local desktop instead of a VM. Set to "true" to use your host system. **Warning:** AI models may perform risky actions. | false |
|
||||
@@ -17,7 +17,7 @@ The `CUA_MODEL_NAME` environment variable supports various model providers throu
|
||||
|
||||
### Supported Providers
|
||||
|
||||
- **Anthropic**: `anthropic/claude-sonnet-4-20250514`, `anthropic/claude-3-5-sonnet-20240620`, `anthropic/claude-3-haiku-20240307`
|
||||
- **Anthropic**: `anthropic/claude-sonnet-4-20250514`,
|
||||
- **OpenAI**: `openai/computer-use-preview`, `openai/gpt-4o`
|
||||
- **Local Models**: `huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B`
|
||||
- **Omni + LiteLLM**: `omniparser+litellm/gpt-4o`, `omniparser+litellm/claude-3-haiku`
|
||||
|
||||
@@ -124,8 +124,6 @@ If you're working with the CUA source code directly (like in the CUA repository)
|
||||
|
||||
3. **"model not found"** - Use a valid model name:
|
||||
- ✅ `anthropic/claude-sonnet-4-20250514`
|
||||
- ✅ `anthropic/claude-3-5-sonnet-20240620`
|
||||
- ❌ `anthropic/claude-3-5-sonnet-20241022` (doesn't exist)
|
||||
|
||||
4. **Script not found** - If you get a `/bin/bash: ~/cua/libs/python/mcp-server/scripts/start_mcp_server.sh: No such file or directory` error, try changing the path to the script to be absolute instead of relative.
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ This MCP server features comprehensive liteLLM integration, allowing you to use
|
||||
|
||||
### Model String Examples:
|
||||
|
||||
- **Anthropic**: `"anthropic/claude-3-5-sonnet-20241022"`
|
||||
- **Anthropic**: `"anthropic/claude-sonnet-4-5-20250929"`
|
||||
- **OpenAI**: `"openai/computer-use-preview"`
|
||||
- **UI-TARS**: `"huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B"`
|
||||
- **Omni + Any LiteLLM**: `"omniparser+litellm/gpt-4o"`, `"omniparser+litellm/claude-3-haiku"`, `"omniparser+ollama_chat/gemma3"`
|
||||
|
||||
@@ -91,7 +91,7 @@ Add the `CUA_USE_HOST_COMPUTER_SERVER` environment variable to your MCP client c
|
||||
"command": "/bin/bash",
|
||||
"args": ["~/.cua/start_mcp_server.sh"],
|
||||
"env": {
|
||||
"CUA_MODEL_NAME": "anthropic/claude-3-5-sonnet-20241022",
|
||||
"CUA_MODEL_NAME": "anthropic/claude-sonnet-4-5-20250929",
|
||||
"CUA_USE_HOST_COMPUTER_SERVER": "true"
|
||||
}
|
||||
}
|
||||
@@ -164,7 +164,6 @@ Now Claude will control your local desktop directly when you ask it to perform c
|
||||
**Model Selection**: Choose the appropriate model for your needs:
|
||||
|
||||
- **Claude Sonnet 4**: Latest model with best performance (`anthropic/claude-sonnet-4-20250514`)
|
||||
- **Claude 3.5 Sonnet**: Reliable performance (`anthropic/claude-3-5-sonnet-20240620`)
|
||||
- **Computer-Use Preview**: Specialized for computer tasks (`openai/computer-use-preview`)
|
||||
- **Local Models**: For privacy-sensitive environments
|
||||
- **Ollama**: For offline usage
|
||||
|
||||
@@ -51,7 +51,7 @@ async def main():
|
||||
|
||||
# Create agent
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022",
|
||||
model="anthropic/claude-sonnet-4-5-20250929",
|
||||
tools=[computer],
|
||||
only_n_most_recent_images=3,
|
||||
trajectory_dir="trajectories",
|
||||
|
||||
@@ -189,7 +189,7 @@ class ComputerAgent:
|
||||
Initialize ComputerAgent.
|
||||
|
||||
Args:
|
||||
model: Model name (e.g., "claude-3-5-sonnet-20241022", "computer-use-preview", "omni+vertex_ai/gemini-pro")
|
||||
model: Model name (e.g., "claude-sonnet-4-5-20250929", "computer-use-preview", "omni+vertex_ai/gemini-pro")
|
||||
tools: List of tools (computer objects, decorated functions, etc.)
|
||||
custom_loop: Custom agent loop function to use instead of auto-selection
|
||||
only_n_most_recent_images: If set, only keep the N most recent images in message history. Adds ImageRetentionCallback automatically.
|
||||
|
||||
@@ -7,7 +7,7 @@ Usage:
|
||||
Examples:
|
||||
python -m agent.cli openai/computer-use-preview
|
||||
python -m agent.cli anthropic/claude-sonnet-4-5-20250929
|
||||
python -m agent.cli omniparser+anthropic/claude-3-5-sonnet-20241022
|
||||
python -m agent.cli omniparser+anthropic/claude-sonnet-4-5-20250929
|
||||
"""
|
||||
|
||||
try:
|
||||
@@ -233,7 +233,7 @@ async def main():
|
||||
Examples:
|
||||
python -m agent.cli openai/computer-use-preview
|
||||
python -m agent.cli anthropic/claude-sonnet-4-5-20250929
|
||||
python -m agent.cli omniparser+anthropic/claude-3-5-sonnet-20241022
|
||||
python -m agent.cli omniparser+anthropic/claude-sonnet-4-5-20250929
|
||||
python -m agent.cli huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B
|
||||
""",
|
||||
)
|
||||
|
||||
@@ -22,14 +22,14 @@ async def test_http_endpoint():
|
||||
|
||||
# Example 1: Simple text request
|
||||
simple_request = {
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022",
|
||||
"model": "anthropic/claude-sonnet-4-5-20250929",
|
||||
"input": "Tell me a three sentence bedtime story about a unicorn.",
|
||||
"env": {"ANTHROPIC_API_KEY": anthropic_api_key},
|
||||
}
|
||||
|
||||
# Example 2: Multi-modal request with image
|
||||
multimodal_request = {
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022",
|
||||
"model": "anthropic/claude-sonnet-4-5-20250929",
|
||||
"input": [
|
||||
{
|
||||
"role": "user",
|
||||
@@ -47,7 +47,7 @@ async def test_http_endpoint():
|
||||
|
||||
# Example 3: Request with custom agent and computer kwargs
|
||||
custom_request = {
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022",
|
||||
"model": "anthropic/claude-sonnet-4-5-20250929",
|
||||
"input": "Take a screenshot and tell me what you see",
|
||||
"env": {"ANTHROPIC_API_KEY": anthropic_api_key},
|
||||
}
|
||||
@@ -95,7 +95,7 @@ def curl_examples():
|
||||
"""curl http://localhost:8000/responses \\
|
||||
-H "Content-Type: application/json" \\
|
||||
-d '{
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022",
|
||||
"model": "anthropic/claude-sonnet-4-5-20250929",
|
||||
"input": "Tell me a three sentence bedtime story about a unicorn."
|
||||
}'"""
|
||||
)
|
||||
@@ -105,7 +105,7 @@ def curl_examples():
|
||||
"""curl http://localhost:8000/responses \\
|
||||
-H "Content-Type: application/json" \\
|
||||
-d '{
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022",
|
||||
"model": "anthropic/claude-sonnet-4-5-20250929",
|
||||
"input": [
|
||||
{
|
||||
"role": "user",
|
||||
@@ -126,7 +126,7 @@ def curl_examples():
|
||||
"""curl http://localhost:8000/responses \\
|
||||
-H "Content-Type: application/json" \\
|
||||
-d '{
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022",
|
||||
"model": "anthropic/claude-sonnet-4-5-20250929",
|
||||
"input": "Take a screenshot and tell me what you see",
|
||||
"agent_kwargs": {
|
||||
"save_trajectory": true,
|
||||
@@ -166,7 +166,7 @@ async def test_p2p_client():
|
||||
|
||||
# Send a test request
|
||||
request = {
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022",
|
||||
"model": "anthropic/claude-sonnet-4-5-20250929",
|
||||
"input": "Hello from P2P client!",
|
||||
}
|
||||
await connection.send(json.dumps(request))
|
||||
|
||||
@@ -6,9 +6,9 @@ with an advanced UI for model selection and configuration.
|
||||
|
||||
Supported Agent Models:
|
||||
- OpenAI: openai/computer-use-preview
|
||||
- Anthropic: anthropic/claude-3-5-sonnet-20241022, anthropic/claude-3-7-sonnet-20250219
|
||||
- Anthropic: anthropic/claude-sonnet-4-5-20250929, anthropic/claude-3-7-sonnet-20250219
|
||||
- UI-TARS: huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B
|
||||
- Omniparser: omniparser+anthropic/claude-3-5-sonnet-20241022, omniparser+ollama_chat/gemma3
|
||||
- Omniparser: omniparser+anthropic/claude-sonnet-4-5-20250929, omniparser+ollama_chat/gemma3
|
||||
|
||||
Requirements:
|
||||
- Mac with Apple Silicon (M1/M2/M3/M4), Linux, or Windows
|
||||
@@ -116,14 +116,12 @@ MODEL_MAPPINGS = {
|
||||
"Anthropic: Claude 4 Opus (20250514)": "anthropic/claude-opus-4-20250514",
|
||||
"Anthropic: Claude 4 Sonnet (20250514)": "anthropic/claude-sonnet-4-20250514",
|
||||
"Anthropic: Claude 3.7 Sonnet (20250219)": "anthropic/claude-3-7-sonnet-20250219",
|
||||
"Anthropic: Claude 3.5 Sonnet (20241022)": "anthropic/claude-3-5-sonnet-20241022",
|
||||
},
|
||||
"omni": {
|
||||
"default": "omniparser+openai/gpt-4o",
|
||||
"OMNI: OpenAI GPT-4o": "omniparser+openai/gpt-4o",
|
||||
"OMNI: OpenAI GPT-4o mini": "omniparser+openai/gpt-4o-mini",
|
||||
"OMNI: Claude 3.7 Sonnet (20250219)": "omniparser+anthropic/claude-3-7-sonnet-20250219",
|
||||
"OMNI: Claude 3.5 Sonnet (20241022)": "omniparser+anthropic/claude-3-5-sonnet-20241022",
|
||||
},
|
||||
"uitars": {
|
||||
"default": "huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B" if is_mac else "ui-tars",
|
||||
|
||||
@@ -44,13 +44,11 @@ def create_gradio_ui() -> gr.Blocks:
|
||||
"Anthropic: Claude 4 Opus (20250514)",
|
||||
"Anthropic: Claude 4 Sonnet (20250514)",
|
||||
"Anthropic: Claude 3.7 Sonnet (20250219)",
|
||||
"Anthropic: Claude 3.5 Sonnet (20241022)",
|
||||
]
|
||||
omni_models = [
|
||||
"OMNI: OpenAI GPT-4o",
|
||||
"OMNI: OpenAI GPT-4o mini",
|
||||
"OMNI: Claude 3.7 Sonnet (20250219)",
|
||||
"OMNI: Claude 3.5 Sonnet (20241022)",
|
||||
]
|
||||
|
||||
# Check if API keys are available
|
||||
|
||||
@@ -102,7 +102,7 @@ async def main():
|
||||
# model="anthropic/claude-opus-4-20250514",
|
||||
# model="anthropic/claude-sonnet-4-20250514",
|
||||
# model="anthropic/claude-3-7-sonnet-20250219",
|
||||
# model="anthropic/claude-3-5-sonnet-20241022",
|
||||
# model="anthropic/claude-sonnet-4-5-20250929",
|
||||
# == UI-TARS ==
|
||||
# model="huggingface-local/ByteDance-Seed/UI-TARS-1.5-7B",
|
||||
# TODO: add local mlx provider
|
||||
|
||||
@@ -24,7 +24,7 @@ def mock_litellm():
|
||||
"id": "chatcmpl-test123",
|
||||
"object": "chat.completion",
|
||||
"created": 1234567890,
|
||||
"model": kwargs.get("model", "anthropic/claude-3-5-sonnet-20241022"),
|
||||
"model": kwargs.get("model", "anthropic/claude-sonnet-4-5-20250929"),
|
||||
"choices": [
|
||||
{
|
||||
"index": 0,
|
||||
|
||||
@@ -18,18 +18,18 @@ class TestComputerAgentInitialization:
|
||||
"""Test that agent can be initialized with a model string."""
|
||||
from agent import ComputerAgent
|
||||
|
||||
agent = ComputerAgent(model="anthropic/claude-3-5-sonnet-20241022")
|
||||
agent = ComputerAgent(model="anthropic/claude-sonnet-4-5-20250929")
|
||||
|
||||
assert agent is not None
|
||||
assert hasattr(agent, "model")
|
||||
assert agent.model == "anthropic/claude-3-5-sonnet-20241022"
|
||||
assert agent.model == "anthropic/claude-sonnet-4-5-20250929"
|
||||
|
||||
@patch("agent.agent.litellm")
|
||||
def test_agent_initialization_with_tools(self, mock_litellm, disable_telemetry, mock_computer):
|
||||
"""Test that agent can be initialized with tools."""
|
||||
from agent import ComputerAgent
|
||||
|
||||
agent = ComputerAgent(model="anthropic/claude-3-5-sonnet-20241022", tools=[mock_computer])
|
||||
agent = ComputerAgent(model="anthropic/claude-sonnet-4-5-20250929", tools=[mock_computer])
|
||||
|
||||
assert agent is not None
|
||||
assert hasattr(agent, "tools")
|
||||
@@ -41,7 +41,7 @@ class TestComputerAgentInitialization:
|
||||
|
||||
budget = 5.0
|
||||
agent = ComputerAgent(
|
||||
model="anthropic/claude-3-5-sonnet-20241022", max_trajectory_budget=budget
|
||||
model="anthropic/claude-sonnet-4-5-20250929", max_trajectory_budget=budget
|
||||
)
|
||||
|
||||
assert agent is not None
|
||||
@@ -79,7 +79,7 @@ class TestComputerAgentRun:
|
||||
|
||||
mock_litellm.acompletion = AsyncMock(return_value=mock_response)
|
||||
|
||||
agent = ComputerAgent(model="anthropic/claude-3-5-sonnet-20241022")
|
||||
agent = ComputerAgent(model="anthropic/claude-sonnet-4-5-20250929")
|
||||
|
||||
# Run should return an async generator
|
||||
result_generator = agent.run(sample_messages)
|
||||
@@ -92,7 +92,7 @@ class TestComputerAgentRun:
|
||||
"""Test that agent has run method available."""
|
||||
from agent import ComputerAgent
|
||||
|
||||
agent = ComputerAgent(model="anthropic/claude-3-5-sonnet-20241022")
|
||||
agent = ComputerAgent(model="anthropic/claude-sonnet-4-5-20250929")
|
||||
|
||||
# Verify run method exists
|
||||
assert hasattr(agent, "run")
|
||||
@@ -102,7 +102,7 @@ class TestComputerAgentRun:
|
||||
"""Test that agent has agent_loop initialized."""
|
||||
from agent import ComputerAgent
|
||||
|
||||
agent = ComputerAgent(model="anthropic/claude-3-5-sonnet-20241022")
|
||||
agent = ComputerAgent(model="anthropic/claude-sonnet-4-5-20250929")
|
||||
|
||||
# Verify agent_loop is initialized
|
||||
assert hasattr(agent, "agent_loop")
|
||||
@@ -132,7 +132,7 @@ class TestComputerAgentIntegration:
|
||||
"""Test that agent can be initialized with Computer tool."""
|
||||
from agent import ComputerAgent
|
||||
|
||||
agent = ComputerAgent(model="anthropic/claude-3-5-sonnet-20241022", tools=[mock_computer])
|
||||
agent = ComputerAgent(model="anthropic/claude-sonnet-4-5-20250929", tools=[mock_computer])
|
||||
|
||||
# Verify agent accepted the tool
|
||||
assert agent is not None
|
||||
|
||||
@@ -133,7 +133,7 @@ await cleanup_session(ctx, "session-to-cleanup")
|
||||
|
||||
### Environment Variables
|
||||
|
||||
- `CUA_MODEL_NAME`: Model to use (default: `anthropic/claude-3-5-sonnet-20241022`)
|
||||
- `CUA_MODEL_NAME`: Model to use (default: `anthropic/claude-sonnet-4-5-20250929`)
|
||||
- `CUA_MAX_IMAGES`: Maximum images to keep (default: `3`)
|
||||
|
||||
### Session Manager Configuration
|
||||
|
||||
@@ -44,7 +44,7 @@ Add this to your MCP client configuration:
|
||||
"args": [
|
||||
"bash",
|
||||
"-lc",
|
||||
"export CUA_MODEL_NAME='anthropic/claude-3-5-sonnet-20241022'; ~/.cua/start_mcp_server.sh"
|
||||
"export CUA_MODEL_NAME='anthropic/claude-sonnet-4-5-20250929'; ~/.cua/start_mcp_server.sh"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,7 +156,7 @@ def serve() -> FastMCP:
|
||||
|
||||
try:
|
||||
# Get model name
|
||||
model_name = os.getenv("CUA_MODEL_NAME", "anthropic/claude-3-5-sonnet-20241022")
|
||||
model_name = os.getenv("CUA_MODEL_NAME", "anthropic/claude-sonnet-4-5-20250929")
|
||||
logger.info(f"Using model: {model_name}")
|
||||
|
||||
# Create agent with the new v0.4.x API
|
||||
|
||||
@@ -168,7 +168,7 @@ def print_usage_examples():
|
||||
"command": "/bin/bash",
|
||||
"args": ["~/.cua/start_mcp_server.sh"],
|
||||
"env": {
|
||||
"CUA_MODEL_NAME": "anthropic/claude-3-5-sonnet-20241022"
|
||||
"CUA_MODEL_NAME": "anthropic/claude-sonnet-4-5-20250929"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -192,7 +192,7 @@ Step 2: Configure MCP client:
|
||||
"command": "/bin/bash",
|
||||
"args": ["~/.cua/start_mcp_server.sh"],
|
||||
"env": {
|
||||
"CUA_MODEL_NAME": "anthropic/claude-3-5-sonnet-20241022",
|
||||
"CUA_MODEL_NAME": "anthropic/claude-sonnet-4-5-20250929",
|
||||
"CUA_USE_HOST_COMPUTER_SERVER": "true"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ const peerClient = new AgentClient('peer://my-agent-proxy');
|
||||
|
||||
// Send a simple text request
|
||||
const response = await client.responses.create({
|
||||
model: 'anthropic/claude-3-5-sonnet-20241022',
|
||||
model: 'anthropic/claude-sonnet-4-5-20250929',
|
||||
input: 'Write a one-sentence bedtime story about a unicorn.',
|
||||
// Optional per-request env overrides
|
||||
env: {
|
||||
@@ -47,7 +47,7 @@ console.log(response.output);
|
||||
|
||||
```typescript
|
||||
const response = await client.responses.create({
|
||||
model: 'anthropic/claude-3-5-sonnet-20241022',
|
||||
model: 'anthropic/claude-sonnet-4-5-20250929',
|
||||
input: [
|
||||
{
|
||||
role: 'user',
|
||||
@@ -74,7 +74,7 @@ const client = new AgentClient('https://localhost:8000', {
|
||||
});
|
||||
|
||||
const response = await client.responses.create({
|
||||
model: 'anthropic/claude-3-5-sonnet-20241022',
|
||||
model: 'anthropic/claude-sonnet-4-5-20250929',
|
||||
input: 'Hello, world!',
|
||||
agent_kwargs: {
|
||||
save_trajectory: true,
|
||||
|
||||
@@ -42,7 +42,7 @@ A simple HTML page that demonstrates using the CUA Agent Client in a browser env
|
||||
|
||||
4. **Configure and test:**
|
||||
- Enter an agent URL (e.g., `https://localhost:8000` or `peer://some-peer-id`)
|
||||
- Enter a model name (e.g., `anthropic/claude-3-5-sonnet-20241022`)
|
||||
- Enter a model name (e.g., `anthropic/claude-sonnet-4-5-20250929`)
|
||||
- Type a message and click "Send Message" or press Enter
|
||||
- View the response in the output textarea
|
||||
|
||||
@@ -53,7 +53,7 @@ A simple HTML page that demonstrates using the CUA Agent Client in a browser env
|
||||
|
||||
**Example Models:**
|
||||
|
||||
- `anthropic/claude-3-5-sonnet-20241022`
|
||||
- `anthropic/claude-sonnet-4-5-20250929`
|
||||
- `openai/gpt-4`
|
||||
- `huggingface-local/microsoft/UI-TARS-7B`
|
||||
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
"\n",
|
||||
"Examples:\n",
|
||||
"- `openai/computer-use-preview+ollama/gemma3:4b`\n",
|
||||
"- `anthropic/claude-3-5-sonnet-20241022+ollama/gemma3:4b`\n"
|
||||
"- `anthropic/claude-sonnet-4-5-20250929+ollama/gemma3:4b`\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -217,7 +217,7 @@
|
||||
"import logging\n",
|
||||
"\n",
|
||||
"agent_composed = ComputerAgent(\n",
|
||||
" model=\"anthropic/claude-3-5-sonnet-20241022+ollama/gemma3:4b\",\n",
|
||||
" model=\"anthropic/claude-sonnet-4-5-20250929+ollama/gemma3:4b\",\n",
|
||||
" tools=[computer],\n",
|
||||
" trajectory_dir=\"trajectories\",\n",
|
||||
" only_n_most_recent_images=3,\n",
|
||||
@@ -234,7 +234,20 @@
|
||||
"cell_type": "markdown",
|
||||
"id": "section-3-conceptual",
|
||||
"metadata": {},
|
||||
"source": "## 3) Customize your agent 🛠️\n\nFor a few customization options, see: https://cua.ai/docs/agent-sdk/customizing-computeragent\n\nLevels of customization you can explore:\n\n1) Simple — Prompt engineering\n2) Easy — Tools\n3) Intermediate — Callbacks\n4) Expert — Custom agent via `register_agent` (see `libs/python/agent/agent/decorators.py` → `register_agent`)\n\nor, incorporate the ComputerAgent into your own agent framework!"
|
||||
"source": [
|
||||
"## 3) Customize your agent 🛠️\n",
|
||||
"\n",
|
||||
"For a few customization options, see: https://cua.ai/docs/agent-sdk/customizing-computeragent\n",
|
||||
"\n",
|
||||
"Levels of customization you can explore:\n",
|
||||
"\n",
|
||||
"1) Simple — Prompt engineering\n",
|
||||
"2) Easy — Tools\n",
|
||||
"3) Intermediate — Callbacks\n",
|
||||
"4) Expert — Custom agent via `register_agent` (see `libs/python/agent/agent/decorators.py` → `register_agent`)\n",
|
||||
"\n",
|
||||
"or, incorporate the ComputerAgent into your own agent framework!"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -274,4 +287,4 @@
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ if __name__ == "__main__":
|
||||
|
||||
parser = argparse.ArgumentParser(description="Test CUA Agent with mock computer")
|
||||
parser.add_argument(
|
||||
"--model", default="anthropic/claude-sonnet-4-20250514", help="CUA model to test"
|
||||
"--model", default="anthropic/claude-sonnet-4-5-20250929", help="CUA model to test"
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user