Skip to content

llama, server: add /v1/systemone API (models: laya, julia-1, lev, openjev, kev) - #29818

Merged
ngxson merged 17 commits into
ggml-org:masterfrom
ngxson:xsn/decision
Oct 2, 2026
Merged

ngxson merged 17 commits into
ggml-org:masterfrom
ngxson:xsn/decision

Conversation

@ngxson

@ngxson ngxson commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Overview

Support 5 decision models: laya, julia-1, lev, openjev (+vision), kev

Pre-converted GGUF:

llama-server -hf ggml-org/OpenJev-GGUF
llama-server -hf ggml-org/lev-GGUF
llama-server -hf ggml-org/Laya-GGUF
llama-server -hf ggml-org/Julia-1-GGUF
llama-server -hf ggml-org/Kev-4B-GGUF

Additional information

"Decision models" are just fancy wrappers around traditional embedding models (BERT/Qwen/etc), so changes to support them are kept to be as small and as self-contained as possible.

Since the underlay infra is just existing embedding models, changes to libllama are minimal. Main part is server_decision_context that switches the input/output handling based on {arch}.decision.type gguf metadata.

Recap changes per-component:

  • Conversion: handle conversion + new tensors/metadata + chat template injection
  • libllama: add decision head on graph, add some getters API
  • Server: add /v1/systemone API, add the main server_decision_context handling logic, add tests (using a slice of laya model)

TODO:

  • maybe support https://huggingface.co/Cloudflare/clef , just out 2 hours ago at the time writing this planned as a follow-up
  • add docs (+ dev docs for those who will add future model support)
  • support parallel shared prompt prefix (only for causal models)
  • support vision input

Testing

Table represent result in format: reference → llama.cpp

input json
{
  "state": {
    "message": "Hi, I was charged twice for my order #4471 and I want a refund.",
    "plan": "pro",
    "order": {
      "id": 4471,
      "items": ["phone case", "charger"]
    }
  },
  "questions": {
    "intent": {
      "type": "choice",
      "instructions": "What does the customer want?",
      "criteria": {
        "refund": "wants money back",
        "cancel": "wants to cancel an order",
        "track": "wants to know where an order is",
        "other": "anything else"
      }
    },
    "urgent": {
      "type": "noul",
      "instructions": "Does this need a human within the hour?"
    },
    "frustration": {
      "type": "score",
      "instructions": "How frustrated is the customer?",
      "criteria": ["calm", "mildly annoyed", "annoyed", "angry"]
    },
    "refund": {
      "type": "noul",
      "instructions": "Is a refund requested?",
      "criteria": {
        "true": "money back is asked",
        "false": "no money back is asked"
      }
    },
    "team": {
      "type": "choice",
      "instructions": "Which team?",
      "criteria": {
        "billing": null,
        "shipping": null,
        "technical": null,
        "sales": null,
        "legal": null,
        "returns": null,
        "fraud": null,
        "accounts": null,
        "retention": null,
        "other": null
      }
    }
  }
}
question laya julia-1 lev openjev kev-4b
intent (top option, refund) 0.9871 → 0.9870 0.9899 → 0.9910 0.8159 → 0.8209 0.9994 → 0.9994 0.6537 → 0.6550
urgent (noul) 0.1013 → 0.1016 0.6447 → 0.6232 0.4680 → 0.4681 0.2505 → 0.2507 0.7051 → 0.7045
frustration (top level) 0.3492 → 0.3492 0.6749 → 0.6895 0.2627 → 0.2633 0.5295 → 0.5295 0.4406 → 0.4407
refund (noul) 0.8916 → 0.8916 0.5608 → 0.5636 0.9503 → 0.9505 0.9901 → 0.9901 0.9472 → 0.9474
team (top option) 0.9666 → 0.9664 not run 0.3815 → 0.3787 0.9874 → 0.9874 0.4598 → 0.4599
worst diff, any probability 8.4e-4 2.2e-2 5.2e-3 1.8e-4 1.3e-3
input tokens 414 = 414 not reported by ref 576 vs 1194 619 = 619 406 = 406

Requirements

  • I have read and agree with the contributing guidelines
  • AI usage disclosure: most of the code is AI-written, I own the design

