fix: reject conflicting raw reasoning overrides before sending
This commit is contained in:
@@ -34,7 +34,12 @@ from polygateway.sources import (
|
||||
RoundRobinSelector,
|
||||
SourceCooldownMemo,
|
||||
)
|
||||
from polygateway.thinking import effective_effort, get_capability, resolve_thinking
|
||||
from polygateway.thinking import (
|
||||
effective_effort,
|
||||
get_capability,
|
||||
resolve_thinking,
|
||||
validate_thinking_raw,
|
||||
)
|
||||
from polygateway.transports.openai_compat import OpenAICompatTransport
|
||||
from polygateway.types import (
|
||||
ChatRequest,
|
||||
@@ -82,21 +87,26 @@ def _guard_thinking(
|
||||
就带着指路信息炸掉。`get_provider` 现在就是同一形态的双点调用。
|
||||
"""
|
||||
for source, profile in zip(sources, profiles, strict=True):
|
||||
effort = effective_effort(
|
||||
request_effort=None,
|
||||
source_effort=source.reasoning_effort,
|
||||
enable_thinking=source.enable_thinking,
|
||||
)
|
||||
resolve_thinking(
|
||||
profile,
|
||||
get_capability(source.model, table=capabilities),
|
||||
# 装配期看不见请求级档位(它逐次调用才产生),故只解源级两层;请求级
|
||||
# 只能在运行期由 transport 校验(设计 §10 的装配期/运行期分工)
|
||||
effective_effort(
|
||||
request_effort=None,
|
||||
source_effort=source.reasoning_effort,
|
||||
enable_thinking=source.enable_thinking,
|
||||
),
|
||||
effort,
|
||||
model=source.model,
|
||||
# 与 transport 用同一个 fallback,否则配了 nearest 的源会在装配期就被
|
||||
# 判死,而它在运行期本来是能映射到最近档跑起来的
|
||||
fallback=source.effort_fallback,
|
||||
)
|
||||
validate_thinking_raw(
|
||||
source.extra_body,
|
||||
effort=effort,
|
||||
wire=profile.thinking,
|
||||
origin=f"源 {source.name} extra_body",
|
||||
)
|
||||
|
||||
|
||||
def _fingerprint_mark(source: SourceConfig) -> str:
|
||||
@@ -359,6 +369,7 @@ class GatewayClient:
|
||||
if reasoning_effort is None
|
||||
else coerce_effort(reasoning_effort, origin="chat(reasoning_effort=...)")
|
||||
)
|
||||
validate_thinking_raw(sampling, effort=effort, wire=None, origin="chat overlay")
|
||||
request = ChatRequest(
|
||||
messages=messages,
|
||||
session_id=session_id,
|
||||
|
||||
Reference in New Issue
Block a user