Bromate
check.yml
publish.yml
Documentation
License
Release
Bromate는 웹 브라우저 상호 작용을 자동화하기 위한 에이전트 워크플로우의 기능을 탐구하는 실험적인 프로젝트입니다.
개요 (Overview)
Bromate는 대규모 언어 모델(LLM), 특히 Google의 Gemini를 활용하여 자연어로 표현된 사용자 요청을 이해하고 이를 웹 브라우징 작업을 자동화하는 일련의 액션으로 변환합니다.
Selenium을 사용하여 브라우저 제어 및 상호 작용 기능을 제공함으로써, 웹 브라우저 환경 내에서 복잡한 워크플로우를 원활하게 자동화할 수 있도록 합니다.
사전 준비 사항 (Prerequisites)
Bromate를 사용하기 전에, Gemini API에 대한 Google의 API 키를 발급받아야 합니다. 다음 단계를 따라 키를 얻을 수 있습니다:
- Google AI Studio로 이동하여 "API 키 받기(Get an API key)"를 클릭합니다.
- 비밀 키를 시스템의 환경 변수로 설정합니다.
개발 중 .env 파일에 API 키 설정하기:
프로젝트 저장소의 .env 파일에 API 키를 설정할 수 있습니다:
GOOGLE_API_KEY=YOUR_API_KEY
터미널에서 echo $GOOGLE_API_KEY를 입력하여 키가 올바르게 구성되었는지 확인할 수 있습니다.
설치 (Installation)
Bromate는 PyPI에서 사용할 수 있으며, pip을 사용하여 쉽게 설치할 수 있습니다:
사용법 (Usage)
Bromate를 사용하려면 자동화하려는 작업을 설명하는 자연어 쿼리를 제공하면 됩니다. 그러면 Bromate는 에이전트(Gemini)와 상호 작용하여 해당 쿼리를 해석하고 Selenium WebDriver가 실행할 일련의 액션을 생성합니다.
MLOps Demo
bromate "Open the https://MLOps.Community website. Click on the 'Join' link. Write the address 'hello@mlops'"
Example 2: Python 언어의 최신 버전 찾기:
Python Demo
bromate --interaction.stay_open=False --agent.name "gemini-1.5-pro-latest" "Go to Python.org. Click on the downloads page. Click on the PEP link for the future Python release. Summarize the release schedule dates."
Arguments
bromate -h
usage: bromate [-h] [--agent JSON] [--agent.api_key {SecretStr,null}] [--agent.name str] [--agent.temperature float] [--agent.candidate_count int]
[--agent.max_output_tokens int] [--agent.system_instructions str] [--action JSON] [--action.sleep_time float] [--driver JSON]
...
작동 방식 (How it Works)
Bromate는 루프(loop) 내에서 작동하며, 브라우저 작업을 자동화하기 위해 Gemini 에이전트와 Selenium WebDriver를 지속적으로 상호 작용합니다. 핵심 동작 방식은 다음과 같이 분석할 수 있습니다:
1. 초기화 (Initialization):
- 구성(예: Chrome 또는 Firefox)에 따라 Selenium WebDriver가 초기화됩니다. 이는 브라우저를 제어하기 위한 인터페이스를 제공합니다.
- Gemini LLM이 초기화되고 '도구(tools)'가 정의됩니다. 이 도구들은 모델이 WebDriver에게 지시할 수 있는 동작에 해당합니다. 사용 가능한 동작은
src/bromate/actions.py 파일에 정의되어 있습니다. 예시로는 다음과 같은 것들이 있습니다:
get: 브라우저에서 특정 URL을 엽니다.
click: CSS 선택자로 식별된 요소를 클릭합니다.
write: 요소에 텍스트를 입력합니다.
back: 이전 페이지로 이동합니다.
done: 자동화 작업을 종료했음을 알립니다.
2. 동작 선택 및 실행 (Action Selection and Execution):
- 사용자는 원하는 작업을 자동화하기 위해 자연어로 초기 질의를 제공합니다.
- 각 단계마다 Gemini 모델은 브라우저의 현재 상태(HTML 코드 및 스크린샷)를 분석하고, 사용자의 질의와 이전 상호작용을 고려하여 가장 관련성 높은 동작을 결정합니다.
- 선택된 동작은 Selenium WebDriver에 의해 실행되어 브라우저 상태를 수정합니다.
3. 피드백 루프 (Feedback Loop):
- 각 동작이 수행된 후, 업데이트된 페이지의 HTML 코드와 브라우저 창의 스크린샷이 Gemini 모델로 다시 전송됩니다. 이는 모델에게 자신이 취한 동작의 효과에 대한 피드백을 제공합니다.
- 이 루프는 모델이 작업 완료를 나타내는
done 동작을 실행하기로 결정하거나, 최대 상호작용 횟수에 도달할 때까지 계속됩니다.
이러한 반복적인 과정(iterative process)은 Bromate가 브라우저 환경의 변화에 동적으로 적응하고 자연어 지침을 기반으로 복잡한 자동화 작업을 수행할 수 있게 합니다.
개발 (Development)
Bromate의 개발 워크플로우는 Pyinvoke를 사용하여 관리됩니다. tasks/ 폴더에는 프로젝트 관리를 위한 다양한 작업이 포함되어 있습니다:
- checks.py: 코드 품질 검사(린팅(linting), 타입 검사(type checking), 테스트(testing), 보안) 작업을 수행합니다.
- cleans.py: 빌드 아티팩트 및 캐시를 정리하는 작업을 수행합니다.
- containers.py: Docker 컨테이너를 빌드하고 실행하는 작업을 수행합니다.
- docs.py: API 문서화를 생성하고 제공하는 작업을 수행합니다.
- formats.py: 코드 포맷팅 작업을 수행합니다.
- installs.py: 종속성(dependencies) 및 pre-commit 훅을 설치하는 작업을 수행합니다.
- packages.py: Python 패키지를 빌드하고 게시하는 작업을 수행합니다.
- publishes.py: 소프트웨어 저장소에 아티팩트를 게시하는 작업을 수행합니다.
라이선스 (License)
Bromate는 MIT License 하에 라이선스가 부여되었습니다. 자세한 내용은 LICENSE 파일을 참조하십시오.