发布

  • [OPIK-6429] [FE] feat: per-model OpenAI reasoning_effort capability map (#6644)

    frostbyte_neo 发布于 2026-05-12 08:44:30 +00:00

    • feat(types): add 'none' to ReasoningEffort union for gpt-5.1+

    • feat(llm): add OPENAI_MODEL_CAPABILITIES per-model map

    • feat(modelUtils): add supportsOpenAIReasoningEffort + getOpenAIReasoningEffortOptions

    • fix(modelUtils): make isReasoningModel consult OPENAI_MODEL_CAPABILITIES for OpenAI

    Stops BE YAML drift from silently disabling the reasoning UI. Other
    providers still use the BE flag as primary source.

    • test(modelUtils): add OpenAI reasoning_effort reconciler tests (red)

    • feat(modelUtils): reconcile OpenAI reasoningEffort across model switches

    Mirrors the Anthropic thinkingEffort branch: drops reasoningEffort for
    models without an effort dropdown, coerces stale values to 'high'.

    • test(modelUtils): add sanitizeConfigForRequest tests for OpenAI reasoningEffort (red)

    • feat(modelUtils): strip unsupported reasoningEffort from outbound OpenAI requests

    Last-mile defense for stale localStorage that pre-dates the reconciler.

    • feat(playground): gate reasoningEffort default on per-model capability

    Fixes o1-mini default-config builder writing a field the API rejects, and
    aligns the playground default with the rest of the system ('high').

    • fix(playground/v1): drive OpenAI reasoning-effort dropdown from per-model options

    • fix(playground/v2): drive OpenAI reasoning-effort dropdown from per-model options

    • feat(llm): add gpt-5.3/5.4/5.5 chat-completable models to OPENAI_MODEL_CAPABILITIES

    A 'sync provider model definitions' commit landed these enum values
    after the original spec was written. Without map entries they fall
    through isReasoningModel as non-reasoning, hiding the dropdown and
    leaving the temperature slider unrestricted — the same failure mode
    this PR set out to fix. Responses-API-only variants (5.3-codex, 5.4-pro,
    5.5-pro) stay out of the map per the spec's scope.

    • fix(playground/experiments): sanitize prompt.configs before posting to the backend

    The experiment execution path bypassed sanitizeConfigForRequest, so stale
    or unsupported reasoningEffort values could reach the backend and 4xx
    upstream. Mirrors what the streaming-completion path already does.

    • feat(playground): default OpenAI provider to gpt-5.5

    Both the playground and the online-scoring rule dialog read the OpenAI
    provider's defaultModel from PROVIDERS[OPEN_AI].defaultModel as the
    fallback when there's no last-picked model in localStorage. Bumping
    from 5.2 to 5.5 surfaces the latest model by default.

    • feat(llm): add xhigh to gpt-5.5's reasoningEffortOptions

    Per the gpt-5.5 model docs: 'Use reasoning.effort to choose between low,
    medium, high, or xhigh. The default is medium.' gpt-5.5 is the only
    chat-completable OpenAI reasoning model that accepts xhigh today
    (gpt-5.1-codex-max also accepts it but is Responses-API-only and not
    surfaced in the playground).

    下载附件