Was this page helpful?
Claude может взаимодействовать с компьютерными окружениями через инструмент компьютерного взаимодействия, который обеспечивает возможность создания снимков экрана и управление мышью/клавиатурой для автономного взаимодействия с рабочим столом.
Компьютерное взаимодействие в настоящее время находится в бета-версии и требует бета-заголовок:
"computer-use-2025-11-24" для Claude Opus 4.6, 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.6, Claude Opus 4.5 | computer_20251124 | computer-use-2025-11-24 |
| Все остальные поддерживаемые модели | computer_20250124 | computer-use-2025-01-24 |
Claude Opus 4.6 и 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 от конфиденциальных данных и действий, чтобы избежать рисков, связанных с инъекцией подсказок.
Мы обучили модель сопротивляться этим инъекциям подсказок и добавили дополнительный уровень защиты. Если вы используете наши инструменты компьютерного взаимодействия, мы автоматически запустим классификаторы на ваших подсказках, чтобы отметить потенциальные случаи инъекции подсказок. Когда эти классификаторы выявляют потенциальные инъекции подсказок на снимках экрана, они автоматически направляют модель на запрос подтверждения пользователя перед выполнением следующего действия. Мы признаем, что эта дополнительная защита не будет идеальной для каждого варианта использования (например, для вариантов использования без человека в цикле), поэтому если вы хотите отказаться и отключить это, пожалуйста, свяжитесь с нами.
Мы по-прежнему рекомендуем принять меры предосторожности для изоляции 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
# Установите необязательный параметр thinking (для 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.6 и 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 представил новую возможность "thinking", которая позволяет вам увидеть процесс рассуждения модели при работе над сложными задачами. Эта функция помогает вам понять, как Claude подходит к проблеме, и может быть особенно ценна для отладки или образовательных целей.
Чтобы включить thinking, добавьте параметр thinking в ваш запрос API:
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}Параметр budget_tokens указывает, сколько токенов Claude может использовать для thinking. Это вычитается из вашего общего бюджета max_tokens.
Когда thinking включен, Claude вернет свой процесс рассуждения как часть ответа, что может помочь вам:
Вот пример того, как может выглядеть выходные данные thinking:
[Thinking]
Мне нужно сохранить изображение кошки на рабочий стол. Давайте разберем это на шаги:
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.
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
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": "Сохраните изображение кошки на мой рабочий стол."}],
betas=["computer-use-2025-11-24"]
)
print(response)Предоставьте Claude инструмент компьютерного взаимодействия и подсказку пользователя
Claude решает использовать инструмент компьютерного взаимодействия
stop_reason значение tool_use, сигнализирующее о намерении Claude.Извлеките входные данные инструмента, оцените инструмент на компьютере и верните результаты
user, содержащим блок содержимого tool_result.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-opus-4-6",
"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": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The unit of temperature, either 'celsius' or 'fahrenheit'"
}
},
"required": ["location"]
}
}
],
"messages": [
{
"role": "user",
"content": "Find flights from San Francisco to a place with warmer weather."
}
],
"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"])
# ... 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(...)
# 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)Узнайте больше об использовании инструментов и создании пользовательских инструментов