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

寫過它的文章

相關

  • 專案
  • 專案
  • 專案
  • 專案