Was this page helpful?
Claude может взаимодействовать с компьютерными окружениями через инструмент компьютерного взаимодействия, который предоставляет возможности снятия скриншотов и управление мышью/клавиатурой для автономного взаимодействия с рабочим столом. На WebArena, эталоне для автономной навигации по веб-сайтам в реальных условиях, Claude достигает передовых результатов среди однопроцессных систем, демонстрируя сильную способность выполнять многошаговые задачи браузера от начала до конца.
Компьютерное взаимодействие находится в бета-версии и требует бета-заголовка:
"computer-use-2025-11-24" для Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5"computer-use-2025-01-24" для Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, Opus 4 и Sonnet 3.7 (устарело)Поделитесь своим отзывом об этой функции через форму обратной связи.
This feature is eligible for Zero Data Retention (ZDR). When your organization has a ZDR arrangement, data sent through this feature is not stored after the API response is returned.
Компьютерное взаимодействие — это бета-функция, которая позволяет Claude взаимодействовать с окружениями рабочего стола. Этот инструмент предоставляет:
Хотя компьютерное взаимодействие может быть дополнено другими инструментами, такими как bash и текстовый редактор для более комплексных рабочих процессов автоматизации, компьютерное взаимодействие конкретно относится к возможности инструмента компьютерного взаимодействия видеть и управлять окружениями рабочего стола.
Для поддержки моделей см. Справочник инструментов.
Компьютерное взаимодействие — это бета-функция с уникальными рисками, отличными от стандартных функций API. Эти риски возрастают при взаимодействии с интернетом.
Чтобы минимизировать риски, рассмотрите возможность принятия мер предосторожности, таких как:
В некоторых обстоятельствах Claude будет следовать командам, найденным в содержимом, даже если это противоречит инструкциям пользователя. Например, инструкции Claude на веб-страницах или содержащиеся в изображениях могут переопределить инструкции или привести к ошибкам Claude. Примите меры предосторожности, чтобы изолировать Claude от конфиденциальных данных и действий, чтобы избежать рисков, связанных с инъекцией подсказок.
Модель была обучена сопротивляться этим инъекциям подсказок, и был добавлен дополнительный уровень защиты. Если вы используете инструменты компьютерного взаимодействия, классификаторы будут автоматически запущены на ваших подсказках для выявления потенциальных случаев инъекции подсказок. Когда эти классификаторы выявляют потенциальные инъекции подсказок на скриншотах, они автоматически направляют модель на запрос подтверждения пользователя перед переходом к следующему действию. Эта дополнительная защита не будет идеальной для каждого варианта использования (например, для вариантов использования без человека в цикле), поэтому если вы хотите отказаться и отключить ее, пожалуйста, свяжитесь с поддержкой.
Эти меры предосторожности остаются важными даже с дополнительным уровнем защиты классификатора.
Информируйте конечных пользователей о соответствующих рисках и получайте их согласие перед включением компьютерного взаимодействия в ваших собственных продуктах.
Начните быстро с эталонной реализацией компьютерного взаимодействия, которая включает веб-интерфейс, контейнер Docker, примеры реализации инструментов и цикл агента.
Примечание: Реализация была обновлена, чтобы включить новые инструменты для моделей Claude 4 и Claude Sonnet 3.7. Убедитесь, что вы получили последнюю версию репозитория, чтобы получить доступ к этим новым функциям.
Вот как начать работу с компьютерным взаимодействием:
Бета-заголовок требуется только для инструмента компьютерного взаимодействия.
Приведенный выше пример показывает все три инструмента, используемые вместе, что требует бета-заголовка, поскольку он включает инструмент компьютерного взаимодействия.
Повторение шагов 3 и 4 без ввода пользователя называется "циклом агента" (то есть Claude отвечает запросом на использование инструмента, а ваше приложение отвечает Claude результатами оценки этого запроса).
Компьютерное взаимодействие требует изолированного вычислительного окружения, где Claude может безопасно взаимодействовать с приложениями и веб-сайтами. Это окружение включает:
Виртуальный дисплей: Виртуальный сервер дисплея X11 (использующий Xvfb), который отображает интерфейс рабочего стола, который Claude будет видеть через скриншоты и управлять с помощью действий мыши/клавиатуры.
Окружение рабочего стола: Легкий пользовательский интерфейс с оконным менеджером (Mutter) и панелью (Tint2), работающий на Linux, который предоставляет согласованный графический интерфейс для взаимодействия Claude.
Приложения: Предустановленные приложения Linux, такие как Firefox, LibreOffice, текстовые редакторы и файловые менеджеры, которые Claude может использовать для выполнения задач.
Реализации инструментов: Код интеграции, который переводит абстрактные запросы инструментов Claude (например, "переместить мышь" или "сделать скриншот") в фактические операции в виртуальном окружении.
Цикл агента: Программа, которая обрабатывает связь между Claude и окружением, отправляя действия Claude в окружение и возвращая результаты (скриншоты, выходные данные команд) обратно Claude.
Когда вы используете компьютерное взаимодействие, Claude не подключается напрямую к этому окружению. Вместо этого ваше приложение:
Для безопасности и изоляции эталонная реализация запускает все это внутри контейнера Docker с соответствующими сопоставлениями портов для просмотра и взаимодействия с окружением.
Эталонная реализация доступна, которая включает все необходимое для быстрого начала работы с компьютерным взаимодействием:
Основой компьютерного взаимодействия является "цикл агента" - цикл, в котором Claude запрашивает действия инструмента, ваше приложение их выполняет, и возвращает результаты Claude. Вот упрощенный пример:
async def sampling_loop(
*,
model: str,
messages: list[dict],
api_key: str,
max_tokens: int = 4096,
tool_version: str,
thinking_budget: int | None = None,
max_iterations: int = 10, # Add iteration limit to prevent infinite loops
):
"""
A simple agent loop for Claude computer use interactions.
This function handles the back-and-forth between:
1. Sending user messages to Claude
2. Claude requesting to use tools
3. Your app executing those tools
4. Sending tool results back to Claude
"""
# Set up tools and API parameters
client = Anthropic(api_key=api_key)
beta_flag = (
"computer-use-2025-11-24"
if "20251124" in tool_version
else "computer-use-2025-01-24"
)
text_editor_type = (
"text_editor_20250728"
if "20251124" in tool_version
else f"text_editor_{tool_version}"
)
# Configure tools - you should already have these initialized elsewhere
tools = [
{
"type": f"computer_{tool_version}",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
},
{"type": text_editor_type, "name": "str_replace_based_edit_tool"},
{"type": "bash_20250124", "name": "bash"},
]
# Main agent loop (with iteration limit to prevent runaway API costs)
iterations = 0
while True and iterations < max_iterations:
iterations += 1
# Set up optional thinking parameter (for Claude Sonnet 3.7)
thinking = None
if thinking_budget:
thinking = {"type": "enabled", "budget_tokens": thinking_budget}
# Call the Claude API
response = client.beta.messages.create(
model=model,
max_tokens=max_tokens,
messages=messages,
tools=tools,
betas=[beta_flag],
thinking=thinking,
)
# Add Claude's response to the conversation history
response_content = response.content
messages.append({"role": "assistant", "content": response_content})
# Check if Claude used any tools
tool_results = []
for block in response_content:
if block.type == "tool_use":
# In a real app, you would execute the tool here
# For example: result = run_tool(block.name, block.input)
result = {"result": "Tool executed successfully"}
# Format the result for Claude
tool_results.append(
{"type": "tool_result", "tool_use_id": block.id, "content": result}
)
# If no tools were used, Claude is done - return the final messages
if not tool_results:
return messages
# Add tool results to messages for the next iteration with Claude
messages.append({"role": "user", "content": tool_results})Цикл продолжается до тех пор, пока Claude не ответит без запроса каких-либо инструментов (завершение задачи) или не будет достигнут максимальный лимит итераций. Эта защита предотвращает потенциальные бесконечные циклы, которые могут привести к неожиданным затратам на API.
Попробуйте эталонную реализацию перед чтением остальной части этой документации.
Вот несколько советов о том, как получить лучшие результаты:
After each step, take a screenshot and carefully evaluate if you have achieved the right outcome. Explicitly show your thinking: "I have evaluated step X..." If not correct, try again. Only when you confirm a step was executed correctly should you move on to the next one.<robot_credentials>. Использование компьютерного взаимодействия в приложениях, требующих входа, увеличивает риск плохих результатов из-за инъекции подсказок. Перед предоставлением модели учетных данных для входа ознакомьтесь с руководством по смягчению инъекций подсказок.Если вы неоднократно сталкиваетесь с четким набором проблем или заранее знаете, какие задачи должен выполнить Claude, используйте системную подсказку, чтобы предоставить Claude явные советы или инструкции о том, как успешно выполнить задачи.
Для агентов, охватывающих несколько сеансов, запускайте сквозную проверку в начале каждого сеанса, а не только после реализации. Проверки на основе браузера выявляют регрессии из предыдущих сеансов, которые одна только проверка на уровне кода упускает. Подробнее см. в Эффективные тестовые стенды для долгоживущих агентов.
Когда один из инструментов схемы Anthropic запрашивается через Claude API, генерируется системная подсказка, специфичная для компьютерного взаимодействия. Она похожа на системную подсказку использования инструмента, но начинается с:
You have access to a set of functions you can use to answer the user's question. This includes access to a sandboxed computing environment. You do NOT currently have the ability to inspect files or interact with external resources, except by invoking the below functions.
Как и при обычном использовании инструмента, поле system_prompt, предоставленное пользователем, все еще соблюдается и используется при построении объединенной системной подсказки.
Инструмент компьютерного взаимодействия поддерживает эти действия:
Базовые действия (все версии)
[x, y]Расширенные действия (computer_20250124)
Доступны в моделях Claude 4 и Claude Sonnet 3.7:
Расширенные действия (computer_20251124)
Доступны в Claude Opus 4.6, Claude Sonnet 4.6 и Claude Opus 4.5:
computer_20250124enable_zoom: true в определении инструмента. Принимает параметр region с координатами [x1, y1, x2, y2], определяющими верхний левый и нижний правый углы области для проверки.| Параметр | Обязательный | Описание |
|---|---|---|
type | Да | Версия инструмента (computer_20251124 или computer_20250124) |
name | Да | Должно быть "computer" |
display_width_px | Да | Ширина дисплея в пикселях |
display_height_px | Да | Высота дисплея в пикселях |
display_number | Нет | Номер дисплея для окружений X11 |
enable_zoom |
Важно: Инструмент компьютерного взаимодействия должен быть явно выполнен вашим приложением - Claude не может выполнить его напрямую. Вы несете ответственность за реализацию захвата скриншотов, движений мыши, вводов с клавиатуры и других действий на основе запросов Claude.
Для комбинирования компьютерного взаимодействия с расширенным мышлением см. Расширенное мышление.
Чтобы добавить другие инструменты наряду с компьютерным взаимодействием, включите их в тот же массив tools. Приведенный выше быстрый старт показывает этот паттерн с инструментом bash и инструментом текстового редактора. Вы можете добавить свои собственные определения пользовательских инструментов таким же образом.
Эталонная реализация предназначена для помощи в начале работы с компьютерным использованием. Она включает все компоненты, необходимые для использования Claude на компьютере. Однако вы можете создать собственную среду для компьютерного использования в соответствии с вашими потребностями. Вам потребуется:
tool_use с использованием ваших реализаций инструментовИнструмент компьютерного использования реализован как инструмент без схемы. При использовании этого инструмента вам не нужно предоставлять входную схему, как с другими инструментами; схема встроена в модель Claude и не может быть изменена.
При реализации инструмента компьютерного использования могут возникнуть различные ошибки. Вот как их обрабатывать:
API ограничивает изображения максимум 1568 пикселями на самом длинном краю и примерно 1,15 мегапиксела в целом (см. изменение размера изображения для получения подробной информации). Например, экран 1512x982 уменьшается примерно до 1330x864. Claude анализирует это меньшее изображение и возвращает координаты в этом пространстве, но ваш инструмент выполняет клики в исходном пространстве экрана.
Это может привести к тому, что координаты клика Claude не попадут в свои цели, если вы не обработаете преобразование координат.
Чтобы исправить это, измените размер скриншотов самостоятельно и масштабируйте координаты Claude обратно:
Функциональность компьютерного использования находится в бета-версии. Хотя возможности Claude передовые, разработчики должны знать о его ограничениях:
left_mouse_down, left_mouse_up и новая поддержка клавиш-модификаторов. Выбор ячеек может быть более надежным благодаря использованию этих детальных элементов управления и комбинированию клавиш-модификаторов с кликами.Всегда тщательно проверяйте и верифицируйте действия компьютерного использования Claude и журналы. Не используйте Claude для задач, требующих идеальной точности или чувствительной информации пользователя без надзора человека.
Компьютерное использование — это инструмент на стороне клиента. Все скриншоты, действия мыши, вводы с клавиатуры и любые файлы, участвующие в сеансе, захватываются и хранятся в вашей среде, а не Anthropic. Anthropic обрабатывает изображения скриншотов и запросы действий в реальном времени как часть вызова API, но не сохраняет их после возврата ответа.
Поскольку ваше приложение контролирует, где и как хранятся данные компьютерного использования, компьютерное использование имеет право на ZDR. Для приемлемости ZDR по всем функциям см. API и хранение данных.
Computer use follows the standard tool use pricing. When using the computer use tool:
System prompt overhead: The computer use beta adds 466-499 tokens to the system prompt
Computer use tool token usage:
| Model | Input tokens per tool definition |
|---|---|
| Claude 4.x models | 735 tokens |
| Claude Sonnet 3.7 (deprecated) | 735 tokens |
Additional token consumption:
If you're also using bash or text editor tools alongside computer use, those tools have their own token costs as documented in their respective pages.
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: computer-use-2025-11-24" \
-d '{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"tools": [
{
"type": "computer_20251124",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
"display_number": 1
},
{
"type": "text_editor_20250728",
"name": "str_replace_based_edit_tool"
},
{
"type": "bash_20250124",
"name": "bash"
}
],
"messages": [
{
"role": "user",
"content": "Save a picture of a cat to my desktop."
}
]
}'Предоставьте Claude инструмент компьютерного взаимодействия и подсказку пользователя
Claude решает использовать инструмент компьютерного взаимодействия
stop_reason значение tool_use, сигнализирующее о намерении Claude.Извлеките входные данные инструмента, оцените инструмент на компьютере и верните результаты
user содержащим блок содержимого tool_result.Claude продолжает вызывать инструменты компьютерного взаимодействия до завершения задачи
tool_use stop_reason и вы должны вернуться к шагу 3.| Нет |
Включить действие увеличения (computer_20251124 только). Установите на true, чтобы позволить Claude увеличивать определенные регионы экрана. По умолчанию: false |
Настройка вычислительной среды
Создайте виртуальный дисплей или подключитесь к существующему дисплею, с которым будет взаимодействовать Claude. Это обычно включает настройку Xvfb (X Virtual Framebuffer) или аналогичной технологии.
Реализация обработчиков действий
Создайте функции для обработки каждого типа действия, которое может запросить Claude:
def handle_computer_action(action_type, params):
if action_type == "screenshot":
return capture_screenshot()
elif action_type == "left_click":
x, y = params["coordinate"]
return click_at(x, y)
elif action_type == "type":
return type_text(params["text"])
# ... handle other actionsОбработка вызовов инструментов Claude
Извлеките и выполните вызовы инструментов из ответов Claude:
for content in response.content:
if content.type == "tool_use":
action = content.input["action"]
result = handle_computer_action(action, content.input)
# Return result to Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result,
}Реализация цикла агента
Создайте цикл, который продолжается до завершения задачи Claude:
while True:
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
messages=messages,
tools=tools,
betas=["computer-use-2025-11-24"],
)
# Check if Claude used any tools
tool_results = process_tool_calls(response)
if not tool_results:
# No more tool use, task complete
break
# Continue conversation with tool results
messages.append({"role": "user", "content": tool_results})import math
def get_scale_factor(width, height):
"""Calculate scale factor to meet API constraints."""
long_edge = max(width, height)
total_pixels = width * height
long_edge_scale = 1568 / long_edge
total_pixels_scale = math.sqrt(1_150_000 / total_pixels)
return min(1.0, long_edge_scale, total_pixels_scale)
# When capturing screenshot
scale = get_scale_factor(screen_width, screen_height)
scaled_width = int(screen_width * scale)
scaled_height = int(screen_height * scale)
# Resize image to scaled dimensions before sending to Claude
screenshot = capture_and_resize(scaled_width, scaled_height)
# When handling Claude's coordinates, scale them back up
def execute_click(x, y):
screen_x = x / scale
screen_y = y / scale
perform_click(screen_x, screen_y)Узнайте больше об использовании инструментов и создании пользовательских инструментов