From fba4bb7796fca423dac7dc8195f2dc9b74525c33 Mon Sep 17 00:00:00 2001 From: Andre Landgraf Date: Sat, 8 Aug 2026 18:34:38 -0700 Subject: [PATCH] Neon: declare structured_output where it does not resolve (#4361) --- providers/neon/models/claude-fable-5.toml | 1 + providers/neon/models/claude-haiku-4-5.toml | 1 + providers/neon/models/claude-opus-4-1.toml | 1 + providers/neon/models/claude-opus-4-5.toml | 1 + providers/neon/models/claude-opus-4-6.toml | 1 + providers/neon/models/claude-opus-4-7.toml | 1 + providers/neon/models/claude-opus-4-8.toml | 1 + providers/neon/models/claude-opus-5.toml | 1 + providers/neon/models/claude-sonnet-4-5.toml | 1 + providers/neon/models/claude-sonnet-4-6.toml | 1 + providers/neon/models/claude-sonnet-5.toml | 1 + providers/neon/models/inkling.toml | 4 ++++ providers/neon/models/llama-4-maverick.toml | 1 + providers/neon/models/meta-llama-3-3-70b-instruct.toml | 1 + providers/neon/models/qwen3-next-80b-a3b-instruct.toml | 1 + 15 files changed, 18 insertions(+) diff --git a/providers/neon/models/claude-fable-5.toml b/providers/neon/models/claude-fable-5.toml index 9e21dddc0..f010fbf76 100644 --- a/providers/neon/models/claude-fable-5.toml +++ b/providers/neon/models/claude-fable-5.toml @@ -1,6 +1,7 @@ # No toggle: "thinking.type.disabled" is rejected for this model, which defaults to # adaptive thinking, so effort is the only control the gateway exposes. base_model = "anthropic/claude-fable-5" +structured_output = true reasoning_options = [ { type = "effort", values = ["low", "medium", "high", "xhigh", "max"] }, # API: {"thinking": {"type": "adaptive"}, "output_config": {"effort": }} ] diff --git a/providers/neon/models/claude-haiku-4-5.toml b/providers/neon/models/claude-haiku-4-5.toml index b06b9a421..719765dac 100644 --- a/providers/neon/models/claude-haiku-4-5.toml +++ b/providers/neon/models/claude-haiku-4-5.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-haiku-4-5" +structured_output = true reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1_024, max = 63_999 }] [cost] diff --git a/providers/neon/models/claude-opus-4-1.toml b/providers/neon/models/claude-opus-4-1.toml index 01b8bacfd..73584f76d 100644 --- a/providers/neon/models/claude-opus-4-1.toml +++ b/providers/neon/models/claude-opus-4-1.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-opus-4-1" +structured_output = true reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1_024, max = 31_999 }] [cost] diff --git a/providers/neon/models/claude-opus-4-5.toml b/providers/neon/models/claude-opus-4-5.toml index 6daf36e0f..4f7f9ebac 100644 --- a/providers/neon/models/claude-opus-4-5.toml +++ b/providers/neon/models/claude-opus-4-5.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-opus-4-5" +structured_output = true reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1_024, max = 63_999 }] [cost] diff --git a/providers/neon/models/claude-opus-4-6.toml b/providers/neon/models/claude-opus-4-6.toml index 9be9559f3..5e7e94a46 100644 --- a/providers/neon/models/claude-opus-4-6.toml +++ b/providers/neon/models/claude-opus-4-6.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-opus-4-6" +structured_output = true reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1_024, max = 127_999 }] [cost] diff --git a/providers/neon/models/claude-opus-4-7.toml b/providers/neon/models/claude-opus-4-7.toml index 1b799e594..5888b2538 100644 --- a/providers/neon/models/claude-opus-4-7.toml +++ b/providers/neon/models/claude-opus-4-7.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-opus-4-7" +structured_output = true reasoning_options = [{ type = "toggle" }, { type = "effort", values = ["low", "medium", "high", "xhigh", "max"] }] [cost] diff --git a/providers/neon/models/claude-opus-4-8.toml b/providers/neon/models/claude-opus-4-8.toml index b1bcd8b5c..67d1d0cfb 100644 --- a/providers/neon/models/claude-opus-4-8.toml +++ b/providers/neon/models/claude-opus-4-8.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-opus-4-8" +structured_output = true reasoning_options = [{ type = "toggle" }, { type = "effort", values = ["low", "medium", "high", "xhigh", "max"] }] [cost] diff --git a/providers/neon/models/claude-opus-5.toml b/providers/neon/models/claude-opus-5.toml index 76f44dd51..919dc54b5 100644 --- a/providers/neon/models/claude-opus-5.toml +++ b/providers/neon/models/claude-opus-5.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-opus-5" +structured_output = true reasoning_options = [ { type = "toggle" }, # API: {"thinking": {"type": "adaptive"|"disabled"}} { type = "effort", values = ["low", "medium", "high", "xhigh", "max"] }, # API: {"thinking": {"type": "adaptive"}, "output_config": {"effort": }} diff --git a/providers/neon/models/claude-sonnet-4-5.toml b/providers/neon/models/claude-sonnet-4-5.toml index 9ab36b59b..83b00df34 100644 --- a/providers/neon/models/claude-sonnet-4-5.toml +++ b/providers/neon/models/claude-sonnet-4-5.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-sonnet-4-5" +structured_output = true reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1_024, max = 63_999 }] [cost] diff --git a/providers/neon/models/claude-sonnet-4-6.toml b/providers/neon/models/claude-sonnet-4-6.toml index 453ee1d42..98b2e11ed 100644 --- a/providers/neon/models/claude-sonnet-4-6.toml +++ b/providers/neon/models/claude-sonnet-4-6.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-sonnet-4-6" +structured_output = true reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1_024, max = 63_999 }] [cost] diff --git a/providers/neon/models/claude-sonnet-5.toml b/providers/neon/models/claude-sonnet-5.toml index b8fc15c40..e6caa37cc 100644 --- a/providers/neon/models/claude-sonnet-5.toml +++ b/providers/neon/models/claude-sonnet-5.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-sonnet-5" +structured_output = true reasoning_options = [ { type = "toggle" }, # API: {"thinking": {"type": "adaptive"|"disabled"}} { type = "effort", values = ["low", "medium", "high", "xhigh", "max"] }, # API: {"thinking": {"type": "adaptive"}, "output_config": {"effort": }} diff --git a/providers/neon/models/inkling.toml b/providers/neon/models/inkling.toml index 8c0aeae82..d86e80c64 100644 --- a/providers/neon/models/inkling.toml +++ b/providers/neon/models/inkling.toml @@ -1,4 +1,8 @@ base_model = "thinkingmachines/inkling" +# The gateway does not honour response_format json_schema here: it answers +# 200 with finish_reason "abort" and empty content, with strict true or +# false, at any token budget. Plain requests work. Measured 2026-08-08. +structured_output = false reasoning_options = [ { type = "toggle" }, # API: {"thinking": {"type": "enabled"|"disabled"}} { type = "effort", values = ["none", "minimal", "low", "medium", "high", "max"] }, # API: {"reasoning_effort": } diff --git a/providers/neon/models/llama-4-maverick.toml b/providers/neon/models/llama-4-maverick.toml index 8e5216c76..aa3a1d732 100644 --- a/providers/neon/models/llama-4-maverick.toml +++ b/providers/neon/models/llama-4-maverick.toml @@ -1,4 +1,5 @@ base_model = "meta/llama-4-maverick-17b-instruct" +structured_output = true [cost] input = 0.5 diff --git a/providers/neon/models/meta-llama-3-3-70b-instruct.toml b/providers/neon/models/meta-llama-3-3-70b-instruct.toml index d8f00bd4b..ca0634e4a 100644 --- a/providers/neon/models/meta-llama-3-3-70b-instruct.toml +++ b/providers/neon/models/meta-llama-3-3-70b-instruct.toml @@ -1,4 +1,5 @@ base_model = "meta/llama-3.3-70b-instruct" +structured_output = true attachment = false [cost] diff --git a/providers/neon/models/qwen3-next-80b-a3b-instruct.toml b/providers/neon/models/qwen3-next-80b-a3b-instruct.toml index 09891008d..9fe86c05e 100644 --- a/providers/neon/models/qwen3-next-80b-a3b-instruct.toml +++ b/providers/neon/models/qwen3-next-80b-a3b-instruct.toml @@ -1,4 +1,5 @@ base_model = "alibaba/qwen3-next-80b-a3b-instruct" +structured_output = true [cost] input = 0.15