원본 게시물에 개인 정보가 실수로 포함되어 삭제 후 재게시되었습니다.
제 개인용 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]