Text classification with Laya

A Laya `choice` question is a zero-shot classifier. You name the labels, optionally describe each one, and get the top label with a probability for every option in one forward pass. Labels are defined at request time, so there is no training step to get started.

252 projects

N

laya-school-email-triage

nccyber

Demonstrates Laya for routing and assessing urgency in synthetic school emails

0·HF Space
S

laya-demo

siloh12

Runs a browser demo that calls a Gradio Space to make typed decisions with Laya

0·HF Space
H

laya

henrybit

Demonstrates Laya typed decisions with English and multilingual checkpoints

0·HF Space
W

laya-demo

wuyouxiaobai

Provides a landing page and deployable Gradio demo for Laya typed decisions

0·HF Space
H

laya-decision-playground

hadeas

Provides a Gradio playground for Laya typed decisions with editable schemas and probability outputs

0·HF Space
A

laya-demo

aired

Demonstrates Laya typed decisions for triage, guardrails, filtering, moderation, and routing

0·HF Space
N

laya-demo

nickfury6023

Demonstrates Laya typed decisions for triage, guardrails, filtering, moderation, and routing

0·HF Space
D

laya-multilingual-demo

DennisRadix58

Demonstrates multilingual Laya typed decisions for triage, guardrails, moderation, and exploration

0·HF Space
K

viralpilot-laya

khushali678

Analyzes content and scores its potential virality through an AI API

0·HF Space
T

laya-json-render

ti3x-m

Runs Laya typed decisions locally in the browser to drive validated JSON-render interfaces

0·HF Space
D

laya-demo

dungdq1

Demonstrates Laya typed decisions for routing, moderation, guardrails, and retrieval filtering

0·HF Space
K

laya-meme-app

khushali678

Matches scenarios with meme reactions using Laya decisions and a Supabase vector store

0·HF Space

Example

From the core README:

from laya import Router

router = Router()
questions = {
    "department": {"type": "choice", "instructions": "Which department should handle this?",
                   "criteria": {"billing": "invoices, payments, refunds",
                                "technical": "bugs, outages, system errors",
                                "other": "everything else"}},
}
result = router.predict("La aplicación se cierra cada vez que abro la configuración.", questions)
print(result["answers"]["department"]["choice"])  # technical

Each answer includes probabilities for every label and a confidence value you can gate on.

Label count matters

All options share a token budget (head_max_len: 192 on laya, 256 on the other two checkpoints). The README reports Banking77 (77 labels) at 0.425 for Laya against 0.870 for Jev on 72 labels, because each label gets only 3 to 4 tokens. Keep a question under about 20 options, or raise head_max_len, split into coarse and fine questions, or use predict_shortlist with embeddings.

Accuracy you can expect

  • The core README lists AG News 0.947 and DAIR Emotion 0.573 for the English checkpoint.
  • sysone-bench ran Laya and Jev on byte-identical inputs: AG News 0.940 vs 0.910, emotion 0.540 vs 0.550, and a 12-intent Banking77 subset 0.802 vs 0.906.
  • jevbench (dhruvmehra) compares Jev, Laya, LLMs, fine-tuned DistilBERT and zero-shot NLI on SST-2, AG News and Banking77.

Fine-tune when zero-shot is not enough

The base checkpoints score 0.362 and 0.352 on the README's typed-decisions benchmark. The fine-tuned laya-typed-decisions checkpoint reaches 0.766. The fine-tuning notebook runs on Kaggle's free 2x T4 GPUs.

Projects

ollaya serves Laya alongside zero-shot NLI and GLiClass classifiers behind one API. edgejev reports AG News accuracy for fp32 and INT8 CPU builds.

Caveats

The README warns against boolean-word labels such as yes/no or true/false in choice questions, and it reports failures on negated requests. Use descriptive labels and test on your own data.

More ways to use Laya