Claude 3.7 Sonnet и Claude 3.5 Sonnet (новый) способны взаимодействовать с инструментами, которые могут управлять компьютерной средой рабочего стола. Claude 3.7 Sonnet представляет дополнительные инструменты и позволяет включить мышление, давая вам больше понимания процесса рассуждений модели.

Использование компьютера находится в бета-версии. Пожалуйста, имейте в виду, что использование компьютера создает уникальные риски, отличные от стандартных функций API или интерфейсов чата. Эти риски возрастают при использовании компьютера для взаимодействия с интернетом. Для минимизации рисков рекомендуется принять следующие меры предосторожности:

  1. Используйте выделенную виртуальную машину или контейнер с минимальными привилегиями для предотвращения прямых атак на систему или несчастных случаев.
  2. Избегайте предоставления модели доступа к конфиденциальным данным, таким как информация для входа в учетную запись, чтобы предотвратить кражу информации.
  3. Ограничьте доступ в интернет списком разрешенных доменов для уменьшения воздействия вредоносного контента.
  4. Попросите человека подтвердить решения, которые могут привести к значимым последствиям в реальном мире, а также любые задачи, требующие явного согласия, такие как принятие файлов cookie, выполнение финансовых транзакций или согласие с условиями использования.

В некоторых обстоятельствах Claude будет следовать командам, найденным в контенте, даже если это противоречит инструкциям пользователя. Например, инструкции Claude на веб-страницах или содержащиеся в изображениях могут переопределить инструкции или привести к ошибкам Claude. Мы предлагаем принять меры предосторожности для изоляции Claude от конфиденциальных данных и действий во избежание рисков, связанных с инъекцией промптов.

Мы обучили модель противостоять этим инъекциям промптов и добавили дополнительный уровень защиты. Если вы используете наши инструменты для работы с компьютером, мы автоматически запустим классификаторы для ваших промптов, чтобы отметить потенциальные случаи инъекций промптов. Когда эти классификаторы обнаруживают потенциальные инъекции промптов в скриншотах, они автоматически направят модель запросить подтверждение пользователя перед выполнением следующего действия. Мы понимаем, что эта дополнительная защита не будет идеальной для каждого случая использования (например, для случаев без участия человека), поэтому если вы хотите отказаться и отключить ее, пожалуйста, свяжитесь с нами.

Мы по-прежнему рекомендуем принимать меры предосторожности для изоляции Claude от конфиденциальных данных и действий во избежание рисков, связанных с инъекцией промптов.

Наконец, пожалуйста, информируйте конечных пользователей о соответствующих рисках и получайте их согласие перед включением использования компьютера в ваших собственных продуктах.

Эталонная реализация использования компьютера

Быстро начните работу с нашей эталонной реализацией использования компьютера, которая включает веб-интерфейс, Docker-контейнер, примеры реализации инструментов и цикл агента.

Примечание: Реализация была обновлена и включает новые инструменты для Claude 3.7 Sonnet. Обязательно получите последнюю версию репозитория для доступа к этим новым функциям.

Пожалуйста, используйте эту форму для предоставления обратной связи о качестве ответов модели, самом API или качестве документации - мы с нетерпением ждем ваших отзывов!

Вот пример того, как предоставить инструменты использования компьютера для Claude с помощью API Messages:

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-3-7-sonnet-20250219",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768,
        "display_number": 1
      },
      {
        "type": "text_editor_20241022",
        "name": "str_replace_editor"
      },
      {
        "type": "bash_20241022",
        "name": "bash"
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "Save a picture of a cat to my desktop."
      }
    ],
    "thinking": {
      "type": "enabled",
      "budget_tokens": 1024
    }
  }'

Как работает использование компьютера

1. Предоставьте Claude инструменты использования компьютера и пользовательский промпт

  • Добавьте определенные Anthropic инструменты использования компьютера в ваш API-запрос.
  • Включите пользовательский промпт, который может потребовать эти инструменты, например, “Сохрани изображение кота на мой рабочий стол.”

2. Claude решает использовать инструмент

  • Claude загружает сохраненные определения инструментов использования компьютера и оценивает, могут ли какие-либо инструменты помочь с запросом пользователя. - Если да, Claude создает правильно отформатированный запрос на использование инструмента. - API-ответ имеет stop_reason равный tool_use, сигнализируя о намерении Claude.

3. Извлеките входные данные инструмента, выполните инструмент на компьютере и верните результаты

  • На вашей стороне извлеките имя инструмента и входные данные из запроса Claude. - Используйте инструмент в контейнере или виртуальной машине. - Продолжите разговор с новым сообщением user, содержащим блок контента tool_result.

4. Claude продолжает вызывать инструменты использования компьютера, пока не завершит задачу

  • Claude анализирует результаты инструмента, чтобы определить, нужно ли дополнительное использование инструмента или задача выполнена. - Если Claude решает, что ему нужен другой инструмент, он отвечает с другим stop_reason равным tool_use, и вы должны вернуться к шагу 3. - В противном случае он создает текстовый ответ пользователю.

Мы называем повторение шагов 3 и 4 без пользовательского ввода “циклом агента” - то есть, Claude отвечает запросом на использование инструмента, а ваше приложение отвечает Claude результатами выполнения этого запроса.

Вычислительная среда

Использование компьютера требует изолированной вычислительной среды, где Claude может безопасно взаимодействовать с приложениями и веб-интерфейсом. Эта среда включает:

  1. Виртуальный дисплей: Виртуальный X11-сервер дисплея (использующий Xvfb), который отображает интерфейс рабочего стола, который Claude будет видеть через скриншоты и управлять с помощью действий мыши/клавиатуры.

  2. Среда рабочего стола: Легкий пользовательский интерфейс с оконным менеджером (Mutter) и панелью (Tint2), работающий на Linux, который обеспечивает последовательный графический интерфейс для взаимодействия Claude.

  3. Приложения: Предустановленные Linux-приложения, такие как Firefox, LibreOffice, текстовые редакторы и файловые менеджеры, которые Claude может использовать для выполнения задач.

  4. Реализации инструментов: Интеграционный код, который преобразует абстрактные запросы инструментов Claude (например, “переместить мышь” или “сделать скриншот”) в реальные операции в виртуальной среде.

  5. Цикл агента: Программа, которая обрабатывает коммуникацию между Claude и средой, отправляя действия Claude в среду и возвращая результаты (скриншоты, выводы команд) обратно Claude.

Когда вы используете компьютер, Claude не подключается к этой среде напрямую. Вместо этого ваше приложение:

  1. Получает запросы на использование инструментов от Claude
  2. Преобразует их в действия в вашей вычислительной среде
  3. Захватывает результаты (скриншоты, выводы команд и т.д.)
  4. Возвращает эти результаты 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 3.7 Sonnet)
        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.

Для каждой версии инструментов вы должны использовать соответствующий бета-флаг в вашем API-запросе:

Мы рекомендуем попробовать эталонную реализацию перед чтением остальной документации.

Оптимизация производительности модели с помощью промптов

Вот несколько советов о том, как получить лучшее качество выходных данных:

  1. Указывайте простые, четко определенные задачи и предоставляйте явные инструкции для каждого шага.
  2. Claude иногда предполагает результаты своих действий без явной проверки их результатов. Чтобы предотвратить это, вы можете дать Claude промпт: После каждого шага делай скриншот и тщательно оценивай, достиг ли ты правильного результата. Явно показывай свои размышления: "Я оценил шаг X..." Если результат неверный, попробуй снова. Только когда ты подтвердишь, что шаг был выполнен правильно, переходи к следующему.
  3. Некоторые элементы пользовательского интерфейса (такие как выпадающие списки и полосы прокрутки) могут быть сложными для манипуляции Claude с помощью движений мыши. Если вы столкнетесь с этим, попробуйте предложить модели использовать сочетания клавиш.
  4. Для повторяющихся задач или взаимодействий с пользовательским интерфейсом включите в свой промпт примеры скриншотов и вызовов инструментов успешных результатов.
  5. Если вам нужно, чтобы модель вошла в систему, предоставьте ей имя пользователя и пароль в вашем промпте внутри xml-тегов, например <robot_credentials>. Использование компьютера в приложениях, требующих входа в систему, увеличивает риск плохих результатов в результате инъекции промптов. Пожалуйста, ознакомьтесь с нашим руководством по смягчению инъекций промптов перед предоставлением модели учетных данных для входа.

Если вы неоднократно сталкиваетесь с четким набором проблем или заранее знаете задачи, которые Claude нужно будет выполнить, используйте системный промпт для предоставления Claude явных советов или инструкций о том, как успешно выполнить задачи.

Системные промпты

Когда один из определенных Anthropic инструментов запрашивается через API Anthropic, генерируется системный промпт для использования компьютера. Он похож на системный промпт использования инструментов, но начинается с:

У вас есть доступ к набору функций, которые вы можете использовать для ответа на вопрос пользователя. Это включает доступ к изолированной вычислительной среде. У вас НЕТ в настоящее время возможности проверять файлы или взаимодействовать с внешними ресурсами, кроме как путем вызова нижеследующих функций.

Как и при обычном использовании инструментов, предоставленное пользователем поле system_prompt по-прежнему учитывается и используется при построении комбинированного системного промпта.

Понимание инструментов, определенных Anthropic

Поскольку это бета-версия, эти определения инструментов могут измениться.

Мы предоставили набор инструментов, которые позволяют Claude эффективно использовать компьютеры. При указании инструмента, определенного Anthropic, поля description и tool_schema не нужны и не разрешены.

Инструменты, определенные Anthropic, выполняются пользователем

Инструменты, определенные Anthropic, определяются Anthropic, но вы должны явно оценивать результаты инструмента и возвращать tool_results Claude. Как и с любым инструментом, модель не выполняет инструмент автоматически.

Мы предоставляем набор инструментов, определенных Anthropic, причем каждый инструмент имеет версии, оптимизированные как для Claude 3.5 Sonnet (новый), так и для Claude 3.7 Sonnet:

Поле type идентифицирует инструмент и его параметры для целей валидации, поле name - это имя инструмента, предоставляемое модели.

Если вы хотите предложить модели использовать один из этих инструментов, вы можете явно обратиться к инструменту по полю name. Поле name должно быть уникальным в списке инструментов; вы не можете определить инструмент с тем же именем, что и инструмент, определенный Anthropic, в том же вызове API.

Мы не рекомендуем определять инструменты с именами инструментов, определенных Anthropic. Хотя вы все еще можете переопределять инструменты с этими именами (если имя инструмента уникально в вашем блоке tools), это может привести к ухудшению производительности модели.

Включение возможности мышления в Claude 3.7 Sonnet

Claude 3.7 Sonnet представляет новую возможность “мышления”, которая позволяет вам видеть процесс рассуждений модели при работе над сложными задачами. Эта функция помогает вам понять, как Claude подходит к проблеме, и может быть особенно ценной для отладки или образовательных целей.

Чтобы включить мышление, добавьте параметр thinking в ваш API-запрос:

"thinking": {
  "type": "enabled",
  "budget_tokens": 1024
}

Параметр budget_tokens указывает, сколько токенов Claude может использовать для мышления. Это вычитается из вашего общего бюджета max_tokens.

Когда мышление включено, Claude будет возвращать свой процесс рассуждений как часть ответа, что может помочь вам:

  1. Понять процесс принятия решений модели
  2. Выявить потенциальные проблемы или неправильные представления
  3. Учиться на подходе Claude к решению проблем
  4. Получить больше видимости в сложных многошаговых операциях

Вот пример того, как может выглядеть вывод мышления:

[Thinking]
Мне нужно сохранить изображение кота на рабочий стол. Давайте разобьем это на шаги:

1. Сначала я сделаю скриншот, чтобы увидеть, что есть на рабочем столе
2. Затем я поищу веб-браузер для поиска изображений котов
3. После нахождения подходящего изображения мне нужно будет сохранить его на рабочий стол

Давайте начнем с создания скриншота, чтобы увидеть, что доступно...

Комбинирование использования компьютера с другими инструментами

Вы можете комбинировать обычное использование инструментов с инструментами, определенными Anthropic для использования компьютера.

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-3-7-sonnet-20250219",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1024,
        "display_height_px": 768,
        "display_number": 1
      },
      {
        "type": "text_editor_20250124",
        "name": "str_replace_editor"
      },
      {
        "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 мог использовать компьютер. Однако вы можете создать свою собственную среду для использования компьютера в соответствии с вашими потребностями. Вам понадобится:

  • Виртуализированная или контейнеризованная среда, подходящая для использования компьютера с Claude
  • Реализация как минимум одного из инструментов использования компьютера, определенных Anthropic
  • Цикл агента, который взаимодействует с API Anthropic и выполняет результаты tool_use с помощью ваших реализаций инструментов
  • API или пользовательский интерфейс, который позволяет пользовательский ввод для запуска цикла агента

Понимание ограничений использования компьютера

Функциональность использования компьютера находится в бета-версии. Хотя возможности Claude являются передовыми, разработчики должны знать о его ограничениях:

  1. Задержка: текущая задержка использования компьютера для взаимодействий человека с ИИ может быть слишком медленной по сравнению с обычными действиями компьютера, направляемыми человеком. Мы рекомендуем сосредоточиться на случаях использования, где скорость не критична (например, фоновый сбор информации, автоматизированное тестирование программного обеспечения) в доверенных средах.
  2. Точность и надежность компьютерного зрения: Claude может делать ошибки или галлюцинировать при выводе конкретных координат при генерации действий. Claude 3.7 Sonnet представляет возможность мышления, которая может помочь вам понять рассуждения модели и выявить потенциальные проблемы.
  3. Точность и надежность выбора инструментов: Claude может делать ошибки или галлюцинировать при выборе инструментов при генерации действий или предпринимать неожиданные действия для решения проблем. Кроме того, надежность может быть ниже при взаимодействии с нишевыми приложениями или несколькими приложениями одновременно. Мы рекомендуем пользователям тщательно формулировать промпты модели при запросе сложных задач.
  4. Надежность прокрутки: Хотя Claude 3.5 Sonnet (новый) имел ограничения с прокруткой, Claude 3.7 Sonnet представляет специальные действия прокрутки с контролем направления, что улучшает надежность. Теперь модель может явно прокручивать в любом направлении (вверх/вниз/влево/вправо) на указанное количество.
  5. Взаимодействие с электронными таблицами: Клики мышью для взаимодействия с электронными таблицами улучшились в Claude 3.7 Sonnet с добавлением более точных действий управления мышью, таких как left_mouse_down, left_mouse_up, и новой поддержки модификаторов клавиш. Выбор ячеек может быть более надежным при использовании этих точных элементов управления и комбинировании модификаторов клавиш с кликами.
  6. Создание учетных записей и генерация контента на социальных платформах и платформах связи: Хотя Claude будет посещать веб-сайты, мы ограничиваем его способность создавать учетные записи или генерировать и делиться контентом или иным образом заниматься имитацией человека в социальных сетях и платформах. Мы можем обновить эту возможность в будущем.
  7. Уязвимости: Уязвимости, такие как джейлбрейк или инъекция промптов, могут сохраняться в передовых системах ИИ, включая бета-версию API использования компьютера. В некоторых обстоятельствах Claude будет следовать командам, найденным в контенте, иногда даже в противоречии с инструкциями пользователя. Например, инструкции Claude на веб-страницах или содержащиеся в изображениях могут переопределить инструкции или привести к ошибкам Claude. Мы рекомендуем: a. Ограничить использование компьютера доверенными средами, такими как виртуальные машины или контейнеры с минимальными привилегиями b. Избегать предоставления доступа к использованию компьютера для конфиденциальных учетных записей или данных без строгого надзора c. Информировать конечных пользователей о соответствующих рисках и получать их согласие перед включением или запросом разрешений, необходимых для функций использования компьютера в ваших приложениях
  8. Неприемлемые или незаконные действия: В соответствии с условиями обслуживания Anthropic, вы не должны использовать компьютер для нарушения каких-либо законов или нашей Политики приемлемого использования.

Всегда тщательно проверяйте действия и логи использования компьютера Claude. Не используйте Claude для задач, требующих идеальной точности или конфиденциальной пользовательской информации без надзора человека.


Ценообразование

См. документацию по ценообразованию использования инструментов для подробного объяснения того, как оцениваются запросы API использования инструментов Claude.

Как подмножество запросов на использование инструментов, запросы на использование компьютера оцениваются так же, как и любой другой запрос API Claude.

Мы также автоматически включаем специальный системный промпт для модели, который включает использование компьютера.

МодельВыбор инструментаКоличество токенов системного промпта
Claude 3.5 Sonnet (новый)auto
any, tool
466 токенов
499 токенов
Claude 3.7 Sonnetauto
any, tool
466 токенов
499 токенов

В дополнение к базовым токенам, следующие дополнительные входные токены необходимы для инструментов, определенных Anthropic:

ИнструментДополнительные входные токены
computer_20241022 (Claude 3.5 Sonnet)683 токена
computer_20250124 (Claude 3.7 Sonnet)735 токенов
text_editor_20241022 (Claude 3.5 Sonnet)700 токенов
text_editor_20250124 (Claude 3.7 Sonnet)700 токенов
bash_20241022 (Claude 3.5 Sonnet)245 токенов
bash_20250124 (Claude 3.7 Sonnet)245 токенов

Если вы включите мышление с Claude 3.7 Sonnet, токены, используемые для мышления, будут учитываться в вашем бюджете max_tokens на основе budget_tokens, который вы указываете в параметре мышления.