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 构建 | 易于在云或边缘硬件的容器中运行。 |
工作原理(概览)
- 路由器创建 –
router = Router(preload=True)加载三个检查点(或首次使用时延迟加载)。路由器还包含一个轻量级语言检测模块,运行在独立进程中,因此导入laya不会立即加载 PyTorch。 - 定义问题集 – 一个 JSON 兼容字典,每个键为问题名称,每个值指定:
type:choice,score, 或noulinstructions: 模型用的自然语言提示criteria: 标签 → 描述的映射(choice用)或标签有序列表(score用)。
- 预测 –
router.predict(state, questions)在一次前向传播中运行相应检查点,返回:answers– 模型对每个问题的决策及置信度分数。routing– 使用的检查点及其原因(脚本、语言、回退等)。
- 批处理 –
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,定义一组结构化问题,即可对邮件、工单或任意自由文本即时获得带置信度分数的答案。非常适合生产级分诊、护栏,以及需要确定性、语言无关决策的任何工作流。
写过它的文章
相关
- 项目
- 项目
- 项目
- 项目