@ngxson ngxson changed the title llama, server: support decision models llama, server: support decision models (laya, julia-1, lev, openjev, kev-4b) Oct 1, 2026
@ngxson ngxson changed the title llama, server: support decision models (laya, julia-1, lev, openjev, kev-4b) llama, server: support decision models (laya, julia-1, lev, openjev, kev) Oct 1, 2026
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Oct 1, 2026
@ngxson ngxson changed the title llama, server: support decision models (laya, julia-1, lev, openjev, kev) llama, server: add /v1/systemone API (models: laya, julia-1, lev, openjev, kev) Oct 1, 2026
@ngxson
ngxson marked this pull request as ready for review October 1, 2026 19:01
@ngxson
ngxson requested review from a team, CISC and ggerganov as code owners October 1, 2026 19:01
@ggerganov ggerganov self-assigned this Oct 1, 2026
Comment thread conversion/__init__.py
"LLaDAMoEModelLM": "llada",
"LLaDAModelLM": "llada",
"LLaMAForCausalLM": "llama",
"KevModel": "lev",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this correct "lev" instead of "kev" here?

@ngxson ngxson Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's expected, they are quite similar so I grouped them into one file

Variable85 pushed a commit to Variable85/autonomous-grid that referenced this pull request Oct 5, 2026
b11361 is the first build with llama-server's /v1/systemone (ggml-org/llama.cpp#29818), which
decision models need. b11378 is the build tested: grid's launch flags, its capability probe, plain
and streamed chat, a chat tool call, and a Codex-style Responses tool call with its follow-up turn
answer identically to b10369 on Qwen3 4B. All six assets are checked against the SHA-256 GitHub
publishes for them.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y7mz2tH57XdkcXHvLN5jY1
gaelj added a commit to gaelj/nixpkgs that referenced this pull request Oct 5, 2026
Pin to nightly b11393 so llama-server exposes the new /v1/systemone
decision-model API (upstream ggml-org/llama.cpp#29818), required by
Kev/laya/openjev models. The latest semantic release v0.5.0 is build
b11146 and predates it; update.sh will resume tracking semantic
releases once one includes systemone.
Wizard815 added a commit to Wizard815/mx-llama.cpp-Rocm10 that referenced this pull request Oct 6, 2026
ggml-org#29903 also enables embedding mode for the laya/kev/clef decision models, but
that half calls common_get_decision_type() and references the
COMMON_DECISION_TYPE_* enums, which arrived in the post-0.5.0 commits
a4cb4c6 (ggml-org#29818) and 4d60b4d (ggml-org#29987) and are absent here:

  common.cpp:1345: error: 'common_get_decision_type' was not declared in this scope

Keep the n_batch <= n_ubatch clamp, which is self-contained and the part the
commit is named for. The decision-model block can return once those upstream
commits are merged.

Assisted-by: Hermes Agent
chrisjohnson added a commit to chrisjohnson/strix-halo-r9700-llm-builds that referenced this pull request Oct 10, 2026
…model build

First decision-model (TypeSafe "System One" category) build in this
catalog, serving OpenJev-27B-v1.1 via llama.cpp's native /v1/systemone
endpoint (ggml-org/llama.cpp#29818). Uses the official
ghcr.io/ggml-org/llama.cpp:server-vulkan image rather than this catalog's
usual kyuz0 toolbox image, since the endpoint is brand new and the
official image is confirmed to post-date the merge.

Deliberately targets the same GPU (Vulkan1/strix-apu) as the standing
qwen3.8-flash-next-hgnv2 build - untested co-residency, meant to be
brought up non-exclusively (never --exclusive) alongside it rather than
stopping it.

Weights downloading in background; build.yaml to be updated once loaded
and benchmarked.
cheesecake100201 pushed a commit to cheesecake100201/llama-stack that referenced this pull request Oct 12, 2026
Bumps the llama.cpp test server pin in
`.github/actions/setup-llamacpp/action.yml` from `b11147` to `b11429`
(v0.6.0), updating the download URL, extracted directory, server path,
and `LLAMA_TARBALL_SHA`.

This is the first release to support the `/v1/systemone` endpoint, which
was merged upstream in ggml-org/llama.cpp#29818 after b11147 was cut.

The b11429 tarball was verified locally: its sha256 matches the new pin,
and the extracted `llama-server` reports build 11429. The router preset
requires no changes, as `--models-preset`, `--models-max`,
`--embedding`, `--rerank`, `--pooling rank`, and `--ctx-size` are
unchanged in this release.

Closes ogx-ai#6759.

---------

Signed-off-by: Matthew Farrellee <matt@cs.wisc.edu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conversion documentation Improvements or additions to documentation highlight Changes that will be highlighted in the next release notes model Model specific server

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants