Instructions to use HamoAI/hamo-score-0.6b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use HamoAI/hamo-score-0.6b with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("HamoAI/hamo-score-0.6b") prompt = "Write a story about Einstein" messages = [{"role": "user", "content": prompt}] prompt = tokenizer.apply_chat_template( messages, add_generation_prompt=True ) text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use HamoAI/hamo-score-0.6b with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf HamoAI/hamo-score-0.6b # Run inference directly in the terminal: llama cli -hf HamoAI/hamo-score-0.6b
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf HamoAI/hamo-score-0.6b # Run inference directly in the terminal: llama cli -hf HamoAI/hamo-score-0.6b
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf HamoAI/hamo-score-0.6b # Run inference directly in the terminal: ./llama-cli -hf HamoAI/hamo-score-0.6b
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf HamoAI/hamo-score-0.6b # Run inference directly in the terminal: ./build/bin/llama-cli -hf HamoAI/hamo-score-0.6b
Use Docker
docker model run hf.co/HamoAI/hamo-score-0.6b
- LM Studio
- Jan
- vLLM
How to use HamoAI/hamo-score-0.6b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "HamoAI/hamo-score-0.6b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "HamoAI/hamo-score-0.6b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/HamoAI/hamo-score-0.6b
- Ollama
How to use HamoAI/hamo-score-0.6b with Ollama:
ollama run hf.co/HamoAI/hamo-score-0.6b
- Unsloth Studio
How to use HamoAI/hamo-score-0.6b with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for HamoAI/hamo-score-0.6b to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for HamoAI/hamo-score-0.6b to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for HamoAI/hamo-score-0.6b to start chatting
- Pi
How to use HamoAI/hamo-score-0.6b with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "HamoAI/hamo-score-0.6b"
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "HamoAI/hamo-score-0.6b" } ] } } }Run Pi
# Start Pi in your project directory: pi
- OpenClaw new
How to use HamoAI/hamo-score-0.6b with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "HamoAI/hamo-score-0.6b"
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "HamoAI/hamo-score-0.6b" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- MLX LM
How to use HamoAI/hamo-score-0.6b with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "HamoAI/hamo-score-0.6b"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "HamoAI/hamo-score-0.6b" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "HamoAI/hamo-score-0.6b", "messages": [ {"role": "user", "content": "Hello"} ] }' - Docker Model Runner
How to use HamoAI/hamo-score-0.6b with Docker Model Runner:
docker model run hf.co/HamoAI/hamo-score-0.6b
- Lemonade
How to use HamoAI/hamo-score-0.6b with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull HamoAI/hamo-score-0.6b
Run and chat with the model
lemonade run user.hamo-score-0.6b-{{QUANT_TAG}}List all available models
lemonade list
- Hermes Agent
How to use HamoAI/hamo-score-0.6b with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "HamoAI/hamo-score-0.6b"
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default HamoAI/hamo-score-0.6b
Run Hermes
hermes
- Atomic Chat
hamo-score-0.6b — the little model that takes your pulse
给每句话把脉的小模型(中文版说明见下半部分)
hamo-score-0.6b reads one message from a mental-wellness conversation and scores five psychological pulse signals. It never writes replies. It is the first production-distilled component of Hamo AI's closed-loop wellness engine, released so that practitioner-supervised tools can run state scoring locally — no API, no data leaving the room.
⚠️ What this model is NOT. It is not a chatbot, not a diagnostic instrument, and not a crisis detector. In Hamo's own production system, crisis and self-harm content is short-circuited by an independent deterministic mechanism upstream of this model — it never reaches the scorer. Any deployment must reproduce that pattern (see LICENSE §3c).
The five pulses (AWEHB)
Each user message gets five scores on a 0.0–3.0 scale (0.5 grid):
| Dim | Name | Plain reading |
|---|---|---|
| A | Agency | Is the person doing something for themselves? (incl. small plans, coping statements) |
| W | Withdrawal | Giving up, avoiding, disengaging? |
| E | Extremity | Catastrophizing chains, all-or-nothing thinking? (bounded realistic worry stays LOW) |
| H | Hostility | Attacking someone? (venting frustration without a target is NOT hostility) |
| B | Boundary | Can they speak from an "I" position — needs, limits, clear stance? |
A note on B. Its theoretical root is differentiation of self (family-systems sense: a bounded two-person relationship vs. an enmeshed, undifferentiated one). A per-message scorer cannot see the relationship — it sees language. So B measures the linguistic footprint of boundaries: "I need… / I'm not willing… / this is my limit" scores high; panicked venting (self dissolved in affect) scores low; insults are H, not B. B is a per-message signal, not a relationship diagnosis.
The scores are designed to feed deterministic downstream code (stress update, state
buckets, action gating) — in Hamo, an exponential blend 0.8 × history + 0.2 × message
smooths per-message noise 5× before any decision is taken. We recommend the same pattern.
Quickstart
The model was trained on exactly one prompt format (its rubric is baked into the weights — do not add scoring instructions):
给来访者最新消息打分(AWEHB,0.0-3.0)。
此前对话:
user: <turn>
assistant: <turn>
最新消息: <message to score>
The context block (此前对话:) is optional; include up to the last 5 turns. Apply the Qwen3
chat template with thinking disabled, temperature 0. Output is a single JSON object.
transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch, json, re
m = AutoModelForCausalLM.from_pretrained("HamoAI/hamo-score-0.6b", torch_dtype=torch.bfloat16)
tok = AutoTokenizer.from_pretrained("HamoAI/hamo-score-0.6b")
prompt = "给来访者最新消息打分(AWEHB,0.0-3.0)。\n此前对话:\nassistant: 这周过得怎么样?\n最新消息: 今天试着出门散了个步"
text = tok.apply_chat_template([{"role": "user", "content": prompt}],
add_generation_prompt=True, tokenize=False, enable_thinking=False)
out = m.generate(**tok(text, return_tensors="pt"), max_new_tokens=80, do_sample=False)
print(re.search(r"\{[^{}]*\}", tok.decode(out[0])).group())
# {"A": 1.5, "W": 0.0, "E": 0.0, "H": 0.0, "B": 1.0}
ollama / llama.cpp — a ready q8_0 GGUF is in gguf/. Modelfile:
FROM ./hamo-score-0.6b-v4.q8.gguf
TEMPLATE """<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
<think>
</think>
"""
PARAMETER temperature 0
PARAMETER num_predict 80
PARAMETER stop <|im_end|>
Parse the first {...} in the response (the model may emit an empty <think> block first).
Evaluation
Held-out exam: 758 real, de-identified production turns (labels = the production-scale LLM scorer this model replaces; real data was never trained on — exam only).
| Metric | hamo-score-0.6b (v4) | Teacher (DeepSeek, 440-question exam) | Reference scorer self-consistency* |
|---|---|---|---|
| Dimension-level, within ±0.5 | 84.0% (A81 / W86 / E85 / H94 / B73) | 88.7% | 94–98% |
| Decision-level (state bucket after deterministic stress calc) | 96.3% | 97.5% | — |
| JSON validity | ~100% | — | — |
* Self-consistency = the same messages scored twice by the reference scorer in two live environments; its own agreement is only 94–98% at dimension level — the practical ceiling.
Latency (single message, warm): ~0.8 s on Apple M1 Pro (MLX bf16); 1.5–2.9 s on a 2-vCPU ARM server (q8 GGUF, CPU-only). Crisis-phrase W-recall improved 2× over the previous generation — but see the crisis disclaimer above: recall here is defense-in-depth, not the defense.
How it was trained
A three-stage distillation chain — the full story is in the companion write-up Distilling hamo-score-0.6b: Four Generations, Three Bugs, and Why Data Beat Model Size:
- Exam by the incumbent: 1,198 de-identified production turns with reference scores — split into a 440-question teacher-qualification exam and the 758-question held-out final.
- Affordable teacher:
deepseek-chatrunning the exact production rubric, qualified at 89% agreement before being allowed to label anything. - Synthetic textbook: ~20,000 admitted dialogue windows across 5 data generations (40+ scenario cells with per-cell label-band admission gates, style quotas for short/ fragmented/code-switched messages, crisis and boundary contrast pairs). No real client message ever entered training — by construction.
- Student: Qwen3-0.6B, LoRA on a single MacBook (MLX; prompt-masked loss, cosine decay, grad-checkpointing). Total API cost of the whole project: ~US$7.
Key lessons the hard way (kept as disciplines): gradient-mask the prompt (72% of gradient was being wasted); halve batch size when doubling sequence length (a silent fp16 explosion taught us); verify every deploy down to a landed row.
Limitations & known residuals
- Chinese-primary (zh 60% / mixed 22% / en 18% in training); English works but is less tested.
- Message-level footprint, not a person-level or relationship-level assessment.
- Mid-band calibration is coarse (0.5 grid; mid-band usage 7.4% vs reference 21–32%).
- Known residuals under repair (v5): under-crediting conversational actions (booking, coping statements) on A; occasional over-scoring of bounded multi-step worries on E.
- Trained against one specific rubric; scores are relative to that rubric, not universal psychological ground truth.
Versions
| Version | Change | Dim-level | Decision-level |
|---|---|---|---|
| v2 | first distillation (7.5k synthetic) | 81% | 95.4% |
| v3.x | rebalance + defect repair | 81% | 96.8% |
| v4 (this release) | 8-agent data audit → 15k corpus, masked loss | 84% | 96.3% |
| v5 | A-convention + bounded-E patch | in training | — |
License
HAMO-RAIL-S 1.0 (see LICENSE): free commercial and non-commercial use, modification and redistribution, with four use restrictions — no standalone clinical determinations, no consequential decisions about individuals (employment / insurance / surveillance screening), consumer mental-wellness deployments must keep independent upstream crisis handling + AI disclosure, no re-identification. Base model Qwen3-0.6B remains Apache-2.0.
中文说明
hamo-score-0.6b 是 Hamo AI 闭环疗愈引擎里第一个蒸馏进生产的组件:给心理支持对话中 来访者的每一句话「把脉」,输出五路 0–3 分的脉象(A 行动力 / W 退缩 / E 极端化 / H 敌意 / B 边界感)。它从不写回复,也不是危机检测器——在 Hamo 生产系统里,危机内容在更上游被 独立的确定性机制短路,永远到不了把脉师面前;任何部署都必须复刻这个模式(见 LICENSE §3c)。
关于 B(边界感):它的理论本源是家庭治疗中的「自我分化」——是「我是我、你是你」的二元 关系,还是彼此淹没的混沌一元。逐句评分器看不见关系,只看得见语言,所以 B 测的是边界感的 语言足迹:「我需要…」「这是我的底线」得高分;惊慌的倾泻(自我淹没在情绪里)得低分; 骂人算 H 不算 B。B 是逐句信号,不是关系诊断。
成绩单:758 条真实脱敏生产对话终评(评分真值来自被替换的大模型评分器;真实数据只做考卷、 从未参与训练):维度级 ±0.5 一致率 84.0%,决策级(经确定性压力折算后的状态桶判定)96.3%; 参照系——同一批消息让原评分器自己打两遍,维度级自洽也只有 94–98%。单条延迟:M1 Pro 约 0.8 秒;2 vCPU ARM 服务器(纯 CPU,q8 GGUF)1.5–2.9 秒。
训练方式:三级师徒链——生产历史评分出考卷(1,198 条脱敏真题)→ DeepSeek 过 440 题 资格考(89%)后当教师 → 约 2 万段合成对话当教材(40+ 场景格子、逐格标签准入闸门、短句/ 碎片/中英混杂风格配额)→ Qwen3-0.6B 学生在一台 MacBook 上 LoRA 学成。全项目 API 成本 约 7 美元。训练语料不含任何真实来访者消息(构造上保证)。
许可证:HAMO-RAIL-S 1.0——自由商用与修改,但有四条使用限制:不得独立做临床判定、 不得用于对个人的重大决定(雇佣/保险/监控筛查)、面向消费者的心理健康部署必须保留独立的 上游危机处理与 AI 身份披露、不得试图重识别个人。
配套阅读(背景与方法论):《hamo-score-0.6b 是怎么蒸出来的:四代迭代、三个坑,以及数据为什么赢了参数量》。
- Downloads last month
- -
Quantized