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(参见 repo 中的 GIF),你可以在其中输入提示词并从本地运行的 LLM 获得响应。
  • 后端在进程内执行推理,因此延迟与直接通过 Python 库运行模型相当,但你完全保留在 Rust 生态系统中。

谁会使用它

  • Rust 开发者:想要尝试 LLM 推理而无需学习 Python 的人。
  • 边缘设备爱好者(Apple Silicon 或 NVIDIA GPU):寻找独立 AI 聊天机器人的人。
  • 教育工作者:演示单一语言端到端 AI 管道的人。

限制与注意事项

  • 仅支持 GGUF 格式模型;旧的 GGML .bin 文件无法工作。
  • 默认模型为 27 B 参数;你需要足够的 RAM/VRAM(4-bit 版本约需 17 GB)。
  • GPU 加速取决于正确的功能标志和可用的 Metal/CUDA 工具链。

总结 – Rusty Llama 是一个实用且极简的示例,展示了如何在纯 Rust 中构建基于 Web 的聊天机器人,利用 mistral.rs 进行设备端 LLM 推理,并利用 Leptos 实现响应式 UI。

相关

  • 项目
  • 项目
  • 项目
  • 项目