114 lines
4.1 KiB
Markdown
114 lines
4.1 KiB
Markdown
# Noris Provider: Available Models
|
|
|
|
As of 2026-06-27, the noris provider at `https://ai.noris.de/v1` exposes these models for the Schön Consulting virtual key:
|
|
|
|
## Anthropic Models (vision-capable)
|
|
|
|
- `anthropic/claude-fable-5`
|
|
- `anthropic/claude-haiku-4-5-20251001` — ✅ fast, vision-capable, good for auxiliary.vision
|
|
- `anthropic/claude-opus-4-1-20250805`
|
|
- `anthropic/claude-opus-4-5-20251101`
|
|
- `anthropic/claude-opus-4-6`
|
|
- `anthropic/claude-opus-4-7`
|
|
- `anthropic/claude-opus-4-8`
|
|
- `anthropic/claude-sonnet-4-5-20250929`
|
|
- `anthropic/claude-sonnet-4-6`
|
|
|
|
## Self-hosted vLLM Models
|
|
|
|
- `vllm/gemma-4-31b-it` — usable (nutrition-coach uses this)
|
|
- `vllm/gemma-4-31b-it-dynamo`
|
|
- `vllm/glm-5-2-nvfp4` — ✅ verified working (2026-06-27). Current CEO/default model.
|
|
- `vllm/gpt-oss-120b` — usable
|
|
- `vllm/harrier-oss-v1-0.6b`
|
|
- `vllm/moonshotai/kimi-k2.6` — usable (infra-sre uses this)
|
|
- `vllm/qwen3.5-122b-a10b`
|
|
- `vllm/qwen3.6-27b-nvfp4` — ✅ verified working (2026-06-18). Returns reasoning-only format: `content: null`, `reasoning: "..."`
|
|
- `vllm/qwen3.6-35b-a3b`
|
|
|
|
## Vision / Multimodal Capability (tested 2026-06-27)
|
|
|
|
Tested by sending image+text to `/v1/chat/completions`:
|
|
|
|
| Model | Vision? | Notes |
|
|
|-------|---------|-------|
|
|
| `vllm/gemma-4-31b-it` | ✅ Yes | Good descriptions, recommended for `auxiliary.vision` |
|
|
| `vllm/qwen3.5-122b-a10b` | ✅ Yes | Works but terse output |
|
|
| `vllm/glm-5-2-nvfp4` | ❌ No | Returns `"glm-5-2-nvfp4 is not a multimodal model"` |
|
|
| `vllm/qwen3.6-27b-nvfp4` | ❌ No | HTTP 400 |
|
|
| All `anthropic/*` models | ✅ Yes | `claude-haiku-4-5` fastest option |
|
|
|
|
**User preference: prefer `vllm/` models over `anthropic/` for auxiliary tasks.**
|
|
|
|
Current `auxiliary.vision` config:
|
|
```bash
|
|
hermes config set auxiliary.vision.provider noris
|
|
hermes config set auxiliary.vision.model vllm/gemma-4-31b-it
|
|
hermes config set auxiliary.vision.base_url ''
|
|
hermes config set auxiliary.vision.api_key ''
|
|
```
|
|
|
|
### Testing vision capability programmatically
|
|
|
|
```python
|
|
import yaml, urllib.request, json, base64
|
|
|
|
with open("/home/debian/.hermes/config.yaml") as f:
|
|
cfg = yaml.safe_load(f)
|
|
key = cfg["providers"]["noris"]["api_key"]
|
|
|
|
with open("test_image.jpg", "rb") as f:
|
|
img_b64 = base64.b64encode(f.read()).decode()
|
|
|
|
payload = {
|
|
"model": "<MODEL_NAME>",
|
|
"messages": [{"role": "user", "content": [
|
|
{"type": "text", "text": "Describe this image briefly."},
|
|
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}}
|
|
]}],
|
|
"max_tokens": 50
|
|
}
|
|
req = urllib.request.Request(
|
|
"https://ai.noris.de/v1/chat/completions",
|
|
data=json.dumps(payload).encode(),
|
|
headers={"Authorization": f"Bearer {key}", "Content-Type": "application/json"}
|
|
)
|
|
try:
|
|
with urllib.request.urlopen(req, timeout=30) as resp:
|
|
print(json.loads(resp.read())["choices"][0]["message"]["content"])
|
|
except Exception as e:
|
|
print(f"Not multimodal: {e}")
|
|
```
|
|
|
|
## Embedding / Reranker Models (non-chat)
|
|
|
|
- `vllm/bge-reranker-v2-m3`
|
|
- `vllm/jina-reranker-v2-base-multilingual`
|
|
|
|
## Blocked Models
|
|
|
|
- `vllm/gemma-4-27b-it` — returns 403: `{"type":"model_blocked","error":{"message":"Model 'gemma-4-27b-it' is not allowed for this virtual key"}}`
|
|
|
|
## Verification
|
|
|
|
```python
|
|
import yaml, urllib.request, json
|
|
|
|
with open("/home/debian/.hermes/config.yaml") as f:
|
|
cfg = yaml.safe_load(f)
|
|
key = cfg["providers"]["noris"]["api_key"]
|
|
|
|
req = urllib.request.Request(
|
|
"https://ai.noris.de/v1/models",
|
|
headers={"Authorization": f"Bearer {key}"}
|
|
)
|
|
with urllib.request.urlopen(req) as resp:
|
|
models = json.loads(resp.read())
|
|
for m in sorted(models["data"], key=lambda x: x["id"]):
|
|
print(m["id"])
|
|
```
|
|
|
|
Always verify model availability via the `/v1/models` endpoint before assigning to an agent profile. A blocked model will cause silent 403 errors on first user interaction.
|
|
|
|
**Vision pitfall:** Not all chat models support image input. `vllm/glm-5-2-nvfp4` (the default CEO model) is NOT multimodal — `vision_analyze` will fail with `"is not a multimodal model"`. Set `auxiliary.vision.model` to a vision-capable model like `vllm/gemma-4-31b-it`. See the "Vision / Multimodal Capability" section above for the full tested matrix.
|