LEVEL11

문서

로컬 모델

Ollama, llama.cpp(llama-server), MLX(mlx_lm.server)를 정식 제공자로 연결하기. 계정·키·인터넷 없이, 계량 없이.

LEVEL11은 내 컴퓨터에서 도는 모델 서버를 정식 제공자로 지원합니다. 계정도, API 키도, 인터넷도 필요 없습니다. 요청은 설정한 서버 주소로만 가고 LEVEL11 게이트웨이에는 가지 않으며, 사용량 계량·과금 대상이 아닙니다. 세 백엔드 모두 OpenAI 호환 POST /v1/chat/completions를 제공하므로 앱 안의 local 제공자 하나가 셋을 모두 담당합니다.

한눈에 보기

백엔드 설치·실행 기본 주소 네이티브 도구 호출
Ollama brew install ollama → ollama serve → ollama pull qwen3.5:4b http://127.0.0.1:11434 tools 태그가 있는 모델
llama.cpp (llama-server, GGUF) brew install llama.cpp → llama-server -m model.gguf --jinja -c 8192 --port 8080 http://127.0.0.1:8080 --jinja 옵션이 있으면 지원
MLX (mlx_lm.server, Apple Silicon) pip install mlx-lm → mlx_lm.server --model mlx-community/Qwen3-8B-4bit --port 8080 http://127.0.0.1:8080 mlx-lm 버전에 따라 다름

몇 가지 참고:

  • Ollama의 컨텍스트 길이는 기본 4096 토큰입니다. 에이전트 작업에는 OLLAMA_CONTEXT_LENGTH=16384 ollama serve처럼 띄우고 LEVEL11 설정의 컨텍스트 길이도 같은 값으로 맞추세요.
  • llama.cpp는 --jinja가 있어야 OpenAI 방식 도구 호출이 됩니다. 없으면 서버가 400을 돌려주고 LEVEL11이 텍스트 방식으로 자동 전환합니다. -c는 설정의 컨텍스트 길이와 맞춥니다.
  • MLX는 첫 요청 때 Hugging Face에서 모델을 내려받고 그 뒤로는 오프라인입니다. MLX와 llama.cpp의 기본 포트가 같으니(8080) 둘을 같이 띄우려면 한쪽 --port를 바꾸세요.

LEVEL11에 연결

  1. 설정(⌘,) → 로컬 모델 절로 갑니다.
  2. 백엔드를 고릅니다. 서버 주소는 비워 두면 기본 주소를 씁니다.
  3. 연결 테스트를 누릅니다. 서버의 모델 목록을 가져와 모델 이름 드롭다운에 채우고(직접 입력도 가능), Ollama는 모델별 도구 호출 지원 여부도 보여 줍니다. llama.cpp는 빌드 번호와 n_ctx도 읽어 옵니다. 서버가 꺼져 있으면 그 백엔드를 띄우는 명령을 안내합니다.
  4. 모델 이름을 고르고 이 모델 사용을 누르거나, 모델 선택 상자에서 로컬 모델을 고릅니다. 작성기와 상태 표시줄에 "Ollama · qwen3.5:4b"처럼 나타납니다.
  5. 도구 호출 방식은 보통 자동이면 됩니다. 컨텍스트 길이는 서버에 띄운 모델과 맞춥니다.

에이전트 프리셋의 모델 덮어쓰기에서 local을 고르면 그 프리셋만 로컬 모델을 씁니다. 사용자 지정 모델 ID에 local:<모델 이름>을 넣으면 설정과 다른 모델을 같은 서버에서 쓸 수 있습니다.

동작 방식

  • 스트리밍: 텍스트를 바로 채팅에 흘립니다. reasoning_content 델타와 본문 속 <think>…</think> 태그는 사고 패널로 보내고 채팅 본문에는 넣지 않습니다.
  • 도구 호출(자동): 먼저 OpenAI 방식 tools를 보냅니다. 서버가 400/422로 거부하면 그 서버·모델 조합을 "텍스트 전용"으로 기억하고 바로 다시 시도합니다. 텍스트 방식에서는 시스템 프롬프트에 도구 목록과 호출 형식을 넣고 응답의 ```tool_call 블록(또는 <tool_call> 태그)을 파싱해 도구를 실행합니다. 네이티브와 텍스트로 고정할 수도 있습니다.
  • 승인·체크포인트: 빌더 모드의 승인, 체크포인트, 되돌리기는 클라우드 모델과 똑같이 동작합니다.
  • 컨텍스트 맞추기: 로컬 모델의 창은 작으므로 도구 결과를 잘라 내고 오래된 대화부터(도구 호출과 결과는 함께) 버려 컨텍스트 길이 안에 맞춥니다.
  • 격리: 로컬 제공자는 설정한 주소에만 접속합니다. 계정 상태, 게이트웨이, API 키와 무관하고 사용량·과금 정보가 생기지 않습니다.

권장 모델과 문제 해결

8–16GB 메모리라면 qwen3.5:4b나 Qwen3-4B·Qwen2.5-Coder-7B 4bit, 24–32GB라면 Qwen3-14B/32B 4bit, Gemma 4 27B, DeepSeek-Coder-V2-Lite, 그 이상이면 Qwen3-Coder, Qwen3.8-27B, Llama 3.3 70B 4bit부터 시작해 보세요. 도구 호출이 되는지는 모델과 서버 모두에 달렸습니다. 4B 이하 모델은 텍스트 방식에서 가끔 형식을 틀리지만 파서가 흔한 변형은 받아 줍니다.

증상 확인할 것
서버에 연결할 수 없습니다 서버 실행 여부, 포트, 설정의 서버 주소
모델이 없습니다 Ollama: ollama pull <이름>. llama.cpp·MLX: 연결 테스트로 정확한 이름을 가져오기
400 "tools param requires --jinja" 자동 모드면 텍스트 방식으로 넘어갑니다. 네이티브를 원하면 --jinja
답이 중간에 끊김 컨텍스트 길이를 서버와 같게 맞추고 더 큰 값으로 다시 띄우기
도구를 안 쓰고 말로만 답함 작은 모델의 한계. 도구 호출 방식을 텍스트로 고정하거나 더 큰 모델