Amazon Nova Act는 Amazon 인공지능 일반 지능(AGI)이 발표한 연구 미리보기로, 개발자들이 웹 브라우저 내에서 작업을 수행할 수 있는 에이전트를 구축할 수 있도록 해줍니다. 이 기술은 자연어 지침과 Python 스크립팅, Playwright 자동화를 결합하여 웹사이트를 탐색하고, 버튼을 클릭하고, 양식을 작성하며, 데이터를 동적으로 추출할 수 있게 합니다.
전통적인 웹 자동화 도구가 불안정한 스크립트와 웹사이트 특정 코드를 사용하는 것과 달리, Nova Act는 AI를 사용하여 웹사이트와 보다 적응적으로 상호작용하며, 지속적인 유지보수 없이도 웹 인터페이스의 변화를 처리할 수 있도록 돕습니다.

직관적인 인터페이스, 협업 기능 및 강력한 자동화 기능을 갖춘 Apidog는 개발 시간을 크게 단축시키면서 API 품질을 향상시킵니다.

전제 조건
Amazon Nova Act를 시작하기 전에 필요한 것은 다음과 같습니다:
- 운영 체제: MacOS 또는 Ubuntu (Windows는 현재 지원되지 않음)
- Python: 3.10버전 이상
- Amazon 계정: API 키 생성을 위해 필요
- 위치 요구 사항: Amazon Nova Act는 현재 미국에서만 연구 미리보기로 제공됨
Amazon Nova Act API 키 받기
Amazon Nova Act를 사용하려면:
- nova.amazon.com/act로 이동하여 Amazon 계정으로 로그인합니다.
- 탐색 창의 Labs 섹션에서 "Act"를 선택합니다.
- API 키를 생성합니다.
- 접속이 즉시 이루어지지 않으면 대기자 명단에 올려지고 접속이 허용되면 이메일로 알림을 받게됩니다.
설치
API 키를 받은 후:
# SDK 설치
pip install nova-act
# 환경 변수로 API 키 설정
export NOVA_ACT_API_KEY="your_api_key"
참고: Nova Act를 처음 실행하면 Playwright 모듈을 설치하는 데 1-2분이 걸릴 수 있습니다. 이후 실행은 더 빠르게 시작됩니다.
기본 사용법
문서에서 가져온 간단한 예시로 시작해 보겠습니다:
from nova_act import NovaAct
with NovaAct(starting_page="https://www.amazon.com") as nova:
nova.act("커피 메이커 검색")
nova.act("첫 번째 결과 선택")
nova.act("장바구니에 담기 버튼이 보일 때까지 아래로 스크롤한 후 '장바구니에 담기' 클릭")
이 스크립트는:
- 크롬을 열고 아마존으로 이동합니다.
- 커피 메이커를 검색합니다.
- 첫 번째 결과를 선택합니다.
- "장바구니에 담기" 버튼을 찾아 클릭합니다.
상호작용 모드
Nova Act는 실험을 위해 상호작용 방식으로 사용할 수 있습니다:
# Python 셸 시작
$ python
>>> from nova_act import NovaAct
>>> nova = NovaAct(starting_page="https://www.amazon.com")
>>> nova.start()
>>> nova.act("커피 메이커 검색")
첫 번째 작업이 완료된 후, 다음 단계로 계속 진행합니다:
>>> nova.act("첫 번째 결과 선택")
문서에 따르면, Nova Act는 현재 iPython을 지원하지 않으며 표준 Python 셸을 사용해야 합니다.
효과적인 프롬프트 전략
공식 문서에서는 신뢰성을 위해 작업을 더 작은 단계로 나누라고 강조합니다:
1. 구체적이고 명확하게
❌ 하지 마세요
nova.act("내 주문 내역에서, India Palace에서 가장 최근 주문을 찾아서 다시 주문해 주세요")
✅ 하세요
nova.act("햄버거 메뉴 아이콘을 클릭하고, 주문 내역으로 가서, India Palace에서 가장 최근 주문을 찾아서 다시 주문해 주세요")
2. 복잡한 작업을 더 작은 단계로 나누기
❌ 하지 마세요
nova.act("내가 선택한 별점이 가장 높은 100달러 이하의 호텔을 예약해줘")
✅ 하세요
nova.act(f"휴스턴에서 {startdate}부터 {enddate}까지 호텔 검색")
nova.act("평균 고객 리뷰로 정렬")
nova.act("100달러 이하의 첫 번째 호텔에서 예약하기 클릭")
nova.act(f"{blob}에 따라 내 이름, 주소 및 생년월일 입력")
웹 페이지에서 데이터 추출하기
Nova Act는 Pydantic 모델을 사용하여 구조화된 데이터 추출을 지원합니다:
from pydantic import BaseModel
from nova_act import NovaAct, BOOL_SCHEMA
class Book(BaseModel):
title: str
author: str
class BookList(BaseModel):
books: list[Book]
def get_books(year: int) -> BookList | None:
"""해당 연도의 NYT 베스트셀러를 가져와 BookList로 반환합니다."""
with NovaAct(starting_page=f"https://en.wikipedia.org/wiki/List_of_The_New_York_Times_number-one_books_of_{year}#Fiction") as nova:
result = nova.act(
"소설 목록에 있는 책을 반환합니다.",
schema=BookList.model_json_schema()
)
if not result.matches_schema:
# Act 응답이 스키마와 일치하지 않음
return None
# JSON을 Pydantic 모델로 파싱
book_list = BookList.model_validate(result.parsed_response)
return book_list
단순한 부울 응답의 경우, 내장된 BOOL_SCHEMA
를 사용합니다:
result = nova.act("내가 로그인했나요?", schema=BOOL_SCHEMA)
if result.matches_schema:
if result.parsed_response:
print("로그인되었습니다.")
else:
print("로그인되지 않았습니다.")
여러 브라우저 세션을 이용한 병렬 처리
GitHub 문서에서는 Nova Act가 여러 브라우저 세션을 이용한 병렬 처리를 지원한다고 확인합니다:
from concurrent.futures import ThreadPoolExecutor, as_completed
from nova_act import NovaAct, ActError
# 결과를 여기에 집계합니다.
all_books = []
# 최대 동시 브라우저 세션 설정
with ThreadPoolExecutor(max_workers=10) as executor:
# 여러 해의 책들을 병렬로 가져옵니다.
future_to_books = {
executor.submit(get_books, year): year
for year in range(2010, 2025)
}
# 결과 수집
for future in as_completed(future_to_books.keys()):
try:
year = future_to_books[future]
book_list = future.result()
if book_list is not None:
all_books.extend(book_list.books)
except ActError as exc:
print(f"오류로 인해 {year}년을 건너뜁니다: {exc}")
인증 및 브라우저 상태
인증이 필요한 웹사이트의 경우, Nova Act는 기존의 Chrome 프로필을 사용할 수 있는 옵션을 제공합니다:
import os
from nova_act import NovaAct
user_data_dir = "path/to/my/chrome_profile"
os.makedirs(user_data_dir, exist_ok=True)
with NovaAct(
starting_page="https://amazon.com/",
user_data_dir=user_data_dir,
clone_user_data_dir=False
) as nova:
input("웹사이트에 로그인한 후 Enter를 눌러주세요...")
이를 위한 내장 도우미 스크립트도 있습니다:
python -m nova_act.samples.setup_chrome_user_data_dir
민감한 정보 처리
문서는 민감한 데이터를 처리하는 것에 대해 특별히 경고합니다:
# 올바르게 로그인합니다.
nova.act("사용자 이름 janedoe를 입력하고 비밀번호 필드를 클릭하세요.")
# 민감한 데이터에 대해서는 직접 Playwright 사용
nova.page.keyboard.type(getpass()) # getpass()는 비밀번호를 안전하게 수집합니다.
# 자격 증명이 입력된 후 계속 진행
nova.act("로그인")
보안 경고: 문서에서는 실행 중에 캡처된 스크린샷이 보이는 모든 민감한 정보를 캡처한다고 주의합니다.
추가 기능
캡차 작업
result = nova.act("화면에 캡차가 있나요?", schema=BOOL_SCHEMA)
if result.matches_schema and result.parsed_response:
input("캡차를 푸시고 완료되면 Enter를 누르세요.")
파일 다운로드
with nova.page.expect_download() as download_info:
nova.act("다운로드 버튼 클릭")
# 영구적으로 저장
download_info.value.save_as("my_downloaded_file")
세션 기록하기
nova = NovaAct(
starting_page="https://example.com",
logs_directory="/path/to/logs",
record_video=True
)
실제 예: 아파트 검색
dev.to 기사에서는 기차역 근처에서 아파트를 찾는 실제 예를 보여줍니다. 다음은 그 예의 핵심 구조입니다:
from concurrent.futures import ThreadPoolExecutor, as_completed
import pandas as pd
from pydantic import BaseModel
from nova_act import NovaAct
class Apartment(BaseModel):
address: str
price: str
beds: str
baths: str
class ApartmentList(BaseModel):
apartments: list[Apartment]
class CaltrainBiking(BaseModel):
biking_time_hours: int
biking_time_minutes: int
biking_distance_miles: float
# 먼저 아파트 찾기
with NovaAct(starting_page="https://zumper.com/", headless=headless) as client:
client.act(
"쿠키 배너를 닫으세요. "
f"{caltrain_city}, CA 근처의 아파트를 검색한 후, "
f"{bedrooms} 침실 및 {baths} 욕실로 필터링하세요."
)
# 아파트 목록을 스키마와 함께 추출
result = client.act(
"현재 보이는 아파트 목록을 반환합니다.",
schema=ApartmentList.model_json_schema()
)
# 그 후 자전거 거리를 병렬로 확인
with ThreadPoolExecutor() as executor:
# 자전거 거리 확인을 위한 병렬 작업 제출
future_to_apartment = {
executor.submit(add_biking_distance, apartment, caltrain_city, headless): apartment
for apartment in all_apartments
}
# 결과 처리
for future in as_completed(future_to_apartment.keys()):
# 결과 수집 및 처리
pass
# 결과 정렬 및 표시
apartments_df = pd.DataFrame(apartments_with_biking)
이 예는 Nova Act가 다음을 수행할 수 있음을 보여줍니다:
- 웹사이트에서 구조화된 데이터 추출
- 여러 브라우저 세션을 병렬로 처리
- 다양한 정보 출처를 결합
알려진 제한 사항
문서에 따르면, Nova Act에는 다음과 같은 제한사항이 있습니다:
- 브라우저 전용: 비 브라우저 응용 프로그램과 상호작용할 수 없음
- 제한된 신뢰성: 고수준 프롬프트에 어려움을 겪을 수 있음
- UI 제약: 마우스를 올려놓는 요소와 상호작용할 수 없음
- 브라우저 모달: 권한 요청과 같은 브라우저 창 모달과 상호작용할 수 없음
- 지리적 제한: 현재 미국 내에서만 이용 가능
- 연구 상태: 실험적 미리보기이며, 생산 서비스 아님
NovaAct 생성자 옵션
문서에 따르면, NovaAct를 초기화할 때 다음과 같은 매개변수를 나열합니다:
NovaAct(
starting_page="https://example.com", # 필수: 시작할 URL
headless=False, # 브라우저를 보이게 실행할지 여부
quiet=False, # 로그 억제 여부
user_data_dir=None, # Chrome 프로필 경로
nova_act_api_key=None, # API 키 (대신 env var 사용 가능)
logs_directory=None, # 로그 저장 경로
record_video=False, # 세션 기록 여부
# 문서에 문서화된 기타 옵션들
)
결론
Amazon Nova Act는 AI와 전통적인 자동화 기술을 결합하여 브라우저 자동화에 대한 혁신적인 접근 방식을 나타냅니다. 여전히 제한 사항이 있는 연구 미리보기이지만, 웹 자동화를 더욱 신뢰할 수 있고 적응력 있게 만들기 위한 유망한 방향을 제시합니다.
Nova Act의 주요 장점은 복잡한 브라우저 상호작용을 자연어 지침을 사용하여 분리된 신뢰할 수 있는 단계로 나눌 수 있다는 점입니다. 이러한 지침은 Python 코드와 결합되어 유연하고 강력한 자동화 워크플로우를 구축할 수 있습니다.
현재 연구 미리보기 상태이며 미국에서만 사용 가능하므로 지속적인 변화와 개선이 예상됩니다. 가장 최신 정보를 얻으려면 항상 GitHub와 nova.amazon.com/act의 공식 문서를 참조하세요.