llama-server의 WebUI 내에서 llama.cpp 네이티브 도구를 사용하여 웹 RAG(web_fetch 등)를 수행하는 방법
요약
llama.cpp의 llama-server에 추가된 네이티브 도구 기능을 활용하여 웹 RAG를 구현하는 방법을 설명합니다. firejail과 smolmachines를 이용한 다중 샌드박싱 환경을 구축하여 exec_shell_command를 안전하게 실행하는 워크플로우를 제안합니다.
핵심 포인트
- llama-server의 네이티브 도구(exec_shell_command) 활성화 방법
- firejail과 smolmachines를 활용한 다중 샌드박싱 보안 계층 구축
- OCI 컨테이너 기반의 격리된 환경에서 웹 콘텐츠 수집(wget) 구현
- 사용자 권한 분리를 통한 시스템 보호 및 안전한 에이전트 실행
다른 몇몇 lllmers 동료들과 마찬가지로, 저도 며칠 전 놀라운 llama.cpp 프로젝트가 서버에 네이티브 도구 (native tools) 기능을 막 추가했다는 사실을 발견했습니다.
llama-server에서 관련 옵션들을 활성화한 후, 가장 무해한 옵션인 get_datetime을 가지고 약간 놀아본 뒤, 저는 큰 결심을 하고 최종 보스인 exec_shell_command를 조심스럽게 활성화했습니다.
최근 pi 코딩 에이전트 (pi coding agent)와 관련된 샌드박싱 (sandboxing) 노력에 이어, 또 다른 환상적인 도구로서, 저는 멀티 샌드박싱 (multi-sandboxing)을 통해 Linux에서 이를 더 안전하게 사용할 수 있도록 이 워크플로우를 구현했습니다.
단계 0) 네이티브 도구를 위한 llama-server 옵션 활성화
단계 1) firejail을 시스템 전체에 설치
단계 2) 권한 상승을 방지하거나 제 개인 사용자 워크스페이스의 홈 디렉토리를 망가뜨리는 것을 막기 위해 vmagents (일명 "virtual machine agent smith")라는 이름의 새로운 Linux 사용자 생성
단계 3) vmagents 사용자로 로그인하여 사용하기 쉬운 OCI 가상 머신 컨테이너 하네스 (OCI virtual machine containers harness)인 smolmachines 설치
단계 4) minivm이라는 이름의 VM을 생성하고 이를 시작하여, 최소한의 구성인 busybox 명령 기반의 Alpine Linux OCI 이미지를 가져오기
단계 5) vmagents 실행 디렉토리에 샌드박스 VM을 구동하고, 이를 추가적인 firejail 샌드박스 내에서 특정 명령을 실행한 뒤, 종료하는 스크립트 minivm-exec를 생성 (및 실행 가능하게 설정)
단계 6) 제 평소 사용자 워크스페이스 실행 디렉토리에 vmagents 사용자 자격 증명을 사용하여 이전의 minivm-exec 스크립트를 호출하는 vm-exec라는 또 다른 스크립트를 생성 (및 실행 가능하게 설정)
단계 7) llama-server WebUI에서 다음과 같은 예시 프롬프트를 실행:
이탈리아의 오늘 최신 뉴스를 검색해서 가장 매력적인 뉴스가 무엇인지 알려줘. 실행될 모든 명령 앞에는 샌드박싱 래퍼(wrapper)인 vm-exec를 붙여줘. 웹 콘텐츠를 가져오기 위해 wget을 사용하되, 브라우저 User Agent 문자열로 "-U Mozilla" 옵션을 추가해줘.
완료!!!
위에서 언급한 상세 단계들:
-
llama-server --model Qwen3.6-35B-A3B_MTP-UD-Q8_K_XL.gguf --flash-attn on --no-mmap --jinja --threads-http 4 --prio 2 --tools get_datetime,exec_shell_command --temp 0.6 --top-p 0.95 --top-k 20 --presence-penalty 1.5 --min-p 0.00 --chat-template-kwargs '{"preserve_thinking":true}' --spec-type draft-mtp --spec-draft-n-max 1
-
yay -Sy firejail (또는 Manjaro/Arch linux에서는 sudo pacman)
-
sudo useradd -m vmagents; sudo passwd vmagents
3.1) sudo su - vmagents
3.2) curl -sSL https://smolmachines.com/install.sh | bash
4.1) smolvm machine create minivm --image alpine --net
4.2) smolvm machine start --name minivm
- /home/vmagents/.local/bin/minivm-exec
#!/bin/sh
smolvm machine start --name minivm >/dev/null
firejail smolvm machine exec --name minivm -- $* 2>/dev/null
smolvm machine stop --name minivm >/dev/null
- /home/<MYUSER>/.local/bin/vm-exec
#!/bin/sh
sudo su - vmagents -c "minivm-exec $*"
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기