发布

  • fix(ollama): accept float-encoded integer options (fixes #9837) (#9849)

    frostbyte_neo 发布于 2026-05-16 16:38:19 +00:00

    fix(ollama): accept float-encoded integer options (num_ctx, top_k, ...)

    Home Assistant's Ollama integration encodes integer options as JSON
    floats (e.g. "num_ctx": 8192.0). Stdlib json.Unmarshal refuses to
    decode a number with fractional notation into an int field, so the
    entire request was rejected with HTTP 400 before reaching the backend:

    Unmarshal type error: expected=int, got=number 8192.0,
    field=options.num_ctx

    Add a custom UnmarshalJSON on OllamaOptions that routes the int
    fields (top_k, num_predict, seed, repeat_last_n, num_ctx)
    through *json.Number, then converts via Int64() with a Float64()
    fallback. Public field types are unchanged, so endpoint code is
    untouched. Float fields and stop continue to parse via the default
    path.

    Fixes #9837

    Assisted-by: Claude Code:claude-opus-4-7

    Signed-off-by: Ettore Di Giacinto mudler@localai.io
    Co-authored-by: Ettore Di Giacinto mudler@localai.io

    下载附件