Commit ddafc18
authored
Reject /v1 suffix on OpenAIProvider base_url (#84)
* Reject /v1 suffix on OpenAIProvider base_url
httpx joins base_url paths by appending, so an unprefixed /v1 on
base_url produces a doubled /v1/v1/... wire path that some backends
(Bifrost was the motivating case) accept on GET /v1/v1/models while
rejecting POST /v1/v1/chat/completions. Result: the readiness probe
stays green and every completion silently 405s.
Raise ValueError at construction time when base_url's path ends in
/v1 (with or without trailing slash) so the misconfiguration is
visible at lifespan startup, not inside per-call wire failures.
Trailing slashes are still normalized; other non-empty paths
(proxy prefixes like /api/openai-proxy) are left alone for
intentional reverse-proxy setups.
Also fix docs/model-providers/index.md which wrongly showed
base_url="http://localhost:8000/v1" as the canonical shape.
* Catch /v1 suffix when followed by query string or fragment
The previous validation called rstrip("/") on the full base_url
before parsing, which is a no-op when the URL ends in a query
string or fragment character (e.g., the 'c' in '?token=abc').
The parsed path's own trailing slash was then left intact, so
'/v1/' slipped past the endswith('/v1') check.
Strip trailing slashes from the parsed path itself before the
suffix check. Adds two unit tests covering the query-string and
fragment cases.1 parent eb80430 commit ddafc18
3 files changed
Lines changed: 126 additions & 2 deletions
File tree
- docs/model-providers
- src/openarmature/llm/providers
- tests/unit
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
186 | 186 | | |
187 | 187 | | |
188 | 188 | | |
189 | | - | |
| 189 | + | |
190 | 190 | | |
191 | 191 | | |
192 | 192 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
49 | 50 | | |
50 | 51 | | |
51 | 52 | | |
| |||
111 | 112 | | |
112 | 113 | | |
113 | 114 | | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
114 | 128 | | |
115 | 129 | | |
116 | 130 | | |
| |||
124 | 138 | | |
125 | 139 | | |
126 | 140 | | |
127 | | - | |
| 141 | + | |
128 | 142 | | |
129 | 143 | | |
130 | 144 | | |
| |||
589 | 603 | | |
590 | 604 | | |
591 | 605 | | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
592 | 646 | | |
593 | 647 | | |
594 | 648 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
207 | 207 | | |
208 | 208 | | |
209 | 209 | | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
210 | 280 | | |
211 | 281 | | |
212 | 282 | | |
| |||
0 commit comments