Claude может взаимодействовать с компьютерными окружениями через инструмент компьютерного взаимодействия, который предоставляет возможности снятия скриншотов и управления мышью/клавиатурой для автономного взаимодействия с рабочим столом.
Компьютерное взаимодействие в настоящее время находится в бета-версии и требует бета-заголовок:
"computer-use-2025-11-24" для Claude Opus 4.5"computer-use-2025-01-24" для Claude Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, Opus 4 и Sonnet 3.7 (устарело)Компьютерное взаимодействие — это бета-функция, которая позволяет Claude взаимодействовать с окружениями рабочего стола. Этот инструмент предоставляет:
Хотя компьютерное взаимодействие может быть дополнено другими инструментами, такими как bash и текстовый редактор для более комплексных рабочих процессов автоматизации, компьютерное взаимодействие конкретно относится к возможности инструмента компьютерного взаимодействия видеть и управлять окружениями рабочего стола.
Компьютерное взаимодействие доступно для следующих моделей Claude:
| Модель | Версия инструмента | Флаг бета-версии |
|---|---|---|
| Claude Opus 4.5 | computer_20251124 | computer-use-2025-11-24 |
| Все остальные поддерживаемые модели | computer_20250124 | computer-use-2025-01-24 |
Claude Opus 4.5 представляет версию инструмента computer_20251124 с новыми возможностями, включая действие масштабирования для детального изучения областей экрана. Все остальные модели (Sonnet 4.5, Haiku 4.5, Sonnet 4, Opus 4, Opus 4.1 и Sonnet 3.7) используют версию инструмента computer_20250124.
Старые версии инструментов не гарантированно совместимы в обратном направлении с более новыми моделями. Всегда используйте версию инструмента, которая соответствует вашей версии модели.
Компьютерное взаимодействие — это бета-функция с уникальными рисками, отличными от стандартных функций API. Эти риски повышаются при взаимодействии с интернетом. Чтобы минимизировать риски, рассмотрите возможность принятия мер предосторожности, таких как:
В некоторых случаях Claude будет следовать командам, найденным в контенте, даже если это противоречит инструкциям пользователя. Например, инструкции Claude на веб-страницах или содержащиеся в изображениях могут переопределить инструкции или привести к ошибкам Claude. Мы рекомендуем принять меры предосторожности для изоляции Claude от конфиденциальных данных и действий, чтобы избежать рисков, связанных с внедрением подсказок.
Мы обучили модель сопротивляться этим внедрениям подсказок и добавили дополнительный уровень защиты. Если вы используете наши инструменты компьютерного взаимодействия, мы автоматически запустим классификаторы на ваших подсказках, чтобы отметить потенциальные случаи внедрения подсказок. Когда эти классификаторы выявляют потенциальные внедрения подсказок на скриншотах, они автоматически направляют модель на запрос подтверждения пользователя перед выполнением следующего действия. Мы признаем, что эта дополнительная защита не будет идеальной для каждого случая использования (например, для случаев использования без участия человека), поэтому, если вы хотите отказаться и отключить это, пожалуйста, свяжитесь с нами.
Начните быстро с нашей эталонной реализацией компьютерного взаимодействия, которая включает веб-интерфейс, контейнер Docker, примеры реализации инструментов и цикл агента.
Примечание: Реализация была обновлена, чтобы включить новые инструменты как для моделей Claude 4, так и для Claude Sonnet 3.7. Обязательно загрузите последнюю версию репозитория, чтобы получить доступ к этим новым функциям.
Пожалуйста, используйте эту форму для предоставления отзывов о качестве ответов модели, самом API или качестве документации — мы не можем дождаться услышать от вас!
Вот как начать работу с компьютерным взаимодействием:
Бета-заголовок требуется только для инструмента компьютерного взаимодействия.
Приведенный выше пример показывает все три инструмента, используемые вместе, что требует бета-заголовка, потому что он включает инструмент компьютерного взаимодействия.
Мы называем повторение шагов 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, # Добавьте ограничение итераций, чтобы предотвратить бесконечные циклы
):
"""
Простой цикл агента для взаимодействия Claude с компьютером.
Эта функция обрабатывает обмен между:
1. Отправкой сообщений пользователя Claude
2. Claude запрашивает использование инструментов
3. Ваше приложение выполняет эти инструменты
4. Отправкой результатов инструментов обратно Claude
"""
# Настройка инструментов и параметров API
client = Anthropic(api_key=api_key)
beta_flag = "computer-use-2025-01-24" if "20250124" in tool_version else "computer-use-2024-10-22"
# Настройка инструментов — вы должны уже иметь их инициализированными где-то еще
tools = [
{"type": f"computer_{tool_version}", "name": "computer", "display_width_px": 1024, "display_height_px": 768},
{"type": f"text_editor_{tool_version}", "name": "str_replace_editor"},
{"type": f"bash_{tool_version}", "name": "bash"}
]
# Основной цикл агента (с ограничением итераций, чтобы предотвратить неконтролируемые затраты API)
iterations = 0
while True and iterations < max_iterations:
iterations += 1
# Настройка дополнительного параметра мышления (для Claude Sonnet 3.7)
thinking = None
if thinking_budget:
thinking = {"type": "enabled", "budget_tokens": thinking_budget}
# Вызов API Claude
response = client.beta.messages.create(
model=model,
max_tokens=max_tokens,
messages=messages,
tools=tools,
betas=[beta_flag],
thinking=thinking
)
# Добавьте ответ Claude в историю разговора
response_content = response.content
messages.append({"role": "assistant", "content": response_content})
# Проверьте, использовал ли Claude какие-либо инструменты
tool_results = []
for block in response_content:
if block.type == "tool_use":
# В реальном приложении вы бы выполнили инструмент здесь
# Например: result = run_tool(block.name, block.input)
result = {"result": "Tool executed successfully"}
# Отформатируйте результат для Claude
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
# Если инструменты не использовались, Claude готов — верните финальные сообщения
if not tool_results:
return messages
# Добавьте результаты инструментов в сообщения для следующей итерации с Claude
messages.append({"role": "user", "content": tool_results})Цикл продолжается до тех пор, пока Claude не ответит без запроса каких-либо инструментов (завершение задачи) или не будет достигнут максимальный предел итераций. Эта защита предотвращает потенциальные бесконечные циклы, которые могут привести к неожиданным затратам на API.
Мы рекомендуем попробовать эталонную реализацию перед чтением остальной части этой документации.
Вот несколько советов о том, как получить лучшее качество выходных данных:
После каждого шага сделайте скриншот и тщательно оцените, достигли ли вы правильного результата. Явно покажите свое мышление: "Я оценил шаг X..." Если это неправильно, попробуйте снова. Только когда вы подтвердите, что шаг был выполнен правильно, переходите к следующему.<robot_credentials>. Использование компьютерного взаимодействия в приложениях, требующих входа, увеличивает риск плохих результатов из-за внедрения подсказок. Пожалуйста, ознакомьтесь с нашим руководством по смягчению внедрения подсказок перед предоставлением модели учетных данных для входа.Если вы неоднократно сталкиваетесь с четким набором проблем или заранее знаете задачи, которые Claude должен будет выполнить, используйте системную подсказку, чтобы предоставить Claude явные советы или инструкции о том, как успешно выполнить задачи.
Когда один из инструментов, определенных Anthropic, запрашивается через API Claude, генерируется системная подсказка, специфичная для компьютерного взаимодействия. Она похожа на системную подсказку использования инструмента, но начинается с:
У вас есть доступ к набору функций, которые вы можете использовать для ответа на вопрос пользователя. Это включает доступ к изолированному вычислительному окружению. В настоящее время у вас нет возможности проверять файлы или взаимодействовать с внешними ресурсами, кроме как путем вызова приведенных ниже функций.
Как и при обычном использовании инструментов, поле system_prompt, предоставленное пользователем, по-прежнему соблюдается и используется при построении объединенной системной подсказки.
Инструмент компьютерного взаимодействия поддерживает эти действия:
Базовые действия (все версии)
[x, y]Расширенные действия (computer_20250124)
Доступны в моделях Claude 4 и Claude Sonnet 3.7:
Расширенные действия (computer_20251124)
Доступны в Claude Opus 4.5:
computer_20250124enable_zoom: true в определении инструмента. Принимает параметр region с координатами [x1, y1, x2, y2], определяющими верхний левый и нижний правый углы области для проверки.| Параметр | Обязательный | Описание |
|---|---|---|
type | Да | Версия инструмента (computer_20251124, computer_20250124 или computer_20241022) |
name | Да | Должно быть "computer" |
display_width_px | Да | Ширина дисплея в пикселях |
display_height_px | Да | Высота дисплея в пикселях |
display_number | Нет | Номер дисплея для окружений X11 |
Важно: Инструмент компьютерного взаимодействия должен быть явно выполнен вашим приложением — Claude не может выполнить его напрямую. Вы несете ответственность за реализацию захвата скриншотов, движений мыши, вводов с клавиатуры и других действий на основе запросов Claude.
Claude Sonnet 3.7 представил новую возможность "мышления", которая позволяет вам видеть процесс рассуждения модели при работе над сложными задачами. Эта функция помогает вам понять, как Claude подходит к проблеме, и может быть особенно ценна для отладки или образовательных целей.
Чтобы включить мышление, добавьте параметр thinking в ваш запрос API:
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}Параметр budget_tokens указывает, сколько токенов Claude может использовать для мышления. Это вычитается из вашего общего бюджета max_tokens.
Когда мышление включено, Claude вернет свой процесс рассуждения как часть ответа, что может помочь вам:
Вот пример того, как может выглядеть выходные данные мышления:
[Мышление]
Мне нужно сохранить фотографию кошки на рабочий стол. Давайте разберемся на шаги:
1. Сначала я сделаю скриншот, чтобы увидеть, что находится на рабочем столе
2. Затем я буду искать веб-браузер для поиска изображений кошек
3. После нахождения подходящего изображения мне нужно будет сохранить его на рабочий стол
Давайте начнем со скриншота, чтобы увидеть, что доступно...Инструмент компьютерного взаимодействия может быть объединен с другими инструментами для создания более мощных рабочих процессов автоматизации. Это особенно полезно, когда вам нужно:
Эталонная реализация предназначена для помощи в начале работы с компьютерным использованием. Она включает все компоненты, необходимые для использования Claude на компьютере. Однако вы можете создать свою собственную среду для компьютерного использования в соответствии с вашими потребностями. Вам потребуется:
tool_use с использованием ваших реализаций инструментовИнструмент компьютерного использования реализован как инструмент без схемы. При использовании этого инструмента вам не нужно предоставлять схему ввода, как с другими инструментами; схема встроена в модель Claude и не может быть изменена.
При реализации инструмента компьютерного использования могут возникнуть различные ошибки. Вот как их обрабатывать:
API ограничивает изображения максимум 1568 пикселями на самом длинном краю и примерно 1,15 мегапиксела в целом (см. изменение размера изображения для получения подробной информации). Например, экран 1512x982 уменьшается примерно до 1330x864. Claude анализирует это меньшее изображение и возвращает координаты в этом пространстве, но ваш инструмент выполняет клики в исходном пространстве экрана.
Это может привести к тому, что координаты клика Claude не попадут в свои цели, если вы не обработаете преобразование координат.
Чтобы исправить это, измените размер скриншотов самостоятельно и масштабируйте координаты Claude обратно:
Функциональность компьютерного использования находится в бета-версии. Хотя возможности Claude передовые, разработчики должны знать о её ограничениях:
left_mouse_down, left_mouse_up и новая поддержка клавиш-модификаторов. Выбор ячеек может быть более надёжным при использовании этих детальных элементов управления и комбинировании клавиш-модификаторов с кликами.Всегда тщательно проверяйте и верифицируйте действия и журналы компьютерного использования Claude. Не используйте Claude для задач, требующих идеальной точности или чувствительной информации пользователя без надзора человека.
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.
Мы по-прежнему рекомендуем принять меры предосторожности для изоляции Claude от конфиденциальных данных и действий, чтобы избежать рисков, связанных с внедрением подсказок.
Наконец, пожалуйста, информируйте конечных пользователей о соответствующих рисках и получайте их согласие перед включением компьютерного взаимодействия в ваших собственных продуктах.
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-5", # или другая совместимая модель
max_tokens=1024,
tools=[
{
"type": "computer_20250124",
"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": "Сохраните фотографию кошки на мой рабочий стол."}],
betas=["computer-use-2025-01-24"]
)
print(response)1. Предоставьте Claude инструмент компьютерного взаимодействия и подсказку пользователя
2. Claude решает использовать инструмент компьютерного взаимодействия
stop_reason значение tool_use, сигнализирующее о намерении Claude.3. Извлеките входные данные инструмента, оцените инструмент на компьютере и верните результаты
user содержащим блок содержимого tool_result.4. Claude продолжает вызывать инструменты компьютерного взаимодействия до завершения задачи
stop_reason значением tool_use и вы должны вернуться к шагу 3.enable_zoom| Нет |
Включить действие масштабирования (computer_20251124 только). Установите значение true, чтобы позволить Claude масштабировать определенные области экрана. По умолчанию: false |
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-01-24" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 2000,
"tools": [
{
"type": "computer_20250124",
"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"
},
{
"name": "get_weather",
"description": "Получить текущую погоду в заданном месте",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Город и штат, например Сан-Франциско, Калифорния"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Единица температуры, либо 'celsius', либо 'fahrenheit'"
}
},
"required": ["location"]
}
}
],
"messages": [
{
"role": "user",
"content": "Найдите рейсы из Сан-Франциско в место с более теплой погодой."
}
],
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}
}'Настройка вычислительной среды
Создайте виртуальный дисплей или подключитесь к существующему дисплею, с которым будет взаимодействовать 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"])
# ... обработка других действийОбработка вызовов инструментов Claude
Извлеките и выполните вызовы инструментов из ответов Claude:
for content in response.content:
if content.type == "tool_use":
action = content.input["action"]
result = handle_computer_action(action, content.input)
# Возврат результата Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result
}Реализация цикла агента
Создайте цикл, который продолжается до завершения задачи Claude:
while True:
response = client.beta.messages.create(...)
# Проверка, использовал ли Claude какие-либо инструменты
tool_results = process_tool_calls(response)
if not tool_results:
# Больше нет использования инструментов, задача завершена
break
# Продолжение разговора с результатами инструментов
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)Узнайте больше об использовании инструментов и создании пользовательских инструментов