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のみで記述された最小限のチャットボットWebアプリケーションです。以下の技術を使用しています:

  • Leptos(RustベースのUIフレームワーク)をフロントエンドに使用し、TailwindCSSでスタイリング。
  • Actix をHTTPサーバーとして使用。
  • mistral.rs を使用して、オープンソースLLM(例:Qwen-3.8 B)の推論を同一プロセス内で直接実行。

重要性 – Python、Node、または外部の推論サービスを一切使用せずに、フルスタックのAI駆動アプリを構築できることを示しています。モデルは同一マシン上でローカルに実行され、Apple Metal、CUDA、またはCPUのみのバックエンドを利用可能です。


実行方法

  1. 適切なRustツールチェーンのインストール

    rustup target add wasm32-unknown-unknown
    cargo install cargo-leptos --locked   # `cargo leptos` を提供
    

    Rust 1.88以上が必要です。

  2. GPUサポートの設定

    • Apple Silicon – Cargo.toml で metal 機能を維持します。Metalツールチェーンをインストールしてください:
      xcodebuild -runFirstLaunch
      xcodebuild -downloadComponent MetalToolchain
      xcrun metal --version
      
    • NVIDIA – mistralrs 依存関係の metal を cuda に置き換えます。
    • CPUのみ – 機能フラグを削除するだけです。
  3. モデルの設定(デフォルトは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ファイルに設定してください。
  4. アプリの実行

    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でWebベースのチャットボットを構築するための実用的で最小限の例です。mistral.rs によるデバイス上でのLLM推論と、LeptosによるリアクティブなUIを活用しています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト