Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion docs/doctoring/strix-openai-fallback-api-base-routing.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,11 @@ Regression evidence proves that:
8. the workflow provisions the override file and passes it into the gate env;
9. the required-workflow smoke contract pins both sides of the wiring; and
10. the stale `gpt-5.6-luna` expectations left behind by the model rename are
aligned with the valid `gpt-5.4` contract in queue-contract tests.
aligned with the valid `gpt-5.4` contract in queue-contract tests; and
11. the direct GPT-5.4 fallback clears reasoning effort to `none` because the
pinned Strix scanner uses Chat Completions function tools, a combination
the provider rejects when `reasoning_effort` is present. Other models keep
the workflow's configured `high` effort.

## Limitations

Expand Down
11 changes: 11 additions & 0 deletions scripts/ci/strix_quick_gate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2580,6 +2580,14 @@ run_strix_once() {
local start_epoch
start_epoch="$(date +%s)"
local child_llm_api_key=""
local child_reasoning_effort="${STRIX_REASONING_EFFORT:-}"
case "$(normalize_model "$model")" in
openai-direct/gpt-5.4 | openai_direct/gpt-5.4)
# OpenAI rejects function tools plus reasoning_effort for GPT-5.4 on
# Chat Completions, the transport used by the pinned Strix scanner.
child_reasoning_effort="none"
;;
esac
if ! is_vertex_model "$(normalize_model "$model")"; then
child_llm_api_key="$LLM_API_KEY"
if is_github_models_model "$(normalize_model "$model")" && [ -n "$STRIX_GITHUB_MODELS_KEY" ]; then
Comment thread
seonghobae marked this conversation as resolved.
Expand All @@ -2597,6 +2605,7 @@ run_strix_once() {
set -o pipefail
set +e
STRIX_CHILD_MODEL="$child_model" \
STRIX_CHILD_REASONING_EFFORT="$child_reasoning_effort" \
STRIX_CHILD_LLM_API_KEY="$child_llm_api_key" \
STRIX_CHILD_LLM_API_BASE="$llm_api_base_value" \
STRIX_CHILD_REPORTS_DIR="$ACTIVE_REPORTS_DIR" \
Expand Down Expand Up @@ -2682,6 +2691,8 @@ for key in (
value = os.environ.get(key)
if value:
child_env[key] = value
if os.environ.get("STRIX_CHILD_REASONING_EFFORT"):
child_env["STRIX_REASONING_EFFORT"] = os.environ["STRIX_CHILD_REASONING_EFFORT"]
llm_api_base = os.environ.get("STRIX_CHILD_LLM_API_BASE", "")
if llm_api_base:
child_env["LLM_API_BASE"] = llm_api_base
Expand Down
5 changes: 5 additions & 0 deletions scripts/ci/test_strix_quick_gate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3415,6 +3415,10 @@ REPORT
exit 1
;;
openai/gpt-5.4)
if [ "${STRIX_REASONING_EFFORT:-}" != "none" ]; then
echo "direct OpenAI GPT-5.4 fallback retained unsupported reasoning effort (${STRIX_REASONING_EFFORT:-<unset>})" >&2
exit 29
fi
if [ "${LLM_API_KEY:-}" != "openai-fallback-token" ]; then
echo "unexpected direct-OpenAI fallback key (${LLM_API_KEY:-<unset>})" >&2
exit 26
Expand Down Expand Up @@ -5701,6 +5705,7 @@ PY
if [ "$scenario" = "nvidia-rate-limit-openai-direct-fallback-clears-api-base" ]; then
printf '%s' 'openai-fallback-token' >"$tmp_dir/openai_fallback_key.txt"
env_cmd+=(STRIX_OPENAI_FALLBACK_KEY_FILE="$tmp_dir/openai_fallback_key.txt")
env_cmd+=(STRIX_REASONING_EFFORT="high")
fi
if [ "$scenario" = "openai-direct-quota-github-models-fallback-success" ]; then
printf '%s' 'https://models.github.ai/inference' >"$tmp_dir/github_models_api_base.txt"
Expand Down
Loading