Computer Use

Agent Platform 컴퓨터 사용 샌드박스는 에이전트가 상호작용할 수 있는 안전하고 격리된 브라우저 환경을 제공합니다. 이러한 샌드박스를 사용하면 에이전트가 클릭, 사이트 탐색, 스크린샷 찍기와 같은 인간의 상호작용을 모방하는 작업을 자동화할 수 있습니다.

작동 방식

컴퓨터 사용 샌드박스를 만들면 Gemini Enterprise Agent Platform에서 웹브라우저 에이전트를 실행하는 컨테이너화된 환경을 프로비저닝합니다. 다음 두 가지 방법으로 브라우저를 제어할 수 있습니다.

  • API 요청: URL로 이동, 요소 클릭, 텍스트 입력과 같은 작업을 실행하도록 샌드박스에 명령어를 보냅니다.
  • 브라우저 제어: 표준 Chrome DevTools 프로토콜 (CDP) 연결을 사용하여 브라우저에 연결하면 브라우저 자동화 도구 (예: Playwright)를 사용하여 브라우저를 자동화할 수 있습니다.

고려사항

미리보기 중에 Agent Platform 컴퓨터 사용 샌드박스 지연 시간은 트래픽 양이 적은 경우에 최적화됩니다. 트래픽 양이 많으면 일시적으로 지연 시간이 길어질 수 있습니다.

API를 사용하여 브라우저 제어

API 요청을 샌드박스에 보내서 일반적인 브라우저 작업을 실행할 수 있습니다. 샌드박스는 격리된 환경 내에서 이러한 작업의 실행을 처리합니다.

지원되는 작업은 다음과 같습니다.

  • URL로 이동
  • 특정 좌표 클릭
  • 필드에 텍스트 입력
  • 스크린샷 찍기

명령어를 보내는 방법의 예시는 컴퓨터 사용 빠른 시작을 참조하세요.

CDP 연결을 사용하여 브라우저 제어

고급 자동화를 위해 Chrome DevTools 프로토콜 (CDP) 연결을 통해 샌드박스 브라우저에 연결할 수 있습니다. 이 방법을 사용하면 Playwright와 같은 표준 브라우저 자동화 도구를 사용하여 웹페이지와 상호작용할 수 있습니다.

Playwright를 샌드박스에 연결하려면 다음 단계를 따르세요.

  1. Python SDK generate_browser_ws_headers 메서드를 사용하여 샌드박스의 WebSocket URL과 필수 헤더를 생성합니다.

      service_account_email = "SERVICE_ACCOUNT_EMAIL"
      ws_url, ws_headers = client.agent_engines.sandboxes.generate_browser_ws_headers(
          sandbox_environment=sandbox,
          service_account_email=service_account_email,
      )
    
  2. Playwright의 connect_over_cdp 메서드를 사용하여 연결을 설정합니다.

    생성된 WebSocket URL과 헤더를 사용하여 Playwright를 통해 CDP로 연결합니다:

      import asyncio
      from playwright.async_api import async_playwright
      import nest_asyncio
      nest_asyncio.apply()
    
      async def connect_over_cdp(ws_url, ws_headers):
          async with async_playwright() as p:
              try:
                  browser = await p.chromium.connect_over_cdp(
                      endpoint_url=ws_url,
                      headers=ws_headers
                  )
                  print("Successfully connected to browser over CDP.")
    
                  # You can now interact with the browser
                  page = browser.contexts[0].pages[0]
                  await page.goto("https://www.example.com")
                  print(f"Page title: {await page.title()}")
    
                  await browser.close()
                  print("Browser connection closed.")
              except Exception as e:
                  print(f"An error occurred: {e}")
    
      # Run CDP connection
      asyncio.run(connect_over_cdp(ws_url, ws_headers))
    

라이브 스트리밍 뷰

컴퓨터 사용 샌드박스는 라이브 스트리밍 뷰 (VNC)를 지원하므로 에이전트의 작업을 실시간으로 시각적으로 모니터링할 수 있습니다. 에이전트의 동작을 디버그하고 관찰할 수 있습니다.

예를 들어 noVNC를 사용하여 WebSocket을 통해 샌드박스에 연결할 수 있습니다.

다음 단계