저는 로컬 모델을 사용한 역할극(roleplay) 및 스토리 작성을 위한 무료 오픈 소스 앱인 Vellium을 개발했습니다. Windows, macOS, Linux에서 사용할 수 있습니다. 지난 버전은 오직 보안 수정만 포함했으며, 제가 이 앱을 전혀 사용하지 않는다고 해도 알아두면 좋을 버그가 하나 있습니다.
캐릭터 카드를 가져올 때, Vellium은 카드에 있는 아바타 필드 값을 해당 아바타 파일의 경로로 저장했습니다. 나중에 그 캐릭터의 사진을 변경할 경우, 이전 경로에 있던 파일을 삭제합니다. 따라서 ../../와 같은 경로를 가진 필드가 있다면, 사용자가 아바타를 교체하는 순간 앱이 카드의 작성자가 선택한 파일을 삭제하게 만들 수 있습니다. 만약 해당 필드에 웹 링크가 들어 있었다면, 카드를 로드할 때마다 작성자의 IP 주소가 노출되어 이메일의 추적 픽셀(tracking pixel)과 같은 역할을 했습니다. 버전 0.2.3부터 1.6.0까지 모든 버전에 이 문제가 있었습니다. 만약 1.7보다 낮은 버전을 사용하고 있다면 업데이트하세요. 이제 카드는 아바타 경로를 설정할 수 없으며, 앱은 파일을 삭제하기 전에 저장된 모든 경로를 확인합니다.
저는 제 코드만 점검했기 때문에 다른 프런트엔드에도 같은 버그가 있는지 여부는 말씀드릴 수 없습니다. 캐릭터 카드 자체가 낯선 사람의 파일이며 그 안에 어떤 필드가든 무엇이 들어 있을 수 있으므로, 만약 여러분이 프런트엔드를 구축한다면 이 부분을 살펴보는 것이 좋습니다.
또 다른 큰 문제는 Vellium의 로컬 서버가 사용자의 기기를 가리키는 모든 도메인을 통해 들어오는 요청에 응답했다는 것입니다. 이것은 DNS 리바인딩(DNS rebinding)이며, 이는 브라우저에서 열린 웹사이트가 앱의 서버와 통신할 수 있음을 의미합니다. 게다가 설정 엔드포인트(settings endpoint)에서는 TTS 및 STT API 키를 마스킹하지 않고 반환했습니다. 이 두 가지 모두 1.7 버전에서 수정되었습니다.
같은 점검을 통해 발견된 더 작은 수정 사항들은 이 글의 첫 댓글에 있습니다. 이런 종류의 것을 구축하는 모든 분들을 위해 참고해 주세요.
이제 로컬 모델을 실행해 본 적이 없는 사람들을 위한 부분입니다. 왜냐하면 제가 주로 이 사용자층을 대상으로 앱을 만들기 때문입니다. Vellium은 처음 실행할 때 어떤 것이 준비되어 있는지 묻습니다. 만약 이미 llama.cpp나 GGUF 파일 등이 주변에 있다면, 그것들을 찾아 서버를 자체적으로 시작합니다. 아무것도 없다면, llama.cpp와 사용자의 GPU 및 RAM 크기에 맞는 모델을 다운로드합니다.
만약 API를 사용하는 것을 선호한다면, OpenRouter, OpenAI 및 몇 가지 다른 서비스에 대한 프리셋이 있으며, 키를 붙여넣기만 하면 됩니다.
LM Studio, Ollama 및 KoboldCpp를 이미 사용하고 있다면 이들도 작동합니다. 간단한 인터페이스가 기본입니다. 샘플러나 프롬프트 템플릿이 무엇인지 알지 못해도 답변을 얻을 수 있으며, 그 모든 것은 궁금해질 때 설정에 있습니다. 채팅 외에도 긴 이야기를 위한 작문 모드(DOCX 가져오기 가능), SillyTavern World Info 가져오기가 가능한 로어북, 번들된 음성 모델을 사용한 음성 모드, 그리고 Inochi2D 형식의 실험적인 애니메이션 아바타가 있습니다. 빌드는 서명되지 않았으므로 Windows SmartScreen에서 경고(자세히 알아보기 → 그래도 실행)를 표시하고 macOS에서는 시스템 설정 → 개인 정보 보호 및 보안에서 '열기'를 요청할 것입니다. 이전에 사용해 본 적이 있다면, 1.1 버전 이후의 주요 변경 사항은 다음과 같습니다: llama-server에 직접 연결합니다: 로드된 내용과 어떤 슬롯이 바쁜지 표시하고, llama-server가 라우터 모드로 실행될 때 모델을 로드하거나 언로드하며, 정확한 다음 프롬프트와 각 부분이 차지하는 토큰 수를 보여주는 컨텍스트 뷰를 제공하고, 메시지를 삭제하지 않고도 문맥에서 벗어나게 할 수 있습니다. 특정 모델에 자동으로 로드되는 샘플러 프리셋, 자체 데이터베이스가 있는 별도의 프로필, 그리고 비밀번호로 암호화할 수 있는 백업이 있습니다. 저장소 및 다운로드: https://github.com/tg-prplx/vellium 이것을 여러분의 첫 번째 로컬 환경으로 설정하고 온보딩 단계 중 혼란스러웠던 부분이 있다면 알려주세요. 제가 가장 제대로 만들고 싶은 부분입니다. /u/Possible_Statement84가 제출했습니다 [링크] [댓글]