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,定義一組結構化問題,即可對郵件、工單或任意自由文字即時獲得帶置信度分數的答案。非常適合生產級分診、防護牆,以及需要確定性、語言無關決策的任何工作流程。
寫過它的文章
相關
- 專案
- 專案
- 專案
- 專案