|
Download README.md from HallD/yev: direct link, hf CLI and curl.
- Browser
- Download file 2.84 kB
-
https://huggingface.co/HallD/yev/resolve/main/README.md
- Command line
-
hf download hf://HallD/yev/README.md
-
curl -L -o README.md https://huggingface.co/HallD/yev/resolve/main/README.md
2.84 kB
| license: apache-2.0 | |
| tags: | |
| - yev | |
| - decision-model | |
| # yev | |
| The client for [Yev-Decision-1](https://huggingface.co/HallD/Yev-Decision-1), a local **System One** | |
| decision model. Give it a state, which can be text, images or both, plus named questions. It returns | |
| a typed probability distribution for each one: a **Choice** between options, a **Score** on an | |
| ordered scale, or a **Noul** (yes or no). It generates no text and nothing leaves the machine. | |
| ## Install | |
| ```sh | |
| uv add "yev[inference] @ git+https://huggingface.co/HallD/yev" | |
| ``` | |
| `pip install "yev[inference] @ git+https://huggingface.co/HallD/yev"` works the same way. Python 3.13 | |
| or later. | |
| | Extra | Brings | For | | |
| | --- | --- | --- | | |
| | *(none)* | pydantic, huggingface-hub, numpy | Question and answer types only | | |
| | `inference` | torch, transformers, peft, accelerate, pillow | Answering questions with a model | | |
| | `quantized` | `inference` plus bitsandbytes | `quantize4bit=True` on a CUDA GPU | | |
| ## Use | |
| ```python | |
| from yev import Choice, Image, Noul, Score, YevClient | |
| with YevClient() as client: # YEV_DEFAULT_MODEL, else HallD/Yev-Decision-1 | |
| response = client.system_one( | |
| state="I was charged twice. Please fix this ASAP.", | |
| questions={ | |
| "billing": Noul(instructions="Is this ticket about billing?"), | |
| "tone": Choice(instructions="What is the customer's tone?", | |
| criteria={"calm": None, "frustrated": None, "angry": None}), | |
| "urgency": Score(instructions="How urgent is this ticket?", | |
| criteria=["can wait", "this week", "today"]), | |
| }, | |
| ) | |
| print(response.nouls["billing"].noul, response.choices["tone"].probabilities) | |
| ``` | |
| The first call downloads the model and its backbone, | |
| [`Qwen/Qwen3.5-4B-Base`](https://huggingface.co/Qwen/Qwen3.5-4B-Base) at a pinned revision, into the | |
| Hugging Face cache. After that it runs offline (`HF_HUB_OFFLINE=1`). The backbone runs in bfloat16; | |
| its weights and the adapter take about 10.4 GB. | |
| The call shape follows the TypeSafe SDK (0.7.5): `YevClient` and `AsyncYevClient` take its | |
| `system_one(state, questions, model=, assets=, response_model=)`, its question objects (TypeSafe's | |
| own are accepted), and return its answer and response types. It runs in-process, so there are no | |
| API keys, retries or timeouts; Box questions are refused, and a Score takes at most 10 levels. | |
| `yev --export HallD/Yev-Decision-1 --state "I was charged twice." --noul billing "Is this ticket about billing?"` | |
| asks from the command line. | |
| ## JevBench | |
| `examples/jevbench_adapter.py` is an adapter for the | |
| [JevBench](https://github.com/fstandhartinger/jevbench) harness: it sends the harness's own question | |
| to `system_one` and returns the probabilities, with the input tokens the model read as `usage` | |
| (output tokens are always 0). | |