官方 SDK + 社区

用 Rust 运行 Laya:官方 SDK、sys1 与 ollaya

用官方 laya-onnx SDK 在 Rust 程序里直接运行 Laya(基于 ONNX Runtime),或用社区项目 sys1、ollaya 提供兼容 Jev 的接口服务。

Rust 程序和服务运行时无需 Python进程内调用或兼容 Jev 接口CPU / CUDA / Metal
快速开始
cargo add laya-onnx --git https://github.com/NandhaKishorM/laya
Source
NandhaKishorM/laya (laya-rust)

官方 SDK 需要先用仓库自带的 Python 脚本导出一次 ONNX 模型。sys1 和 ollaya 是社区项目,部署前请到各自仓库确认许可证和支持的模型。

Usage
let engine = laya::LayaEngine::from_directory("path/to/laya-multilingual")?;
let result = engine.predict(state, &questions)?;
// 想要 HTTP 服务:cargo install sys1 --features cpu

用 Rust 运行 Laya 有两种方式,部署的机器上都不需要 Python:

  • 嵌进你自己的程序:用 Laya 官方仓库里的 Rust SDK。一次决策就是一次函数调用,不用起服务,也没有网络往返。
  • 作为 HTTP 服务:用 sys1 或 ollaya 两个社区项目。它们都提供兼容 Jev 的 POST /v1/systemone 接口,任何 Jev 或 Laya 客户端都能直接调用。

官方 Rust SDK:laya-onnx

从 Laya 0.4.11 起,上游仓库带有 laya-rust:Python 包的 Rust 版,通过 ort crate 在 ONNX Runtime 上运行英文、多语言和 typed-decisions 三个 checkpoint。分词、校准和答案都和 Python 版一致,并用 Python 代码录下的输出做对照测试。默认跑 CPU,cuda 和 directml 是 cargo feature。

包名是 laya-onnx,代码里按 laya 导入。截至 2026 年 11 月 4 日它还没发布到 crates.io,需要从仓库添加:

cargo add laya-onnx --git https://github.com/NandhaKishorM/laya

SDK 读取的是 ONNX 文件,而 ONNX 版本还没上传到 Hugging Face,要用仓库自带的脚本导出一次。只有这一步需要 Python,部署运行不需要:

git clone https://github.com/NandhaKishorM/laya && cd laya
pip install "torch>=2.9" onnx onnxscript onnxruntime transformers safetensors huggingface_hub numpy
pip install -e .
python laya-rust/tools/export_onnx.py --model all

把 LayaEngine::from_directory(或环境变量 LAYA_ONNX_ROOT)指向导出的某个 checkpoint 目录,就可以提类型化问题:

use laya::{LayaEngine, Question, QuestionSet};
use serde_json::json;

let engine = LayaEngine::from_directory("path/to/laya-multilingual")?;
let questions = QuestionSet::new().with("department", Question::choice(
    "Which department should handle this request?",
    [
        ("billing", "invoices, payments, refunds"),
        ("technical", "bugs, outages, system errors"),
        ("other", "everything else"),
    ],
)?)?;
let result = engine.predict(json!({"body": "We were billed twice for March."}), &questions)?;
println!("{}", result["department"].as_choice().unwrap().choice); // billing

SDK 支持 predict、predict_batch、处理超出模型窗口长文本的 predict_long、min_confidence 弃答门槛、按语言设置温度、路由、语言检测、邮件清洗和 embedding 预筛选。直方图分箱校准和单次调用的 hooks 还没移植。调用是同步的:创建一个 LayaEngine,用 Arc 共享;异步代码里用 spawn_blocking 包一层。

sys1:基于 candle 的 Rust 服务

sys1 是用 tokio、axum 和 serde 写的 System One 接口服务,在 candle 上运行 Laya 的 ModernBERT 编码器和决策头。安装时选择后端:

cargo install sys1 --features cpu
cargo install sys1 --no-default-features --features metal   # Apple Silicon
cargo install sys1 --no-default-features --features cuda    # NVIDIA GPU

用 Laya 的 checkpoint 启动:

sys1 --model-id convaiinnovations/laya --dtype auto

它监听 3000 端口,提供 POST /v1/systemone 和 POST /v1/decide 两个接口。请求按 token 数量动态合并批处理,项目报告在 NVIDIA RTX Pro 6000 上每次查询约 14 毫秒。README 目前列出的是英文 Laya checkpoint,更多模型在计划中。

ollaya:像 Ollama 一样用决策模型

ollaya 的用法和 Ollama 类似:一个后台服务加一个命令行,按名字拉取和运行决策模型。它在 CPU 上用 ONNX Runtime,在 NVIDIA 显卡上用 CUDA,也原生支持 Apple Silicon。

curl -fsSL https://ollaya.dev/install.sh | sh
ollaya serve
ollaya run laya --preset triage "My payment failed twice"

laya 会在 laya:en(ModernBERT-large,4.21 亿参数)和 laya:multilingual(mmBERT-base,3.22 亿参数)之间自动选择。ollaya 还能运行 Decider、NLI 分类器等其他决策模型。它监听 11435 端口,设置 TYPESAFE_BASE_URL=http://localhost:11435 后,官方 TypeSafe SDK 不用改代码就能用。ollaya 只分发很小的 ONNX 计算图,权重从 Hugging Face 原仓库读取并用 sha256 校验,不会重新托管权重。

选哪个

laya-onnx(官方 SDK)sys1ollaya
是什么嵌进程序的库HTTP 服务后台服务加命令行
安装方式cargo add --gitcargo install安装脚本、Docker 或 Windows 安装程序
后端ONNX Runtime:CPU、CUDA、DirectMLCPU、CUDA、MetalCPU(ONNX Runtime)、CUDA、Apple Silicon
调用方式Rust 函数POST /v1/systemone,端口 3000POST /v1/systemone,端口 11435
支持的 Laya checkpoint英文、多语言、typed-decisions英文英文和多语言,自动路由
模型文件自己导出一次 ONNXHugging Face 上的原始权重很小的 ONNX 计算图加原始权重,sha256 校验
更适合在 Rust 代码里直接调用,没有网络往返自己编译的 Rust 服务开箱即用的本地后台服务,带模型管理

决策跑在 Rust 服务内部,就用官方 SDK;多个程序、或者其他语言的程序要共用一个 Laya 服务,就用 sys1 或 ollaya。sys1 和 ollaya 是社区项目,不属于 Laya 官方包,部署前请到各自仓库确认许可证和当前支持的模型。

相关阅读

最后核验:laya-rust 对照上游仓库,2026 年 11 月 4 日;sys1 和 ollaya,2026 年 9 月 25 日。