Building a general-purpose accessibility agent—and what we learned in the process
개요
GitHub는 현재 실험적인 범용 접근성 에이전트(general-purpose accessibility agent)를 파일럿 테스트하며, 엔지니어들에게 적시의 신뢰할 수 있는 접근성 관련 질문 답변 제공과 프로덕션 환경으로 출시되기 전 간단하고 객관적인 접근성 문제를 자동으로 감지하고 수정하는 두 가지 목표를 달성하고자 합니다.
주요 내용
* 에이전트의 목표:
* GitHub Copilot CLI 및 Copilot VS Code 통합에서 엔지니어들에게 접근성 관련 질문에 대한 즉각적이고 신뢰할 수 있는 답변 제공.
* 프론트엔드 코드 변경 사항을 자동으로 평가하여 간단하고 객관적인 접근성 문제를 감지하고 수정.
* 문제 유형 및 해결률:
* 에이전트는 현재까지 3,535개의 Pull Request를 검토했으며, 68%의 해결률을 보임.
* 가장 빈번하게 발생하는 상위 5가지 문제 유형은 다음과 같음:
1. 보조 기술(assistive technologies)에 명확한 구조와 관계 제공.
2. 대화형 컨트롤에 명확하고 간결한 이름 제공.
3. 중요 공지에 대해 사용자가 인지하도록 함.
4. 비텍스트 콘텐츠에 대한 텍스트 대체 제공.
5. 페이지 및 뷰 간 키보드 포커스 이동을 논리적인 순서로 구성.
* 접근성 에이전트 개발 접근 방식:
* 마인드셋: 디지털 경험에도 사회 모델(social model of disability) 접근 방식을 적용하여, 환경 구축 방식 때문에 발생하는 접근성 장벽을 해소하는 데 초점. 에이전트는 "만능 해결책"이 아니며, 동료들의 노력을 보강하는 역할을 함.
* 과거 노력 활용: 유럽 접근성법(European Accessibility Act) 및 Americans with Disabilities Act와 같은 법규 준수 중요성 강조. LLM 에이전트는 접근성 트리(accessibility tree)를 읽고 조치를 취할 수 있음.
* 수동 카탈로그화 및 수정의 가치: LLM은 기존의 접근성이 떨어지는 코드로 인해 접근성 안티패턴(accessibility antipatterns)을 생성하는 경향이 있어, 수동으로 카탈로그화 및 수정된 접근성 문제 데이터를 에이전트 학습에 활용하는 것이 효과적임.
* 효율적인 토큰 소비:
* 서브 에이전트(Sub-agents) 활용: 단일 에이전트의 한계를 극복하기 위해 두 개의 전용 서브 에이전트(수동 검토 및 연구 담당, 능동적 구현 담당)를 사용. 서브 에이전트는 샌드박스 환경에서 작동하며 구조화된 템플릿화된 출력을 생성.
* 선형적 명령어 실행: 에이전트 지침을 고정된 순서로 실행하여 결과의 정확성 확보.
* 템플릿 스키마(Template Schema) 사용: 검토자 템플릿 스키마(무엇을 감사하고 관련 정보를 어떻게 찾을지)와 구현자 템플릿 스키마(무엇을 수정하고 어떻게 수정할지)를 사용하여 일관성 유지.
* 제한 사항 인지:
* 코드 복잡성 평가: 에이전트가 접근 가능하다고 "생각하는" 비접근성 솔루션을 재작업하는 데 드는 비용과 시간을 피하기 위해 코드 복잡성을 평가하는 스크립트 사용.
* 고위험 패턴(High-risk patterns) 식별: drag and drop, toasts, rich text editors, tree views, data grids와 같이 보조 기술과의 작동이 어려운 패턴에 대한 코드 생성을 회피하도록 지시.
* 행동 편향 감소: LLM이 코드를 생성하려는 경향을 방지하기 위한 "게임 방지" 지침 구현.
* 프로그래밍 방식으로 결정 가능한 문제의 한계: WCAG Level A 및 AA 성공 기준의 약 36%는 자동화된 코드 검사기로 감지할 수 없으므로, 디자인 및 프로토타이핑 단계에서 수동으로 접근성 장벽을 식별하는 것이 중요.
* 결과 평가 및 조정: 에이전트 출력의 정확성과 효과성을 판단하기 위해 주기적인 수동 검토 및 PR 리뷰어 피드백 수집.
시사점
GitHub의 범용 접근성 에이전트 실험은 LLM 에이전트가 기존 접근성 노력을 보강하고, 수동으로 감사 및 수정된 데이터를 통해 효과를 높이며, 서브 에이전트 및 선형적 실행 방식을 통해 효율성을 개선할 수 있음을 보여줍니다. 이러한 접근 방식은 에이전트의 한계를 인지하고 주기적인 검토 및 조정을 통해 더 나은 접근성 경험을 제공하는 데 기여할 수 있습니다.
댓글
GitHub Discussions