더 작은 모델이 더 큰 작업을 더 효과적으로 수행하도록 만드는 "애플리케이션" 활용법
요약
작은 규모의 로컬 모델이 복잡한 작업을 수행할 수 있도록 에이전트에게 전용 애플리케이션(워크플로우) 환경을 제공하는 아키텍처를 소개합니다. 에이전트가 특정 앱 내에서 제한된 도구와 컨텍스트를 사용하게 함으로써 모델의 성능 한계를 극복하고 정확도를 높이는 방법론을 다룹니다.
핵심 포인트
- 에이전트에게 전용 앱과 제한된 도구 세트를 부여하여 컨텍스트 효율성 극대화
- 로컬 모델의 텍스트 오류 문제를 해결하기 위해 메뉴 기반의 단순화된 인터페이스 활용
- 애플리케이션 간 상태 유지(persistent state)를 통해 연속적인 작업 수행 가능
- Gemma 4와 같은 소형 모델에서도 효과적인 에이전트 워크플로우 구현 가능성 증명
원본 게시물에 개인 정보가 실수로 포함되어 삭제 후 재게시되었습니다.
제 개인용 JARVIS를 위해 구상한 아이디어의 데모입니다. 에이전트가 무엇을 보고 있는지 쉽게 확인할 수 있도록 분위기 있게 코딩된 브라우저 기반 디스플레이를 사용하여 빠르게 제작했습니다.
에이전트에게 전용 애플리케이션과 유사한 뷰를 제공하여 제한된 범위를 부여합니다. 에이전트는 이러한 애플리케이션 내부에서 수행할 수 있는 제한된 수의 액션(actions)을 가집니다. 또한, 뷰가 컨텍스트(context)에서 제거될 때(존재에 대한 참조와 다시 돌아갈 수 있는 도구는 남겨두되) 정보를 전달할 수 있도록 전용 클립보드(clipboard)와 스크래치 패드(scratch pad)를 갖추고 있습니다. 현재까지는 두 개의 애플리케이션만 만들었습니다. 하나는 모델을 위한 기능적인 텍스트 전용 웹 브라우저이고, 다른 하나는 에이전트의 시스템(예: 내 PC) 하에서 컴퓨터를 제어하기 위한 인터페이스입니다.
이 애플리케이션들(스크립트 내에서는 워크플로우(workflows)라고 불림)은 기존에 컴퓨터 제어 앱을 위한 20개의 서로 다른 도구와 웹 브라우징 앱을 위한 3개의 도구를 대체합니다. 제가 이 방식으로 해결하고자 했던 문제는 로컬 모델(local models)이 URL이나 정확해야 하는 기타 텍스트를 망가뜨리는 경향이 있다는 점이었으며, 이를 해결하기 위해 단순한 동사와 숫자로 탐색하는 메뉴(1번 열기, 2번 복사 등)를 만들었습니다.
에이전트는 필요한 만큼 애플리케이션을 열 수 있으며, 각 애플리케이션은 지속적인 상태(persistent state)를 유지합니다. 따라서 에이전트가 하나를 떠났다가 다시 돌아오면, 떠났던 상태 그대로 유지됩니다. 에이전트는 이러한 애플리케이션들을 떠나 나머지 약 100여 개의 도구(한 번에 모두 사용 가능한 것은 아니며 그룹 단위로 요청 가능)에 접근할 수 있는 훨씬 더 일반적인 모드로 돌아갈 수 있습니다.
여기서 제가 에이전트에게 준 작업은, 에이전트가 관리하도록 설계된 제 프로젝트 카(Project car)를 위한 (제가 예상하기에) 희귀 부품을 찾는 것이었습니다. 에이전트는 지난 대화들을 통해 구하기 어려운 부품을 판매하는 몇몇 좋은 출처를 알고 있었기에, 검색을 위해 해당 부품이 있을 법한 곳을 선택했습니다.
이것은 gemma4 26b(unsloth QaT Q4_K_XL)와 함께 사용하도록 특별히 설계되었지만, 이 테스트는 시스템이 훨씬 더 작고 성능이 낮은 모델에서도 작동할 수 있음을 보여주기 위해 gemma4 E4B(마찬가지로 unsloth QaT Q4_K_XL)에서 실행되었습니다. 흥미롭게도, 이 모델은 현재의 워크플로우 (workflow) 설정 하에서 실제로 26b보다 더 나은 성능을 보이는 것으로 보입니다. 저는 26b 모델이 제가 제공한 전용 계획 도구 (planning tools)에 대해 거부감을 보이는 것을 발견했습니다 (이 도구는 매 턴/도구 라운드마다 작업에 대한 "계획"을 포함하는 지속적인 텍스트 블록을 컨텍스트 (context)의 맨 끝에 배치합니다).
lama.cpp에 따르면, 모델은 MTP 정확도에 따라 70에서 85 t/s 사이의 속도를 내고 있으며, 이 작업이 끝날 무렵 약 10k 토큰의 컨텍스트에서 800 t/s의 프리필 (prefill) 속도를 기록했습니다. 이는 vulkan 백엔드를 사용하는 RX6600XT에서 실행되고 있습니다.
제가 이런 방식을 처음 생각해낸 사람은 아닐 것이며, 제가 한 것보다 더 잘 구현할 수 있는 방법이 분명히 있을 것이라고 확신합니다. 하지만 저처럼 자신만의 에이전트 아키텍처 (agent architecture)를 구축하는 다른 분들에게 이 아이디어가 유용할 수도 있기에 공유하고 싶었습니다. 핵심 아이디어는 에이전트가 이러한 애플리케이션 (apps)으로 들어갈 때 제한된 도구 세트 (toolset)와 적은 양의 컨텍스트 (context)만을 가지고 들어간다는 점입니다. 사용자 입력, 에이전트가 유지 관리하는 몇 가지 필드 (때로는 하네스 (harness)에 의해, 때로는 모델 자체에 의해), 그리고 그 외에는 그리 많은 것이 함께 전달되지 않습니다. 애플리케이션을 떠날 때 전체 컨텍스트 (full context)가 다시 전달됩니다.
/u/Mrinohk 제출, r/LocalLLaMA
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기