smolagents Vision 지원 업데이트

Hugging Face는 smolagents에 비전 지원을 통합하여, 에이전트 파이프라인 내에서 시각 언어 모델(VLMs)을 네이티브하게 사용할 수 있도록 했습니다. 이번 업데이트를 통해 에이전트는 시각적 정보를 처리할 수 있게 되었으며, 객체 위치, 색상 코드 메시지, 아이콘과 같은 중요한 데이터가 텍스트 추출 과정에서 손실되는 "비전 벽(vision wall)" 문제를 극복할 수 있습니다.

네이티브 비전 통합 방법

smolagents는 시각 데이터가 정적인지 동적인지에 따라 에이전트에게 이미지를 전달하는 두 가지 주요 방법을 제공합니다.

초기화 시 정적 이미지 입력

Document AI 또는 시각적 요소가 포함된 긴 PDF 분석과 같은 유스케이스의 경우, 작업 시작 시 이미지를 한 번 전달할 수 있습니다. 이는 run 메서드에 이미지 리스트를 제공함으로써 수행됩니다:

agent.run("Describe these images:", images=[image_1, image_2])

이 입력값들은 TaskSteptask_images 속성에 저장되며, 프롬프트와 함께 모델에 전달됩니다.

콜백을 통한 동적 이미지 입력

웹 브라우저와 같이 시각적 상태가 변하는 환경에서는 이미지를 에이전트의 메모리에 동적으로 추가해야 합니다. smolagentsMultiStepAgent 클래스와 그 ReAct 프레임워크 루프를 통해 이를 구현합니다.

ReAct 루프의 각 단계가 끝날 때, 에이전트는 agent.step_callbacks에 정의된 모든 함수를 실행합니다. 개발자는 커스텀 콜백을 생성하여 에이전트 메모리의 ActionStepobservation_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와 같은 고성능 모델이 복잡한 시각적 탐색 작업에서 더 높은 성공률을 보인다고 언급합니다.

Sources