fix: reject conflicting raw reasoning overrides before sending
This commit is contained in:
@@ -34,6 +34,7 @@ from polygateway.thinking import (
|
||||
observe_thinking,
|
||||
reconcile_thinking,
|
||||
resolve_thinking,
|
||||
validate_thinking_raw,
|
||||
)
|
||||
from polygateway.transports._http_errors import compose_message, summarize_body
|
||||
from polygateway.types import (
|
||||
@@ -371,20 +372,23 @@ class OpenAICompatTransport:
|
||||
self._warned_models.add(source.model)
|
||||
# 三层优先级在此汇合: 请求级 > 源级 > enable_thinking 语法糖(设计 §4.2)。
|
||||
# 判定与装配守卫共用同一个纯函数,两处分叉就会变成"装配期放行、运行期报错"
|
||||
effort = effective_effort(
|
||||
request_effort=reasoning_effort,
|
||||
source_effort=source.reasoning_effort,
|
||||
enable_thinking=source.enable_thinking,
|
||||
)
|
||||
resolution = resolve_thinking(
|
||||
profile,
|
||||
capability,
|
||||
effective_effort(
|
||||
request_effort=reasoning_effort,
|
||||
source_effort=source.reasoning_effort,
|
||||
enable_thinking=source.enable_thinking,
|
||||
),
|
||||
effort,
|
||||
model=source.model,
|
||||
# 源级 `EFFORT_FALLBACK` 必须真的走到这里: 硬编码 "error" 会让人类明确
|
||||
# 要求实现的 `nearest` 在零告警下变成死代码(2026-09-05 独立验证查出)
|
||||
fallback=source.effort_fallback,
|
||||
warn_unregistered=first_time,
|
||||
)
|
||||
for raw, origin in ((source.extra_body, "source extra_body"), (overlay, "request overlay")):
|
||||
validate_thinking_raw(raw, effort=effort, wire=profile.thinking, origin=origin)
|
||||
payload.update(resolution.payload)
|
||||
# 顺序即优先级(issue #4 设计决策 A): 配置级 extra_body 在前,调用级
|
||||
# overlay(含结构化注入)在后覆盖之。两行不可调换
|
||||
|
||||
Reference in New Issue
Block a user