smolagents Vision 지원 업데이트
Hugging Face는 smolagents에 비전 지원을 통합하여, 에이전트 파이프라인 내에서 시각 언어 모델(VLMs)을 네이티브하게 사용할 수 있도록 했습니다. 이번 업데이트를 통해 에이전트는 시각적 정보를 처리할 수 있게 되었으며, 객체 위치, 색상 코드 메시지, 아이콘과 같은 중요한 데이터가 텍스트 추출 과정에서 손실되는 "비전 벽(vision wall)" 문제를 극복할 수 있습니다.
네이티브 비전 통합 방법
smolagents는 시각 데이터가 정적인지 동적인지에 따라 에이전트에게 이미지를 전달하는 두 가지 주요 방법을 제공합니다.
초기화 시 정적 이미지 입력
Document AI 또는 시각적 요소가 포함된 긴 PDF 분석과 같은 유스케이스의 경우, 작업 시작 시 이미지를 한 번 전달할 수 있습니다. 이는 run 메서드에 이미지 리스트를 제공함으로써 수행됩니다:
agent.run("Describe these images:", images=[image_1, image_2])
이 입력값들은 TaskStep의 task_images 속성에 저장되며, 프롬프트와 함께 모델에 전달됩니다.
콜백을 통한 동적 이미지 입력
웹 브라우저와 같이 시각적 상태가 변하는 환경에서는 이미지를 에이전트의 메모리에 동적으로 추가해야 합니다. smolagents는 MultiStepAgent 클래스와 그 ReAct 프레임워크 루프를 통해 이를 구현합니다.
ReAct 루프의 각 단계가 끝날 때, 에이전트는 agent.step_callbacks에 정의된 모든 함수를 실행합니다. 개발자는 커스텀 콜백을 생성하여 에이전트 메모리의 ActionStep 내 observation_images 속성에 새로운 이미지를 로그로 남길 수 있습니다. 이를 통해 모델은 다음 단계를 결정하기 전에 이전 작업의 즉각적인 영향을 시각적으로 확인할 수 있습니다.
비전 기능이 탑재된 웹 브라우저 에이전트 구축하기
Hugging Face는 helium 라이브러리(selenium 기반)와 CodeAgent를 사용하여 자율 웹 브라우징 에이전트를 만드는 과정을 통해 이러한 업데이트의 유용성을 보여줍니다.
기술적 구현
비전 기능이 있는 브라우징 에이전트를 구현하기 위해 다음 구성 요소들이 활용됩니다:
- Custom Tools: 자동화 라이브러리가 처리하기 어려운 동작을 위해 특화된 도구들이 생성됩니다. 예를 들어, 탐색을 위한
go_back()이나 CSS 선택자를 사용하여 모달을 닫는close_popups()등이 있습니다. - Vision Callback: 브라우저의 현재 상태를 PNG로 캡처하고, 이를 PIL 이미지로 변환한 뒤, 매 단계가 끝날 때
step_log.observations_images에 할당하는save_screenshot콜백이 구현됩니다. - Model Configuration: 이미지 지원은 모든 모델에서 사용할 수 있습니다. VLM과 함께
TransformersModel을 사용할 때, 이미지가 올바르게 처리되도록 초기화 시flatten_messages_as_text파라미터를False로 설정해야 합니다.
예시 워크플로우
제공된 예시에서 CodeAgent는 가장 인기 있는 GitHub 저장소의 상위 저자의 총 커밋 수를 찾는 작업을 수행합니다. 에이전트는 페이지 상호작용을 위한 helium, 탐색을 위한 커스텀 도구, 그리고 페이지 레이아웃을 시각적으로 해석하고 올바른 프로필로 이동하기 위한 VLM(예: Qwen2VL-72B)을 조합하여 사용합니다.
모델 호환성 및 성능
비전 지원은 smolagents 모델 제품군 전체에 통합되어 있습니다. 비전 기반 작업의 효과는 사용되는 VLM의 성능에 크게 좌우됩니다. Hugging Face는 Qwen2VL-72B 또는 GPT-4o와 같은 고성능 모델이 복잡한 시각적 탐색 작업에서 더 높은 성공률을 보인다고 언급합니다.