안녕하세요! 저는 LLM과 채팅할 수 있는 오픈 소스 Web UI인 llampart의 개발자입니다. 방금 v2.0.1을 출시했는데, 버전 1.9.0 이후로 프로젝트가 상당히 많이 바뀌었기 때문에 제가 작업해 온 내용을 공유하고 싶었습니다. 처음 접하시는 분들을 위해 말씀드리자면, llampart는 Svelte 5와 SvelteKit으로 구축된 자체 호스팅(self-hosted)의 데스크톱 중심 채팅 인터페이스입니다. llama.cpp / llama-ui를 기반으로 시작했지만, 원래의 베이스와는 매우 다른 독립적인 프로젝트로 점차 성장했습니다. 아이디어는 상당히 간단합니다. 저는 로컬 모델을 다루기 위한 편안한 인터페이스, 좋은 대화 관리 기능, 유용한 도구, 충분한 사용자 정의 기능, 불필요한 클라우드 서비스가 없고, 무엇보다도 제가 사용하는 언어의 인터페이스를 원했습니다.
llampart는 어떤 기능을 하나요? 사용자가 별도로 실행하는 LLM 백엔드에 연결합니다. 현재 llama-server (llama.cpp), vLLM, 그리고 OpenAI 호환 API 서버를 지원합니다. 대화 내용은 IndexedDB를 사용하여 브라우저에 저장되며, 대부분의 애플리케이션 설정도 로컬에 저장됩니다. llampart 계정이나 호스팅된 대화 서비스는 없습니다. 물론 프롬프트는 사용자가 구성하는 어떤 백엔드(자신의 컴퓨터, LAN 또는 원격 서버)로 계속 전송됩니다. 몇 가지 기능에는 다음이 포함됩니다:
- Frosted Glass: 번들되거나 사용자 정의 가능한 배경화면을 가진 반투명 인터페이스, 조정 가능한 투명도, UI 스케일링, 타이포그래피 설정 및 사용자 정의 가능한 대화 사이드바.
- 대화 관리 (Conversation management): 분기별 대화(branching conversations), 고정된 채팅(pinned chats), 검색, 가져오기/내보내기(import/export) 및 로컬 대화 기록.
- 추론 및 도구 호출 (Reasoning and tool calling): 추론 능력을 갖춘 모델 지원, 도구 실행 및 다단계 에이전트 워크플로우.
- MCP 통합 (Integration): MCP 서버 연결 및 해당 서버의 도구(tools), 프롬프트(prompts)와 리소스(resources) 작업.
- 첨부 파일 및 Markdown: 파일 처리, PDF 지원, 구문 강조된 코드 블록, 표 및 콘텐츠 내보내기.
여섯 가지 인터페이스 언어 - 영어, 폴란드어, 독일어, 스페인어, 프랑스어, 이탈리아어 등. 더 많은 언어가 추가될 예정입니다. llampart - UI 1.9.0 버전 이후 변경된 사항은 무엇인가요? 가장 큰 변화는 llampart가 더 이상 llama-server에만 초점을 맞추지 않는다는 것입니다. 저는 모든 OpenAI 호환 API를 동일하게 취급하는 대신, 애플리케이션이 제공자(provider) 간의 차이점을 이해하도록 만드는 데 주력했습니다. 여기에는 별도의 제공자 구성, 모델 선택, 사용 가능한 적절한 Chat Completions 또는 Responses 프로토콜 지원, 그리고 향상된 모델 기능 처리가 포함됩니다. 추론(Reasoning) 지원도 개선되었습니다. 사용 가능한 추론 제어는 선택된 모델과 제공자에 따라 달라지므로, 인터페이스가 백엔드가 지원하지 않는 설정을 전송하는 것을 방지할 수 있습니다. 또 다른 주요 추가 사항은 채팅 메시지 내부에 AI 생성 차트와 다이어그램입니다. 모델은 구조화된 JSON 형식을 사용하여 대화형 Line, Area, Bar, Donut 차트를 생성할 수 있습니다. 이 차트는 미리 보고 PNG, SVG 또는 CSV로 내보낼 수 있습니다. 또한 Flowchart, State Diagram, Mindmap, Gantt 차트에 대한 Mermaid 지원이 추가되었으며, 미리 보기 및 PNG/SVG 내보내기가 가능합니다. llampart - UI 및 차트, 다이어그램 저는 이들이 표시되는 방식을 개선하는 데 많은 시간을 할애했습니다. 특히 차트 레이블, 다이어그램 레이아웃을 개선하고 애플리케이션 외부에서 유용한 내보내기 기능을 추가했습니다. 또한 모델이 답변 형식을 안내할 수 있는 새로운 응답 기본 설정(response preferences)도 있습니다. 예를 들어, 매번 이 지침들을 수동으로 반복하지 않고 더 간결한 답변, 실용적인 예시, 표, 차트, 다이어그램 또는 장식 요소가 적은 답변을 요청할 수 있습니다. 스크린샷에서는 덜 보이는 부분들, 즉 대화 데이터 무결성(conversation data integrity), 스트리밍 및 취소, 활성 요청 중 모델 전환, MCP 권한, 도구 결과 지속성(tool result persistence), 그리고 비동기 작업의 더 안전한 처리에 많은 노력이 기울였습니다.
llampart는 Web UI이며 모델 러너(model runner)가 아닙니다. 따라서 여전히 자체 LLM 백엔드, 즉 lama-server (llama.cpp), vLLM, 그리고 OpenAI 호환 API 서버가 필요합니다. Linux의 경우 Ubuntu 기반 시스템과 Arch 기반 시스템용 설치 프로그램이 있습니다. 이 프로그램은 기존 Caddy 설치를 사용하여 미리 빌드된 WebUI를 서비스하고 API 프록시 처리를 수행합니다. 설치된 릴리스를 실행하는 데 Node.js는 필요하지 않습니다. 선호한다면 저장소를 클론하여 SvelteKit 개발 서버를 실행할 수도 있습니다. 인터페이스는 현재 주로 데스크톱 사용을 위해 설계되었으며, 백엔드 기능은 모델 서버가 실제로 지원하는 내용에 자연스럽게 의존합니다. 이 프로젝트는 MIT 라이선스를 따르며 다음에서 이용 가능합니다: GitHub: https://github.com/mchowy-troll/llampart 최신 릴리스 (2.0.1): https://github.com/mchowy-troll/llampart/releases/tag/v2.0.1 제가 직접 사용하고 싶었던 것이기 때문에 개발하고 있으며, 문제를 겪거나 더 잘 작동할 수 있는 것을 발견함에 따라 계속 개선하고 있습니다. 특히 다양한 로컬 모델을 사용하는 분들의 피드백을 정말 감사히 받겠습니다. 살펴보아 주셔서 감사합니다! /u/mossy_troll_84가 제출했습니다. [링크] [댓글]