다양한 LLM을 이용한 웹 테스트 자동화 (LaVague) - Python
현대 비즈니스 환경에서 테스트 자동화는 소프트웨어 개발 과정의 핵심 요소로 자리 잡았습니다. 많은 기업들이 효율성과 정확성을 높이기 위해 다양한 테스트 자동화 도구를 도입해 왔습니다. 그러나 기존 개발 방식과 레거시 코드의 복잡성은 자동화 테스트의 적용을 어렵게 만들었습니다. 과거의 규정과 업무 변화에 급히 대응하며 추가된 예외 로직은 코드를 복잡하게 만들었고, 이로 인해 단위 테스트가 사실상 불가능해지는 상황에 이르렀습니다. Ui-Path나 Auto Anywhere와 같은 솔루션을 활용하는 시도도 있었지만, 이러한 도구들 역시 한계에 직면했습니다. 또한, Selenium을 이용한 자동화 접근 방식은 HTML 구조와 DOM에 대한 깊은 이해를 요구하며, 개발자에게 상당한 어려움을 줍니다.
개발자들은 더 나은 솔루션을 모색하게 되었고, 이 과정에서 자연어 명령을 브라우저 인터랙션(Selenium Code)으로 변환하여 브라우저를 자동화하는 Python 프레임워크가 등장했습니다.
LaVague는 기본적으로 사용자가 자연어만으로 웹 브라우저의 자동화 작업을 할 수 있도록 하는 AI 도구입니다. Selenium을 사용한 테스트 자동화를 개발할 때, HTML 구조와 DOM에 대한 깊은 이해가 필요했던 것과 달리, LaVague를 이용하면 이러한 복잡성을 대폭 줄여줍니다. 사용자는 복잡한 코딩 없이도 자연어로 자신이 원하는 웹 자동화를 설명하기만 하면 됩니다. 이는 기존의 개발 지식이 필요했던 부분을 AI가 해결해 주는 혁신적인 접근 방식입니다.
물론, LaVague가 현재 초기 단계에 있기 때문에 아직 개선해야 할 부분이 많습니다. 그럼에도 불구하고, 생성형 AI를 활용한 이 방법은 웹 자동화 분야에서 매우 좋은 시도로 보입니다. 특히, LaVague의 현재 버전으로 다양한 테스트를 진행하면서 겪은 어려움을 직접 해결해 나가면서, 이 도구의 가능성과 한계를 보다 명확히 파악할 수 있었습니다. (현재 이 글을 작성하는 시점에도 수정된 버전으로 올라왔네요)
저는 개인적인 사용성을 위해 일부 기능을 수정하였는데, 이런 개선 작업을 통해 좀 더 다양한 AI 모델을 활용하거나 다양한 시도를 해볼 수 있었습니다. 이러한 내용을 공유하려고 합니다.
pip install gradio
pip install llama-index
pip install llama-index-retrievers-bm25
pip install llama-index-llms-huggingface
pip install llama-index-llms-azure-openai
pip install llama-index-llms-groq
pip install selenium
pip install python-dotenv
pip install tree-sitter
pip install tree-sitter-languages
# 디렉토리 구조
src/
├── main.py # 추가
└── lavague/
├── __init__.py
├── action_engine.py
├── command_center.py # 수정
├── default_prompt.md # 추가
├── defaults.py # 수정
├── embed_models.py # 추가
├── gemma_prompt.md # 추가
├── llm_models.py # 추가
└── prompts.py # 수정
# 사용자 편의성 향상
손쉬운 수행을 위한 main.py 추가
main.py 파일을 추가하여 사용자가 쉽게 LaVague를 실행할 수 있도록 하였습니다. 사용자는 main.py를 실행하여 간편하게 LaVague를 사용할 수 있습니다.
Prompt 관리 개선
Prompt(Default, Gemma)를 prompts.py에서 수정 가능한 마크다운(md) 파일로 저장하도록 변경하였습니다. 사용자는 마크다운 파일을 직접 수정하여 Prompt를 쉽게 관리할 수 있습니다. prompts.py에서 마크다운 파일을 불러와 Prompt를 사용할 수 있도록 하였습니다.
# 모델 관리 및 확장성 개선
LLM 모델과 Embedding 모델 분리
llm_models.py와 embed_models.py를 추가하여 LLM 모델과 Embedding 모델을 분리하여 관리할 수 있도록 하였습니다. 이를 통해 새로운 모델을 쉽게 추가하고 관리할 수 있습니다.
다양한 LLM 모델 지원
이전에 초당 300 토큰을 처리할 수 있는 Groq의 빠른 플랫폼 API에 대해 설명드린 바 있습니다. 빠른 처리 능력을 가진 Groq API를 LaVague에서도 활용할 수 있도록 하였습니다.
- OpenAI API("gpt-4-turbo-preview")를 사용하는 모델을 추가하였습니다.
- GROQ API("mixtral-8x7b-32768") 모델을 추가하여 선택할 수 있도록 하였습니다.
- 사용자는 필요에 따라 다양한 LLM 모델을 선택하여 사용할 수 있습니다.
Embedding 모델 추가
OpenAI Embedding("text-embedding-3-small") 모델을 추가하였습니다.
# 자동화 및 호환성 개선
Chrome 및 ChromeDriver 자동 다운로드
사용자의 운영 체제(OS)와 Chrome 버전을 자동으로 감지하여 적절한 ChromeDriver를 다운로드하도록 하였습니다. 현재 Windows, Linux, macOS를 지원하며, Chrome 버전이 변경되면 자동으로 업데이트됩니다. 사용자는 main.py의 chrome_paths 딕셔너리를 수정하여 Chrome의 경로를 변경할 수 있습니다.
환경변수 점검
필요한 환경 변수를 점검하고, 설정되지 않은 경우 알림 메시지를 출력하도록 하였습니다. 사용자는 필요한 환경 변수를 설정하여 LaVague를 원활하게 사용할 수 있습니다.
# 사용자 인터페이스 개선
Gradio UI 변경
- Model Combo를 추가하여 사용자가 모델을 선택할 수 있도록 하였습니다.
- URL 정보 위치를 변경하여 사용자가 쉽게 URL을 입력할 수 있도록 하였습니다.
- Text Area 위치를 변경하여 사용자가 편리하게 입력할 수 있도록 하였습니다.
- Example 위치를 변경하여 사용자가 예시를 쉽게 참조할 수 있도록 하였습니다.
# 언어 지원 확장
한글 명령 지원
기존에는 Gemma 모델만 사용하여 영문 명령만 처리할 수 있었습니다. 모델 추가로 인해 한글 명령도 지원하게 되었습니다. 사용자는 이제 한글로 명령을 입력하여 LaVague를 사용할 수 있습니다.
서두에서 언급했듯이, LaVague 프로젝트는 아직 초기 단계에 있으며, 완벽하게 작동하지 않는 경우도 종종 발생합니다. 이러한 초기 단계의 어려움에도 불구하고, 생성형 AI를 활용하여 웹 자동화를 달성하려는 LaVague의 접근 방식은 매우 유용한 시도 중 하나로 보입니다.
LaVague 프로젝트에 Anthropic API 방식과 Groq API 방식을 추가하는 내용의 PR을 제출했고, 이 제안이 수용되어 병합되면서 기여자로 등록되었습니다. 이 과정에 참여하며 매우 즐거웠습니다.
'Tech & Development > AI' 카테고리의 다른 글
간단한 RAG(Retrieval-Augmented Generation) 프로그램 만들기 (Python) (0) | 2024.08.15 |
---|---|
CodeGemma 활용 가이드: Gemma 기반의 코드 생성 모델 (4) | 2024.05.19 |
YOLOv9 Custom Data 학습 가이드 (24) | 2024.03.18 |
Claude 3 API 활용: Vision (OCR) - Python (24) | 2024.03.12 |
Claude 3 API 활용: Vision (시각적 질문 응답) - Python (2) | 2024.03.12 |
댓글
이 글 공유하기
다른 글
-
간단한 RAG(Retrieval-Augmented Generation) 프로그램 만들기 (Python)
간단한 RAG(Retrieval-Augmented Generation) 프로그램 만들기 (Python)
2024.08.15 -
CodeGemma 활용 가이드: Gemma 기반의 코드 생성 모델
CodeGemma 활용 가이드: Gemma 기반의 코드 생성 모델
2024.05.19 -
YOLOv9 Custom Data 학습 가이드
YOLOv9 Custom Data 학습 가이드
2024.03.18 -
Claude 3 API 활용: Vision (OCR) - Python
Claude 3 API 활용: Vision (OCR) - Python
2024.03.12