NandhaKishorM/laya

Non-autoregressive System 1 decision engine. Typed choice, score and yes/no decisions over any text in a single forward pass, in 100+ languages, with a router that picks the right checkpoint per request.

Laya – 快速、多语言、非自回归决策引擎

是什么 – Laya 是一个 Python 库(配有对应的 TypeScript 包),可让您对任意文本、JSON、邮件、工单等提出 类型化 问题。它不生成自由格式的文本,而是返回结构化决策,例如:

  • choice – 从列表中选择一个标签(例如:哪个部门应处理此请求)
  • score – 给出数值评分(例如:0–100 分制的紧急程度)
  • noul – 二值的 yes/no 问题(例如:用户是否明确要求退款?)

所有这些操作均在 单次 BERT 风格编码器前向传播 中完成,因此在 NVIDIA T4 GPU 上单个问题耗时约 33ms(批量处理时为 7ms)。模型从不生成文本,从而消除幻觉,并使输出可直接用于下游自动化。


核心理念

特性 为何重要
非自回归 无需逐 token 生成 → 确定性、即时可解析的答案。
类型化决策 结构化输出(choice/score/noul)与路由、分诊、护栏和分析流水线高度契合。
多语言(100+ 语言) 单个请求可使用任意语言;Laya 自动路由至最佳检查点。
路由器 自动检测脚本/语言,并在无额外延迟的情况下选择三个检查点之一(英语、多语言或更大的“类型化决策”模型)。
路由批处理 按检查点和问题模式对异构请求进行分组,同时保持顺序地批量评分多个项目。
ONNX 与 torch.compile 支持 可选的快速路径,适用于 CPU、GPU、Apple Silicon 和 Intel XPU。
预测钩子 可插入审计、脱敏、缓存或门控结果的钩子点,适用于合规性或自定义护栏。
自托管 HTTP 服务器 提供 Jev 兼容 API(/predict, /predict/batch)和小型 Web GUI,用于快速测试。
LangChain / LangGraph 集成 可直接使用的代理,用于 LLM 协调的工作流。
Docker 与 ARM64 构建 易于在云或边缘硬件的容器中运行。

工作原理(概览)

  1. 路由器创建 – router = Router(preload=True) 加载三个检查点(或首次使用时延迟加载)。路由器还包含一个轻量级语言检测模块,运行在独立进程中,因此导入 laya 不会立即加载 PyTorch。
  2. 定义问题集 – 一个 JSON 兼容字典,每个键为问题名称,每个值指定:
    • type: choice, score, 或 noul
    • instructions: 模型用的自然语言提示
    • criteria: 标签 → 描述的映射(choice 用)或标签有序列表(score 用)。
  3. 预测 – router.predict(state, questions) 在一次前向传播中运行相应检查点,返回:
    • answers – 模型对每个问题的决策及置信度分数。
    • routing – 使用的检查点及其原因(脚本、语言、回退等)。
  4. 批处理 – router.predict_batch(requests) 自动将兼容请求分组,因此 10 个混合语言的工单仍仅需几次前向传播。

快速开始(Python)

from laya import Router

router = Router(preload=True)   # 加载所有检查点,实现亚 35ms 路由

state = {
    "from": "user@example.com",
    "subject": "Duplicate charge",
    "body": "We were billed twice for March. Please refund it today."
}

questions = {
    "department": {
        "type": "choice",
        "instructions": "Which department should handle this request?",
        "criteria": {
            "billing": "invoices, payments, refunds",
            "technical": "bugs, outages",
            "sales": "pricing, contracts",
            "other": "everything else"
        }
    },
    "urgency": {
        "type": "score",
        "instructions": "How urgent is this?",
        "criteria": ["not urgent", "soon", "critical"]
    },
    "refund_requested": {"type": "noul", "instructions": "Does the user explicitly request a refund?"}
}

result = router.predict(state, questions)
print(result["answers"]["department"]["choice"])   # → billing (confidence 0.94)
print(result["routing"])

相同代码适用于印地语、阿拉伯语或任何其他语言;路由器将自动选择多语言检查点。


命令行使用

安装 pip install laya 后,您将获得 laya 可执行文件:

# 仅路由 – 无需下载模型,立即返回
laya "I was charged twice, please refund"

# 完整预测(首次运行时下载检查点)
laya "I was charged twice, please refund" --predict

# 强制指定语言(检测模糊时有用)
laya "Mein Konto wurde zweimal belastet" --lang de

# 使用预设工作流(分诊、审核等)
laya "Refactor this service" --preset triage

CLI 会输出简洁的 JSON 决策摘要。


运行本地 API / 演示 UI

pip install "laya[serve]"
python examples/server.py   # 在 http://127.0.0.1:8000 启动 FastAPI
  • Web UI 允许您粘贴原始 JSON 或填写简单表单,并将每个答案可视化为 0–100 的条形图。
  • 同一服务器公开 /predict 和 /predict/batch 端点,接受与 Python SDK 相同的 state/questions 负载。

安装说明

  • Python 3.10+ – 该包固定 transformers>=5, torch>=2.14, huggingface_hub>=1。安装 Laya 前,请使用官方 PyTorch 安装程序为 CPU 或 GPU 构建安装。
  • 可选扩展 –
    • laya[serve] – FastAPI 服务器和 UI。
    • laya[mcp] – 可选的 MCP(模型控制平面)服务器。
    • laya[langchain] – LangChain / LangGraph 集成辅助工具。
  • 模型下载 – 首次需要检查点的调用会从 Hugging Face Hub 下载模型(convaiinnovations/laya*)。后续运行将本地缓存文件。

何时使用 Laya

使用场景 为何 Laya 适用
客户支持分诊 – 将工单路由至正确部门,标记紧急程度,检测退款请求。 结构化输出,亚 50ms 延迟,多语言开箱即用。
自动审核 – 二值“这是攻击性内容吗?”或“是否包含个人数据?”检查。 无生成 → 无幻觉导致的误报;置信度分数可设置阈值。
业务规则执行 – 对传入邮件或 JSON 负载评估政策合规性。 决策头模型可使用自有标注数据微调;钩子可添加自定义脱敏或缓存。
边缘或低资源推理 – 通过 ONNX 在 CPU、Apple M 系列或 Intel XPU 上运行。 快速加载(CPU 加载仅 2 秒),支持可选 torch.compile / ONNX 路径。

发展路线与社区

  • 仓库遵循语义化版本控制;最新版本(0.3.11)新增了路由批处理、预测钩子和更安全的 HTTP 服务。
  • 提供 TypeScript 包(laya-ts),为 Node.js 和浏览器环境提供相同决策 API。
  • 项目采用 Apache-2.0 许可证,作者接受 Buy-Me-A-Coffee 捐赠。

TL;DR

Laya = 快速、类型化、多语言决策,无需任何文本生成。导入 Router,定义一组结构化问题,即可对邮件、工单或任意自由文本即时获得带置信度分数的答案。非常适合生产级分诊、护栏,以及需要确定性、语言无关决策的任何工作流。

写过它的文章

相关

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