MoonKraken/rusty_llama
A simple ChatGPT clone in Rust on both the frontend and backend. Uses open source language models and TailwindCSS.
Rusty Llama Webapp – 빠른 개요
설명 – 완전히 Rust로 작성된 최소한의 챗봇 웹 애플리케이션입니다. 다음 기술을 사용합니다:
- Leptos(Rust 기반 UI 프레임워크)를 프론트엔드로 사용하고 TailwindCSS로 스타일링.
- Actix를 HTTP 서버로 사용.
- mistral.rs를 사용하여 오픈 소스 LLM(예: Qwen-3.8 B)의 추론을 동일 프로세스 내에서 직접 실행.
중요성 – Python, Node 또는 외부 추론 서비스 없이도 풀스택 AI 기반 앱을 구축할 수 있음을 보여줍니다. 모델은 동일한 머신에서 로컬로 실행되며 Apple Metal, CUDA 또는 CPU 전용 백엔드를 사용합니다.
실행 방법
올바른 Rust 툴체인 설치
rustup target add wasm32-unknown-unknown cargo install cargo-leptos --locked # `cargo leptos` 제공Rust 1.88 이상이 필요합니다.
GPU 지원 설정
- Apple Silicon –
Cargo.toml에서metal기능을 유지합니다. Metal 툴체인을 설치하세요:xcodebuild -runFirstLaunch xcodebuild -downloadComponent MetalToolchain xcrun metal --version - NVIDIA –
mistralrs의존성에서metal을cuda로 교체합니다. - CPU 전용 – 기능 플래그를 제거하기만 하면 됩니다.
- Apple Silicon –
모델 구성(기본값 Qwen-3.8 27B, 4-bit 양자화, 약 17 GB)
.env파일을 생성(또는 기존 파일 수정)합니다:MODEL_REPO=bartowski/Qwen3.8-27B-GGUF MODEL_FILE=Qwen3.8-27B-Q4_K_M.gguf- 처음 시작할 때
mistral.rs가 GGUF 파일을~/.cache/huggingface로 다운로드합니다. - 다른 모델을 사용하려면
MODEL_FILE을 변경하거나MODEL_PATH를 로컬.gguf파일 또는 샤드 디렉토리로 지정하세요. - 모델에 임베디드 채팅 템플릿이 없는 경우
CHAT_TEMPLATE을 Jinja 문자열이나 JSON 파일로 설정하세요.
앱 실행
cargo leptos watch # Rust 서버 빌드, Tailwind 컴파일 및 변경 사항 감시그런 다음 브라우저에서 **http://localhost:3000/**을 엽니다.
mistral.rs가 Metal/CUDA 커널을 컴파일하므로 첫 빌드에는 몇 분이 소요될 수 있습니다.
기능
- 간단한 채팅 UI(저장소의 GIF 참조). 프롬프트를 입력하고 로컬에서 실행 중인 LLM으로부터 응답을 받을 수 있습니다.
- 백엔드가 프로세스 내에서 추론을 수행하므로 Python 라이브러리를 통해 모델을 직접 실행하는 것과 대등한 지연 시간을 제공하면서도 Rust 생태계 내에 완전히 머무를 수 있습니다.
대상 사용자
- Rust 개발자: Python을 배우지 않고 LLM 추론을 실험하고 싶은 분.
- 엣지 디바이스 애호가(Apple Silicon 또는 NVIDIA GPU): 독립형 AI 챗봇을 찾는 분.
- 교육자: 단일 언어로 엔드투엔드 AI 파이프라인을 시연하려는 분.
제한 사항 및 참고 사항
- GGUF 형식 모델만 지원됩니다. 이전 GGML
.bin파일은 작동하지 않습니다. - 기본 모델은 27B 파라미터입니다. 충분한 RAM/VRAM(4-bit 버전의 경우 약 17 GB)이 필요합니다.
- GPU 가속은 올바른 기능 플래그와 작동하는 Metal/CUDA 툴체인에 따라 달라집니다.
결론 – Rusty Llama는 순수 Rust로 웹 기반 챗봇을 구축하는 실용적이고 최소한의 예제이며, mistral.rs를 통한 온디바이스 LLM 추론과 Leptos를 통한 반응형 UI를 활용합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트