Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenChoice

Turn context into a clear choice.

Model: OpenBuddy/OpenChoice-4B-v1 · Project

OpenChoice-4B-v1 is a system-1 choice model for decisions expressed in natural language. Supply a state, a question, and 2–16 candidates. Get a selected candidate ID and a probability distribution in one forward pass.

Use it for task routing, policy decisions, evidence-based selection, and choosing the next action from a supplied set.

Results

Model apus-frozen80 · choice openbuddy-choice128 v1
OpenChoice-4B-v1 67/80 112/128
Laya multilingual 37/80 42/128
APUS-4B 66/80 101/128
APUS-9B 70/80 107/128

Measured with fixed tasks, gold answers, and candidate orders. Frozen80 uses the unified choice interface. APUS runs at high effort with the full head; Laya uses its multilingual checkpoint with a full-input adapter.

Details

Run inference

Use a CUDA GPU with BF16 support and a CUDA-enabled PyTorch installation. The reference runtime uses Transformers 5.3.0, FlashAttention 2, and the Qwen3.5 linear-attention kernels. Install the pinned dependencies in an environment with a compatible CUDA toolkit; CUDA extensions may require compilation.

pip install -r requirements.txt
hf download OpenBuddy/OpenChoice-4B-v1 --local-dir models/OpenChoice-4B-v1
python inference/infer.py --model-dir models/OpenChoice-4B-v1 < examples/request.jsonl

Each input line is a JSON request:

{"state":"Standard delivery takes three days. Express arrives tomorrow and is within budget.","question":"Which option meets tomorrow's deadline?","options":[{"id":"standard","text":"Standard delivery"},{"id":"express","text":"Express delivery"}]}

Selected response fields (illustrative probabilities):

{"option_id":"express","probabilities":{"standard":0.08,"express":0.92}}

The full response also includes the position label (A–P). Probabilities are normalized candidate scores (uncalibrated).

For Python applications:

from inference.infer import ChoiceModel

model = ChoiceModel("models/OpenChoice-4B-v1")
result = model.decide({
    "state": "The customer wants a refund for a duplicate charge.",
    "question": "Which team should handle this request?",
    "options": [
        {"id": "billing", "text": "Billing support"},
        {"id": "technical", "text": "Technical support"},
    ],
})
print(result["option_id"], result["probabilities"])

The provided loader scores the dedicated decision head and applies the prompt template with its fixed English thinking prefill. It accepts text inputs up to 8,960 tokens, including the template.

Reproduce the evaluation

python -m evaluations.evaluate --model-dir models/OpenChoice-4B-v1 --output evaluation-output

The GPU evaluator runs both panels in their fixed order and saves per-question predictions and accuracy. Errors count as incorrect answers.

  • openbuddy-choice128 v1: 128 English/Chinese decision and reasoning cases. Candidate order was shuffled once with seed 20260928128 and frozen before the reported evaluation.
  • apus-frozen80: 80 cases covering browser actions, condition checking, reading comprehension, entailment, and attribute detection. Original candidate order is preserved; all cases use the general choice interface.

Data attribution

Frozen80 comes from APUS-OpenJev-Eval-Frozen80. See the source provenance and upstream license notices, including its pending redistribution review.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages