From e3873b7b136510e3af205627134749b70110ed21 Mon Sep 17 00:00:00 2001 From: JR Boos Date: Mon, 26 Oct 2026 13:38:42 -0400 Subject: [PATCH] Update default OpenAI model from gpt-4o-mini to gpt-5.6-luna across configs, docs, examples, and tests --- .github/workflows/e2e_tests_providers.yaml | 4 +- Makefile | 2 +- README.md | 6 +-- docker-compose-library.yaml | 2 +- docker-compose.yaml | 2 +- docs/config.html | 2 +- docs/config.json | 2 +- docs/config.md | 2 +- docs/container_orchestration.md | 2 +- docs/deployment_guide.md | 6 +-- .../conversation-compaction-spike.md | 2 +- .../conversation-compaction.md | 6 +-- .../llama-stack-config-merge-spike.md | 6 +-- .../llama-stack-config-merge.md | 10 ++--- docs/e2e_testing.md | 2 +- docs/getting_started.md | 2 +- docs/models/compaction.md | 2 +- docs/models/responses_succ.md | 2 +- docs/openapi.json | 38 +++++++++---------- docs/openapi.md | 2 +- docs/rag_guide.md | 2 +- examples/azure-run.yaml | 6 +-- examples/bedrock-run.yaml | 2 +- examples/run.yaml | 8 ++-- examples/vertexai-run.yaml | 2 +- examples/vllm-rhaiis.yaml | 2 +- examples/vllm-rhelai.yaml | 4 +- examples/vllm-rhoai.yaml | 2 +- examples/watsonx-run.yaml | 2 +- run.yaml | 4 +- scripts/llama_stack_tutorial.sh | 2 +- src/data/default_run.yaml | 4 +- src/models/api/requests/responses_openai.py | 2 +- .../api/responses/error/content_too_large.py | 2 +- src/models/api/responses/error/not_found.py | 2 +- .../api/responses/successful/conversations.py | 4 +- .../responses/successful/responses_openai.py | 4 +- src/models/common/conversation.py | 2 +- src/models/compaction.py | 2 +- src/models/config.py | 2 +- .../question_validity/_capability.py | 2 +- src/utils/compaction.py | 2 +- src/utils/token_estimator.py | 2 +- tests/benchmarks/data/python_1000_lines.py | 12 +++--- .../lightspeed/llama-stack-openai.yaml | 2 +- .../lightspeed/llama-stack-prow.yaml | 2 +- tests/e2e-prow/rhoai/pipeline-konflux.sh | 2 +- tests/e2e/configs/run-azure.yaml | 10 ++--- tests/e2e/configs/run-bedrock.yaml | 4 +- tests/e2e/configs/run-ci.yaml | 4 +- tests/e2e/configs/run-rhaiis.yaml | 4 +- tests/e2e/configs/run-rhelai.yaml | 4 +- tests/e2e/configs/run-vertexai.yaml | 4 +- tests/e2e/configs/run-watsonx.yaml | 4 +- .../lightspeed-stack-auth-noop-token.yaml | 2 +- .../lightspeed-stack-byok-pdf.yaml | 2 +- .../lightspeed-stack-inline-rag.yaml | 2 +- .../lightspeed-stack-skills-directory.yaml | 2 +- .../library-mode/lightspeed-stack-skills.yaml | 2 +- .../library-mode/lightspeed-stack.yaml | 2 +- .../lightspeed-stack-auth-noop-token.yaml | 2 +- .../lightspeed-stack-degraded-mode.yaml | 2 +- .../lightspeed-stack-inline-rag.yaml | 2 +- .../lightspeed-stack-skills-directory.yaml | 2 +- .../server-mode/lightspeed-stack-skills.yaml | 2 +- .../server-mode/lightspeed-stack.yaml | 2 +- tests/e2e/features/environment.py | 2 +- tests/e2e/features/steps/info.py | 4 +- tests/e2e/utils/llama_stack_utils.py | 2 +- tests/unit/app/endpoints/test_rlsapi_v1.py | 4 +- tests/unit/cache/test_in_memory_cache.py | 2 +- tests/unit/cache/test_noop_cache.py | 2 +- tests/unit/cache/test_postgres_cache.py | 6 +-- tests/unit/cache/test_sqlite_cache.py | 8 ++-- .../config/test_inference_configuration.py | 8 ++-- tests/unit/models/test_compaction.py | 4 +- tests/unit/telemetry/conftest.py | 6 +-- .../telemetry/test_configuration_snapshot.py | 4 +- tests/unit/test_configuration.py | 8 ++-- tests/unit/test_llama_stack_synthesize.py | 4 +- tests/unit/utils/test_compaction.py | 30 +++++++-------- .../utils/test_conversation_compaction.py | 2 +- tests/unit/utils/test_token_estimator.py | 8 ++-- 83 files changed, 174 insertions(+), 174 deletions(-) diff --git a/.github/workflows/e2e_tests_providers.yaml b/.github/workflows/e2e_tests_providers.yaml index b4ffc5d89..7dd045768 100644 --- a/.github/workflows/e2e_tests_providers.yaml +++ b/.github/workflows/e2e_tests_providers.yaml @@ -17,13 +17,13 @@ jobs: # Expected default LLM for Behave (matches tests/e2e/configs/run-.yaml). # | environment | model_id | provider_id | # |-------------|-------------------------------------|---------------| - # | azure | gpt-4o-mini | azure | + # | azure | gpt-5.6-luna | azure | # | vertexai | google/gemini-2.5-flash | google-vertex | # | watsonx | meta-llama/llama-3-3-70b-instruct | watsonx | # | bedrock | deepseek.v3-v1:0 | aws-bedrock | include: - environment: azure - e2e_default_model: gpt-4o-mini + e2e_default_model: gpt-5.6-luna e2e_default_provider: azure - environment: vertexai e2e_default_model: google/gemini-2.5-flash diff --git a/Makefile b/Makefile index b9b172b45..9cb3a525f 100644 --- a/Makefile +++ b/Makefile @@ -74,7 +74,7 @@ start-llama-stack-container: build-llama-stack-image ## Start llama-stack contai -e OPENAI_API_KEY \ -e BRAVE_SEARCH_API_KEY \ -e TAVILY_SEARCH_API_KEY \ - -e E2E_OPENAI_MODEL=$${E2E_OPENAI_MODEL:-gpt-4o-mini} \ + -e E2E_OPENAI_MODEL=$${E2E_OPENAI_MODEL:-gpt-5.6-luna} \ -e TENANT_ID=$${TENANT_ID:-} \ -e CLIENT_ID=$${CLIENT_ID:-} \ -e CLIENT_SECRET \ diff --git a/README.md b/README.md index ad8d77083..5201d44ae 100644 --- a/README.md +++ b/README.md @@ -243,7 +243,7 @@ __Note__: Support for individual models is dependent on the specific inference p | OpenAI | gpt-3.5-turbo, gpt-4 | No | remote::openai | | | RHOAI (vLLM) | meta-llama/Llama-3.2-1B-Instruct | Yes | remote::vllm | [1](tests/e2e-prow/rhoai/configs/run.yaml) | | RHEL AI (RHAIIS/vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhelai.yaml) [2](tests/e2e/configs/run-rhaiis.yaml) | -| Azure | gpt-5, gpt-5-mini, gpt-5-nano, gpt-4o-mini, o3-mini, o4-mini, o1 | Yes | remote::azure | [1](examples/azure-run.yaml) | +| Azure | gpt-5, gpt-5-mini, gpt-5-nano, gpt-5.6-luna, o3-mini, o4-mini, o1 | Yes | remote::azure | [1](examples/azure-run.yaml) | | Azure | gpt-5-chat, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1-mini | No or limited | remote::azure | | | VertexAI | google/gemini-2.0-flash, google/gemini-2.5-flash, google/gemini-2.5-pro [^1] | Yes | remote::vertexai | [1](examples/vertexai-run.yaml) | | WatsonX | meta-llama/llama-3-3-70b-instruct | Yes | remote::watsonx | [1](examples/watsonx-run.yaml) | @@ -1193,12 +1193,12 @@ will be returned. "model_type": "embedding" }, { - "identifier": "openai/gpt-4o-mini", + "identifier": "openai/gpt-5.6-luna", "metadata": {}, "api_model_type": "llm", "provider_id": "openai", "type": "model", - "provider_resource_id": "gpt-4o-mini", + "provider_resource_id": "gpt-5.6-luna", "model_type": "llm" }, { diff --git a/docker-compose-library.yaml b/docker-compose-library.yaml index 2e3d948ce..8c7020053 100755 --- a/docker-compose-library.yaml +++ b/docker-compose-library.yaml @@ -29,7 +29,7 @@ services: - TAVILY_SEARCH_API_KEY=${TAVILY_SEARCH_API_KEY:-} # OpenAI - OPENAI_API_KEY=${OPENAI_API_KEY} - - E2E_OPENAI_MODEL=${E2E_OPENAI_MODEL:-gpt-4o-mini} + - E2E_OPENAI_MODEL=${E2E_OPENAI_MODEL:-gpt-5.6-luna} # Azure Entra ID credentials (AZURE_API_KEY is obtained dynamically in Python) - TENANT_ID=${TENANT_ID:-} - CLIENT_ID=${CLIENT_ID:-} diff --git a/docker-compose.yaml b/docker-compose.yaml index aa4631ad6..271efca7e 100755 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -27,7 +27,7 @@ services: - TAVILY_SEARCH_API_KEY=${TAVILY_SEARCH_API_KEY:-} # OpenAI - OPENAI_API_KEY=${OPENAI_API_KEY} - - E2E_OPENAI_MODEL=${E2E_OPENAI_MODEL:-gpt-4o-mini} + - E2E_OPENAI_MODEL=${E2E_OPENAI_MODEL:-gpt-5.6-luna} # Azure Entra ID credentials (AZURE_API_KEY is passed via provider_data at request time) - TENANT_ID=${TENANT_ID:-} - CLIENT_ID=${CLIENT_ID:-} diff --git a/docs/config.html b/docs/config.html index a13e49fb1..58f60683e 100644 --- a/docs/config.html +++ b/docs/config.html @@ -1016,7 +1016,7 @@

InferenceConfiguration

context_windows object - Map of fully-qualified model identifier (e.g., “openai/gpt-4o-mini”) + Map of fully-qualified model identifier (e.g., “openai/gpt-5.6-luna”) to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered diff --git a/docs/config.json b/docs/config.json index ec2bccfa6..f7408f10e 100644 --- a/docs/config.json +++ b/docs/config.json @@ -885,7 +885,7 @@ "minimum": 0, "type": "integer" }, - "description": "Map of fully-qualified model identifier (e.g., \"openai/gpt-4o-mini\") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window — callers fall back to their own default or skip the token-based trigger.", + "description": "Map of fully-qualified model identifier (e.g., \"openai/gpt-5.6-luna\") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window — callers fall back to their own default or skip the token-based trigger.", "title": "Per-model context window sizes (tokens)", "type": "object" }, diff --git a/docs/config.md b/docs/config.md index e7ebc5f90..373bc22a6 100644 --- a/docs/config.md +++ b/docs/config.md @@ -336,7 +336,7 @@ Inference configuration. |------------------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | default_model | string | Identification of default model used when no other model is specified. | | default_provider | string | Identification of default provider used when no other model is specified. | -| context_windows | object | Map of fully-qualified model identifier (e.g., "openai/gpt-4o-mini") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window — callers fall back to their own default or skip the token-based trigger. | +| context_windows | object | Map of fully-qualified model identifier (e.g., "openai/gpt-5.6-luna") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window — callers fall back to their own default or skip the token-based trigger. | | providers | array | Unified-mode synthesis input (Decision S5): a high-level, backend-agnostic list of inference providers the synthesizer expands into Llama Stack provider entries. Lives at the configuration root so it survives a future backend change. A non-empty list signals unified mode. Empty (the default) leaves legacy/remote modes unaffected. The sibling default_model / default_provider keep their query-time routing meaning and are independent of this list. | diff --git a/docs/container_orchestration.md b/docs/container_orchestration.md index 652f09eb2..4cf586b4d 100644 --- a/docs/container_orchestration.md +++ b/docs/container_orchestration.md @@ -311,7 +311,7 @@ See [OKP Guide](okp_guide.md) for detailed setup instructions. #### Other Configuration -- `E2E_OPENAI_MODEL`: OpenAI model for E2E tests (default: `gpt-4o-mini`) +- `E2E_OPENAI_MODEL`: OpenAI model for E2E tests (default: `gpt-5.6-luna`) - `LLAMA_STACK_LOGGING`: Enable debug logging in llama-stack - `FAISS_VECTOR_STORE_ID`: FAISS vector store identifier - `LITELLM_DROP_PARAMS`: Drop unsupported params in LiteLLM (default: `true`) diff --git a/docs/deployment_guide.md b/docs/deployment_guide.md index 4221f20b3..51324ed53 100644 --- a/docs/deployment_guide.md +++ b/docs/deployment_guide.md @@ -535,7 +535,7 @@ cp examples/lightspeed-stack-lls-library.yaml lightspeed-stack.yaml DEBUG Set provider/model configuration for openai/openai/gpt-4o to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/gpt-4o-2024-08-06 to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/gpt-4o-audio-preview to 0 utils.py:45 - DEBUG Set provider/model configuration for openai/openai/gpt-4o-mini to 0 utils.py:45 + DEBUG Set provider/model configuration for openai/openai/gpt-5.6-luna to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/o1 to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/o1-mini to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/o3-mini to 0 utils.py:45 @@ -1137,12 +1137,12 @@ Please note that actual response from the service is larger. It was stripped dow "model_type": "llm" }, { - "identifier": "openai/gpt-4o-mini", + "identifier": "openai/gpt-5.6-luna", "metadata": {}, "api_model_type": "llm", "provider_id": "openai", "type": "model", - "provider_resource_id": "gpt-4o-mini", + "provider_resource_id": "gpt-5.6-luna", "model_type": "llm" }, { diff --git a/docs/design/conversation-compaction/conversation-compaction-spike.md b/docs/design/conversation-compaction/conversation-compaction-spike.md index b29671a97..426ad86a1 100644 --- a/docs/design/conversation-compaction/conversation-compaction-spike.md +++ b/docs/design/conversation-compaction/conversation-compaction-spike.md @@ -501,7 +501,7 @@ To verify: check that the docs site renders correctly and OpenAPI spec validates # PoC results -A proof-of-concept was built in lightspeed-stack and tested against a real Llama Stack + OpenAI (gpt-4o-mini) setup. +A proof-of-concept was built in lightspeed-stack and tested against a real Llama Stack + OpenAI (gpt-5.6-luna) setup. ## What the PoC does diff --git a/docs/design/conversation-compaction/conversation-compaction.md b/docs/design/conversation-compaction/conversation-compaction.md index 0e23e7a1e..90a70062a 100644 --- a/docs/design/conversation-compaction/conversation-compaction.md +++ b/docs/design/conversation-compaction/conversation-compaction.md @@ -136,9 +136,9 @@ Context window sizes are configured per model in YAML: ``` yaml inference: - default_model: openai/gpt-4o-mini + default_model: openai/gpt-5.6-luna context_windows: - openai/gpt-4o-mini: 128000 + openai/gpt-5.6-luna: 128000 openai/gpt-4o: 128000 ``` @@ -369,7 +369,7 @@ Example config files go in `examples/`. | Trigger turn | 1 LLM call (or 413) | 2 LLM calls (summarize + respond) | | Post-trigger turn | 1 LLM call | 1 LLM call (no change) | -Compaction adds latency only on the trigger turn. In PoC testing, compaction turns took 14-40 seconds vs 9-20 seconds for normal turns (gpt-4o-mini). +Compaction adds latency only on the trigger turn. In PoC testing, compaction turns took 14-40 seconds vs 9-20 seconds for normal turns (gpt-5.6-luna). # Open Questions for Future Work diff --git a/docs/design/llama-stack-config-merge/llama-stack-config-merge-spike.md b/docs/design/llama-stack-config-merge/llama-stack-config-merge-spike.md index 27d02a26a..5eaea10ac 100644 --- a/docs/design/llama-stack-config-merge/llama-stack-config-merge-spike.md +++ b/docs/design/llama-stack-config-merge/llama-stack-config-merge-spike.md @@ -195,7 +195,7 @@ also stay under `llama_stack.config` whenever they ship as high-level keys Literal values (`openai`, `azure`, `sentence_transformers`, `vertexai`, `watsonx`, `vllm_rhaiis`, `vllm_rhel_ai`). They are vendor identifiers that both Llama Stack (`provider_type: remote::openai`) and Pydantic AI -(model-string prefixes such as `openai:gpt-4o-mini`) recognise. Each +(model-string prefixes such as `openai:gpt-5.6-luna`) recognise. Each backend-specific synthesizer translates the canonical LCORE vocabulary to its target shape; we do not adopt either backend's surface verbatim. @@ -920,7 +920,7 @@ Summary of validation: from production design"). - **Vacuous safety-shield validation in the library-mode PoC**. The `native_override` used during PoC validation registered `llama-guard` - with `provider_shield_id: openai/gpt-4o-mini` — an OpenAI chat model, + with `provider_shield_id: openai/gpt-5.6-luna` — an OpenAI chat model, not a Llama Guard checkpoint. The "`native_override` took effect" evidence row above only shows that the key landed in the synthesized output; it does **not** show that a real safety shield gated any @@ -1163,7 +1163,7 @@ curl -sSL -o /tmp/lcore-836-poc/lightspeed-stack-unified-library.yaml \ # 1. Start LCORE in library mode with the unified config export OPENAI_API_KEY= -export E2E_OPENAI_MODEL=gpt-4o-mini +export E2E_OPENAI_MODEL=gpt-5.6-luna uv run lightspeed-stack \ -c /tmp/lcore-836-poc/lightspeed-stack-unified-library.yaml diff --git a/docs/design/llama-stack-config-merge/llama-stack-config-merge.md b/docs/design/llama-stack-config-merge/llama-stack-config-merge.md index 59d9a5480..7ef72c51c 100644 --- a/docs/design/llama-stack-config-merge/llama-stack-config-merge.md +++ b/docs/design/llama-stack-config-merge/llama-stack-config-merge.md @@ -243,12 +243,12 @@ Top-level high-level sections plus a sub-section under the existing # with a `providers:` list (Decision S5). Backend-agnostic: it stays at the # root, not under `llama_stack`, so it survives a future backend change. inference: - default_model: gpt-4o-mini # existing — query-time default routing + default_model: gpt-5.6-luna # existing — query-time default routing default_provider: openai # existing — query-time default routing providers: # NEW — high-level provider setup (synthesis input) - type: openai # mapped to remote::openai api_key_env: OPENAI_API_KEY - allowed_models: [gpt-4o-mini] + allowed_models: [gpt-5.6-luna] - type: sentence_transformers llama_stack: @@ -560,7 +560,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] # ... more ... ``` @@ -601,7 +601,7 @@ llama_stack: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] # ... rest of run.yaml content under native_override ... # ... rest of lightspeed-stack.yaml content ... ``` @@ -624,7 +624,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.OPENAI_MODEL:=gpt-5.6-luna}"] - provider_id: sentence-transformers provider_type: inline::sentence-transformers # ... the rest is the same shape as a working run.yaml ... diff --git a/docs/e2e_testing.md b/docs/e2e_testing.md index 2cba4eea6..c90707c93 100644 --- a/docs/e2e_testing.md +++ b/docs/e2e_testing.md @@ -146,7 +146,7 @@ uv run behave tests/e2e/features/health.feature --tags=-skip-in-library-mode | `E2E_LLAMA_PORT` | `8321` | Port of the Llama Stack service. | | `E2E_LLAMA_STACK_URL` | — | Full base URL for Llama Stack (overrides host/port if set). Used by shield helpers. | | `E2E_LLAMA_STACK_API_KEY` | `xyzzy` | API key for Llama Stack client (e.g. shield API). | -| `E2E_DEFAULT_MODEL_OVERRIDE` | — | Override default LLM model id (e.g. `gpt-4o-mini`). | +| `E2E_DEFAULT_MODEL_OVERRIDE` | — | Override default LLM model id (e.g. `gpt-5.6-luna`). | | `E2E_DEFAULT_PROVIDER_OVERRIDE` | — | Override default provider id (e.g. `openai`). | | `FAISS_VECTOR_STORE_ID` | — | Vector store id for FAISS-related scenarios. | | `RUNNING_PROW` | — | Set in Prow/OpenShift; enables Prow config paths and pod/container ops. | diff --git a/docs/getting_started.md b/docs/getting_started.md index ea21c3923..5722ac5e4 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -180,7 +180,7 @@ authentication: DEBUG Set provider/model configuration for openai/openai/gpt-4o to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/gpt-4o-2024-08-06 to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/gpt-4o-audio-preview to 0 utils.py:45 - DEBUG Set provider/model configuration for openai/openai/gpt-4o-mini to 0 utils.py:45 + DEBUG Set provider/model configuration for openai/openai/gpt-5.6-luna to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/o1 to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/o1-mini to 0 utils.py:45 DEBUG Set provider/model configuration for openai/openai/o3-mini to 0 utils.py:45 diff --git a/docs/models/compaction.md b/docs/models/compaction.md index 3a2b532f4..4f93dee4e 100644 --- a/docs/models/compaction.md +++ b/docs/models/compaction.md @@ -31,7 +31,7 @@ Attributes: produced. Kept as a string (not datetime) to match the cache schema convention used elsewhere in the codebase. model_used: Fully-qualified model identifier used for the - summarization LLM call (e.g., ``"openai/gpt-4o-mini"``). + summarization LLM call (e.g., ``"openai/gpt-5.6-luna"``). Preserved for audit and for diagnostics when summary quality varies between models. diff --git a/docs/models/responses_succ.md b/docs/models/responses_succ.md index 9e3fc8295..28fa23e95 100644 --- a/docs/models/responses_succ.md +++ b/docs/models/responses_succ.md @@ -593,7 +593,7 @@ Inference configuration. |-------|------|-------------| | default_model | string | Identification of default model used when no other model is specified. | | default_provider | string | Identification of default provider used when no other model is specified. | -| context_windows | object | Map of fully-qualified model identifier (e.g., "openai/gpt-4o-mini") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window — callers fall back to their own default or skip the token-based trigger. | +| context_windows | object | Map of fully-qualified model identifier (e.g., "openai/gpt-5.6-luna") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window — callers fall back to their own default or skip the token-based trigger. | ## InfoResponse diff --git a/docs/openapi.json b/docs/openapi.json index 4f4baa48e..e83199f2b 100644 --- a/docs/openapi.json +++ b/docs/openapi.json @@ -5976,7 +5976,7 @@ "model": { "value": { "detail": { - "cause": "Model with ID gpt-4o-mini does not exist", + "cause": "Model with ID gpt-5.6-luna does not exist", "response": "Model not found" } } @@ -5996,7 +5996,7 @@ "context window exceeded": { "value": { "detail": { - "cause": "The input exceeds the context window size of model 'gpt-4o-mini'.", + "cause": "The input exceeds the context window size of model 'gpt-5.6-luna'.", "response": "Context window exceeded" } } @@ -6337,7 +6337,7 @@ "model": { "value": { "detail": { - "cause": "Model with ID gpt-4o-mini does not exist", + "cause": "Model with ID gpt-5.6-luna does not exist", "response": "Model not found" } } @@ -6357,7 +6357,7 @@ "context window exceeded": { "value": { "detail": { - "cause": "The input exceeds the context window size of model 'gpt-4o-mini'.", + "cause": "The input exceeds the context window size of model 'gpt-5.6-luna'.", "response": "Context window exceeded" } } @@ -7596,7 +7596,7 @@ "type": "assistant" } ], - "model": "gpt-4o-mini", + "model": "gpt-5.6-luna", "provider": "openai", "started_at": "2024-01-01T00:01:00Z", "tool_calls": [], @@ -8522,7 +8522,7 @@ "type": "assistant" } ], - "model": "gpt-4o-mini", + "model": "gpt-5.6-luna", "provider": "openai", "started_at": "2024-01-01T00:01:00Z", "tool_calls": [], @@ -9269,7 +9269,7 @@ "schema": { "type": "string" }, - "example": "event: response.created\ndata: {\"type\":\"response.created\",\"sequence_number\":0,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"in_progress\",\"model\":\"openai/gpt-4o-mini\",\"output\":[],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{},\"output_text\":\"\"}}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"sequence_number\":1,\"response_id\":\"resp_abc\",\"output_index\":0,\"item\":{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"in_progress\",\"role\":\"assistant\",\"content\":[]}}\n\n...\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"sequence_number\":30,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"completed\",\"model\":\"openai/gpt-4o-mini\",\"output\":[{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"completed\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"Hello! How can I help?\",\"annotations\":[]}]}],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"usage\":{\"input_tokens\":10,\"output_tokens\":6,\"total_tokens\":16,\"input_tokens_details\":{\"cached_tokens\":0},\"output_tokens_details\":{\"reasoning_tokens\":0}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{\"daily\":1000,\"monthly\":50000},\"output_text\":\"Hello! How can I help?\"}}\n\ndata: [DONE]\n\n" + "example": "event: response.created\ndata: {\"type\":\"response.created\",\"sequence_number\":0,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"in_progress\",\"model\":\"openai/gpt-5.6-luna\",\"output\":[],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{},\"output_text\":\"\"}}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"sequence_number\":1,\"response_id\":\"resp_abc\",\"output_index\":0,\"item\":{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"in_progress\",\"role\":\"assistant\",\"content\":[]}}\n\n...\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"sequence_number\":30,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"completed\",\"model\":\"openai/gpt-5.6-luna\",\"output\":[{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"completed\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"Hello! How can I help?\",\"annotations\":[]}]}],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"usage\":{\"input_tokens\":10,\"output_tokens\":6,\"total_tokens\":16,\"input_tokens_details\":{\"cached_tokens\":0},\"output_tokens_details\":{\"reasoning_tokens\":0}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{\"daily\":1000,\"monthly\":50000},\"output_text\":\"Hello! How can I help?\"}}\n\ndata: [DONE]\n\n" } } }, @@ -9420,7 +9420,7 @@ "model": { "value": { "detail": { - "cause": "Model with ID gpt-4o-mini does not exist", + "cause": "Model with ID gpt-5.6-luna does not exist", "response": "Model not found" } } @@ -9468,7 +9468,7 @@ "context window exceeded": { "value": { "detail": { - "cause": "The input exceeds the context window size of model 'gpt-4o-mini'.", + "cause": "The input exceeds the context window size of model 'gpt-5.6-luna'.", "response": "Context window exceeded" } } @@ -9774,7 +9774,7 @@ "model": { "value": { "detail": { - "cause": "Model with ID gpt-4o-mini does not exist", + "cause": "Model with ID gpt-5.6-luna does not exist", "response": "Model not found" } } @@ -9794,7 +9794,7 @@ "context window exceeded": { "value": { "detail": { - "cause": "The input exceeds the context window size of model 'gpt-4o-mini'.", + "cause": "The input exceeds the context window size of model 'gpt-5.6-luna'.", "response": "Context window exceeded" } } @@ -12657,7 +12657,7 @@ "type": "assistant" } ], - "model": "gpt-4o-mini", + "model": "gpt-5.6-luna", "provider": "openai", "started_at": "2024-01-01T00:01:00Z", "tool_calls": [], @@ -12688,7 +12688,7 @@ "type": "assistant" } ], - "model": "gpt-4o-mini", + "model": "gpt-5.6-luna", "provider": "openai", "started_at": "2024-01-01T00:01:00Z", "tool_calls": [], @@ -12738,7 +12738,7 @@ "title": "Model", "description": "Model identifier used for this turn", "examples": [ - "gpt-4o-mini" + "gpt-5.6-luna" ] }, "started_at": { @@ -13605,7 +13605,7 @@ }, "type": "object", "title": "Per-model context window sizes (tokens)", - "description": "Map of fully-qualified model identifier (e.g., \"openai/gpt-4o-mini\") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window \u2014 callers fall back to their own default or skip the token-based trigger." + "description": "Map of fully-qualified model identifier (e.g., \"openai/gpt-5.6-luna\") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window \u2014 callers fall back to their own default or skip the token-based trigger." }, "providers": { "items": { @@ -14728,7 +14728,7 @@ }, { "detail": { - "cause": "Model with ID gpt-4o-mini does not exist", + "cause": "Model with ID gpt-5.6-luna does not exist", "response": "Model not found" }, "label": "model" @@ -16801,7 +16801,7 @@ "examples": [ { "detail": { - "cause": "The input exceeds the context window size of model 'gpt-4o-mini'.", + "cause": "The input exceeds the context window size of model 'gpt-5.6-luna'.", "response": "Context window exceeded" }, "label": "context window exceeded" @@ -18452,7 +18452,7 @@ "generate_topic_summary": true, "input": "Hello World!", "instructions": "You are a helpful assistant", - "model": "openai/gpt-4o-mini", + "model": "openai/gpt-5.6-luna", "store": true, "stream": false } @@ -18871,7 +18871,7 @@ } } ], - "sse_example": "event: response.created\ndata: {\"type\":\"response.created\",\"sequence_number\":0,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"in_progress\",\"model\":\"openai/gpt-4o-mini\",\"output\":[],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{},\"output_text\":\"\"}}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"sequence_number\":1,\"response_id\":\"resp_abc\",\"output_index\":0,\"item\":{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"in_progress\",\"role\":\"assistant\",\"content\":[]}}\n\n...\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"sequence_number\":30,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"completed\",\"model\":\"openai/gpt-4o-mini\",\"output\":[{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"completed\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"Hello! How can I help?\",\"annotations\":[]}]}],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"usage\":{\"input_tokens\":10,\"output_tokens\":6,\"total_tokens\":16,\"input_tokens_details\":{\"cached_tokens\":0},\"output_tokens_details\":{\"reasoning_tokens\":0}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{\"daily\":1000,\"monthly\":50000},\"output_text\":\"Hello! How can I help?\"}}\n\ndata: [DONE]\n\n" + "sse_example": "event: response.created\ndata: {\"type\":\"response.created\",\"sequence_number\":0,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"in_progress\",\"model\":\"openai/gpt-5.6-luna\",\"output\":[],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{},\"output_text\":\"\"}}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"sequence_number\":1,\"response_id\":\"resp_abc\",\"output_index\":0,\"item\":{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"in_progress\",\"role\":\"assistant\",\"content\":[]}}\n\n...\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"sequence_number\":30,\"response\":{\"id\":\"resp_abc\",\"object\":\"response\",\"created_at\":1704067200,\"status\":\"completed\",\"model\":\"openai/gpt-5.6-luna\",\"output\":[{\"id\":\"msg_abc\",\"type\":\"message\",\"status\":\"completed\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"Hello! How can I help?\",\"annotations\":[]}]}],\"store\":true,\"text\":{\"format\":{\"type\":\"text\"}},\"usage\":{\"input_tokens\":10,\"output_tokens\":6,\"total_tokens\":16,\"input_tokens_details\":{\"cached_tokens\":0},\"output_tokens_details\":{\"reasoning_tokens\":0}},\"conversation\":\"0d21ba731f21f798dc9680125d5d6f49\",\"available_quotas\":{\"daily\":1000,\"monthly\":50000},\"output_text\":\"Hello! How can I help?\"}}\n\ndata: [DONE]\n\n" }, "RlsapiV1Attachment": { "properties": { diff --git a/docs/openapi.md b/docs/openapi.md index aee97bdd8..885aba265 100644 --- a/docs/openapi.md +++ b/docs/openapi.md @@ -6591,7 +6591,7 @@ Inference configuration. |-------|------|-------------| | default_model | | Identification of default model used when no other model is specified. | | default_provider | | Identification of default provider used when no other model is specified. | -| context_windows | object | Map of fully-qualified model identifier (e.g., "openai/gpt-4o-mini") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window — callers fall back to their own default or skip the token-based trigger. | +| context_windows | object | Map of fully-qualified model identifier (e.g., "openai/gpt-5.6-luna") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window — callers fall back to their own default or skip the token-based trigger. | ## InfoResponse diff --git a/docs/rag_guide.md b/docs/rag_guide.md index 2aa3a0c87..6f8020599 100644 --- a/docs/rag_guide.md +++ b/docs/rag_guide.md @@ -189,7 +189,7 @@ models: - model_id: my-model provider_id: openai model_type: llm - provider_model_id: # e.g. gpt-4o-mini + provider_model_id: # e.g. gpt-5.6-luna providers: [...] diff --git a/examples/azure-run.yaml b/examples/azure-run.yaml index 91cc92bdf..ae8791136 100644 --- a/examples/azure-run.yaml +++ b/examples/azure-run.yaml @@ -132,10 +132,10 @@ storage: backend: kv_default registered_resources: models: - - model_id: gpt-4o-mini + - model_id: gpt-5.6-luna provider_id: azure model_type: llm - provider_model_id: gpt-4o-mini + provider_model_id: gpt-5.6-luna - model_id: all-mpnet-base-v2 model_type: embedding provider_id: sentence-transformers @@ -145,7 +145,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: - embedding_dimension: 768 embedding_model: sentence-transformers/all-mpnet-base-v2 diff --git a/examples/bedrock-run.yaml b/examples/bedrock-run.yaml index b793da3e9..6346ef321 100644 --- a/examples/bedrock-run.yaml +++ b/examples/bedrock-run.yaml @@ -148,7 +148,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/examples/run.yaml b/examples/run.yaml index 5b330b2fc..67a1e158f 100644 --- a/examples/run.yaml +++ b/examples/run.yaml @@ -29,7 +29,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] - config: {} provider_id: sentence-transformers provider_type: inline::sentence-transformers @@ -130,14 +130,14 @@ storage: backend: kv_default registered_resources: models: - - model_id: gpt-4o-mini + - model_id: gpt-5.6-luna provider_id: openai model_type: llm - provider_model_id: gpt-4o-mini + provider_model_id: gpt-5.6-luna shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna datasets: [] scoring_fns: [] benchmarks: [] diff --git a/examples/vertexai-run.yaml b/examples/vertexai-run.yaml index 6a49e350f..e092f9ebd 100644 --- a/examples/vertexai-run.yaml +++ b/examples/vertexai-run.yaml @@ -141,7 +141,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: - embedding_dimension: 768 embedding_model: sentence-transformers/all-mpnet-base-v2 diff --git a/examples/vllm-rhaiis.yaml b/examples/vllm-rhaiis.yaml index f28c7fd82..044a75a86 100644 --- a/examples/vllm-rhaiis.yaml +++ b/examples/vllm-rhaiis.yaml @@ -134,7 +134,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna datasets: [] scoring_fns: [] benchmarks: [] diff --git a/examples/vllm-rhelai.yaml b/examples/vllm-rhelai.yaml index 4fa263387..7c71c435c 100644 --- a/examples/vllm-rhelai.yaml +++ b/examples/vllm-rhelai.yaml @@ -30,7 +30,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["gpt-4o-mini"] + allowed_models: ["gpt-5.6-luna"] - config: {} provider_id: sentence-transformers provider_type: inline::sentence-transformers @@ -145,7 +145,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/examples/vllm-rhoai.yaml b/examples/vllm-rhoai.yaml index 38ca8d14a..03647ca1f 100644 --- a/examples/vllm-rhoai.yaml +++ b/examples/vllm-rhoai.yaml @@ -134,7 +134,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna datasets: [] scoring_fns: [] benchmarks: [] diff --git a/examples/watsonx-run.yaml b/examples/watsonx-run.yaml index ec7c988c4..6b5710b02 100644 --- a/examples/watsonx-run.yaml +++ b/examples/watsonx-run.yaml @@ -153,7 +153,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: - embedding_dimension: 768 embedding_model: sentence-transformers/all-mpnet-base-v2 diff --git a/run.yaml b/run.yaml index e9bd5ef75..6ef09706f 100644 --- a/run.yaml +++ b/run.yaml @@ -23,7 +23,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] - provider_id: sentence-transformers provider_type: inline::sentence-transformers files: @@ -130,7 +130,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/scripts/llama_stack_tutorial.sh b/scripts/llama_stack_tutorial.sh index ac95ba219..f7353deff 100755 --- a/scripts/llama_stack_tutorial.sh +++ b/scripts/llama_stack_tutorial.sh @@ -215,7 +215,7 @@ cat << 'EOF' curl -X POST http://localhost:8321/v1/inference/chat-completion \ -H 'Content-Type: application/json' \ -d '{ - "model_id": "openai/gpt-4o-mini", + "model_id": "openai/gpt-5.6-luna", "messages": [ { "role": "user", diff --git a/src/data/default_run.yaml b/src/data/default_run.yaml index cb8b35bb7..70d4f9251 100644 --- a/src/data/default_run.yaml +++ b/src/data/default_run.yaml @@ -34,7 +34,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] - provider_id: sentence-transformers provider_type: inline::sentence-transformers files: @@ -109,7 +109,7 @@ registered_resources: # here so the default baseline boots with only an OPENAI_API_KEY. - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] tool_groups: - toolgroup_id: builtin::rag diff --git a/src/models/api/requests/responses_openai.py b/src/models/api/requests/responses_openai.py index dde597077..a2309f95e 100644 --- a/src/models/api/requests/responses_openai.py +++ b/src/models/api/requests/responses_openai.py @@ -93,7 +93,7 @@ class ResponsesRequest(BaseModel): "examples": [ { "input": "Hello World!", - "model": "openai/gpt-4o-mini", + "model": "openai/gpt-5.6-luna", "instructions": "You are a helpful assistant", "store": True, "stream": False, diff --git a/src/models/api/responses/error/content_too_large.py b/src/models/api/responses/error/content_too_large.py index 4f3ee8725..6224ce68d 100644 --- a/src/models/api/responses/error/content_too_large.py +++ b/src/models/api/responses/error/content_too_large.py @@ -24,7 +24,7 @@ class PromptTooLongResponse(AbstractErrorResponse): "response": "Context window exceeded", "cause": ( "The input exceeds the context window size " - "of model 'gpt-4o-mini'." + "of model 'gpt-5.6-luna'." ), }, }, diff --git a/src/models/api/responses/error/not_found.py b/src/models/api/responses/error/not_found.py index e55751629..728d4929f 100644 --- a/src/models/api/responses/error/not_found.py +++ b/src/models/api/responses/error/not_found.py @@ -36,7 +36,7 @@ class NotFoundResponse(AbstractErrorResponse): "label": "model", "detail": { "response": "Model not found", - "cause": "Model with ID gpt-4o-mini does not exist", + "cause": "Model with ID gpt-5.6-luna does not exist", }, }, { diff --git a/src/models/api/responses/successful/conversations.py b/src/models/api/responses/successful/conversations.py index c1bacae42..f0ca9f587 100644 --- a/src/models/api/responses/successful/conversations.py +++ b/src/models/api/responses/successful/conversations.py @@ -44,7 +44,7 @@ class ConversationResponse(AbstractSuccessfulResponse): "tool_calls": [], "tool_results": [], "provider": "openai", - "model": "gpt-4o-mini", + "model": "gpt-5.6-luna", "started_at": "2024-01-01T00:01:00Z", "completed_at": "2024-01-01T00:01:05Z", } @@ -66,7 +66,7 @@ class ConversationResponse(AbstractSuccessfulResponse): "tool_calls": [], "tool_results": [], "provider": "openai", - "model": "gpt-4o-mini", + "model": "gpt-5.6-luna", "started_at": "2024-01-01T00:01:00Z", "completed_at": "2024-01-01T00:01:05Z", } diff --git a/src/models/api/responses/successful/responses_openai.py b/src/models/api/responses/successful/responses_openai.py index 30ed13fb0..076851662 100644 --- a/src/models/api/responses/successful/responses_openai.py +++ b/src/models/api/responses/successful/responses_openai.py @@ -149,7 +149,7 @@ class ResponsesResponse(AbstractSuccessfulResponse): "event: response.created\n" 'data: {"type":"response.created","sequence_number":0,' '"response":{"id":"resp_abc","object":"response",' - '"created_at":1704067200,"status":"in_progress","model":"openai/gpt-4o-mini",' + '"created_at":1704067200,"status":"in_progress","model":"openai/gpt-5.6-luna",' '"output":[],"store":true,"text":{"format":{"type":"text"}},' '"conversation":"0d21ba731f21f798dc9680125d5d6f49",' '"available_quotas":{},"output_text":""}}\n\n' @@ -162,7 +162,7 @@ class ResponsesResponse(AbstractSuccessfulResponse): "event: response.completed\n" 'data: {"type":"response.completed","sequence_number":30,' '"response":{"id":"resp_abc","object":"response",' - '"created_at":1704067200,"status":"completed","model":"openai/gpt-4o-mini",' + '"created_at":1704067200,"status":"completed","model":"openai/gpt-5.6-luna",' '"output":[{"id":"msg_abc","type":"message","status":"completed",' '"role":"assistant","content":[{"type":"output_text",' '"text":"Hello! How can I help?","annotations":[]}]}],' diff --git a/src/models/common/conversation.py b/src/models/common/conversation.py index e02884a23..94fd0b313 100644 --- a/src/models/common/conversation.py +++ b/src/models/common/conversation.py @@ -152,7 +152,7 @@ class ConversationTurn(BaseModel): model: str = Field( ..., description="Model identifier used for this turn", - examples=["gpt-4o-mini"], + examples=["gpt-5.6-luna"], ) started_at: str = Field( ..., diff --git a/src/models/compaction.py b/src/models/compaction.py index 16c00d371..0990bbc77 100644 --- a/src/models/compaction.py +++ b/src/models/compaction.py @@ -37,7 +37,7 @@ class ConversationSummary(BaseModel): produced. Kept as a string (not datetime) to match the cache schema convention used elsewhere in the codebase. model_used: Fully-qualified model identifier used for the - summarization LLM call (e.g., ``"openai/gpt-4o-mini"``). + summarization LLM call (e.g., ``"openai/gpt-5.6-luna"``). Preserved for audit and for diagnostics when summary quality varies between models. """ diff --git a/src/models/config.py b/src/models/config.py index 1ddb5cb16..0114ecba8 100644 --- a/src/models/config.py +++ b/src/models/config.py @@ -1711,7 +1711,7 @@ class InferenceConfiguration(ConfigurationBase): default_factory=dict, title="Per-model context window sizes (tokens)", description="Map of fully-qualified model identifier (e.g., " - '"openai/gpt-4o-mini") to context window size in tokens. Used by ' + '"openai/gpt-5.6-luna") to context window size in tokens. Used by ' "the conversation compaction trigger to decide when older turns " "must be summarized before the input exceeds the window. Models " "absent from this map have no registered window — callers fall " diff --git a/src/pydantic_ai_lightspeed/capabilities/question_validity/_capability.py b/src/pydantic_ai_lightspeed/capabilities/question_validity/_capability.py index 8a09d273b..a3f3aaf12 100644 --- a/src/pydantic_ai_lightspeed/capabilities/question_validity/_capability.py +++ b/src/pydantic_ai_lightspeed/capabilities/question_validity/_capability.py @@ -81,7 +81,7 @@ class QuestionValidity(AbstractCapability[None]): from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIResponsesModel - model = OpenAIResponsesModel("gpt-4o-mini") + model = OpenAIResponsesModel("gpt-5.6-luna") agent = Agent("openai:gpt-4.1", capabilities=[QuestionValidity(model)]) ``` """ diff --git a/src/utils/compaction.py b/src/utils/compaction.py index db2822378..844c9633b 100644 --- a/src/utils/compaction.py +++ b/src/utils/compaction.py @@ -226,7 +226,7 @@ async def summarize_chunk( Parameters: client: Llama Stack client to call. model: Fully-qualified model identifier (e.g., - ``"openai/gpt-4o-mini"``). The spec mandates the same + ``"openai/gpt-5.6-luna"``). The spec mandates the same model as the user's query (spike decision 3); the choice is the caller's, this function only records it. old_items: Conversation items to summarize. Non-message items diff --git a/src/utils/token_estimator.py b/src/utils/token_estimator.py index 314b71eb0..9f115146c 100644 --- a/src/utils/token_estimator.py +++ b/src/utils/token_estimator.py @@ -161,7 +161,7 @@ def get_context_window( Parameters: model: Fully-qualified model identifier (e.g., - ``"openai/gpt-4o-mini"``). + ``"openai/gpt-5.6-luna"``). inference_config: The application's inference configuration. Returns: diff --git a/tests/benchmarks/data/python_1000_lines.py b/tests/benchmarks/data/python_1000_lines.py index c81f27d59..513456aa1 100644 --- a/tests/benchmarks/data/python_1000_lines.py +++ b/tests/benchmarks/data/python_1000_lines.py @@ -924,7 +924,7 @@ def print_rag_response(response): # - tisk odpovědi -llm = ChatOpenAI(model_name="gpt-4o-mini") +llm = ChatOpenAI(model_name="gpt-5.6-luna") response = llm.invoke("Say Hi") print(response) @@ -935,7 +935,7 @@ def print_rag_response(response): # - tisk odpovědi v naformátované podobě -llm = ChatOpenAI(model_name="gpt-4o-mini") +llm = ChatOpenAI(model_name="gpt-5.6-luna") response = llm.invoke("Say Hi") print(response) @@ -946,7 +946,7 @@ def print_rag_response(response): # - tisk odpovědi -llm = ChatOpenAI(model_name="gpt-4o-mini", temperature=0.7) +llm = ChatOpenAI(model_name="gpt-5.6-luna", temperature=0.7) response = llm.invoke("Say Hi") print(response) @@ -959,7 +959,7 @@ def print_rag_response(response): prompt = PromptTemplate.from_template("How to say 'hi' in {language} language?") -llm = ChatOpenAI(model_name="gpt-4o-mini") +llm = ChatOpenAI(model_name="gpt-5.6-luna") chain = LLMChain(prompt=prompt, llm=llm) response = chain.invoke("Czech") @@ -978,7 +978,7 @@ def print_rag_response(response): ) -llm = ChatOpenAI(model_name="gpt-4o-mini") +llm = ChatOpenAI(model_name="gpt-5.6-luna") chain = LLMChain(prompt=prompt, llm=llm) response = chain.invoke("Czech") @@ -992,7 +992,7 @@ def print_rag_response(response): prompt = PromptTemplate.from_template("How to say 'hi' in {language} language?") -llm = ChatOpenAI(model_name="gpt-4o-mini") +llm = ChatOpenAI(model_name="gpt-5.6-luna") chain = prompt | llm | StrOutputParser() diff --git a/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml b/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml index 80651a3cb..a890174a1 100644 --- a/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml +++ b/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml @@ -145,7 +145,7 @@ spec: key: key optional: true - name: E2E_OPENAI_MODEL - value: "gpt-4o-mini" + value: "gpt-5.6-luna" - name: VLLM_URL valueFrom: secretKeyRef: diff --git a/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-prow.yaml b/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-prow.yaml index d81932df8..afd5afc1f 100644 --- a/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-prow.yaml +++ b/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-prow.yaml @@ -110,7 +110,7 @@ spec: key: key optional: true - name: E2E_OPENAI_MODEL - value: "gpt-4o-mini" + value: "gpt-5.6-luna" - name: LLAMA_STACK_CONFIG value: "/opt/app-root/src/.llama/storage/run.yaml" - name: FAISS_VECTOR_STORE_ID diff --git a/tests/e2e-prow/rhoai/pipeline-konflux.sh b/tests/e2e-prow/rhoai/pipeline-konflux.sh index c20cbbac0..d942740e3 100755 --- a/tests/e2e-prow/rhoai/pipeline-konflux.sh +++ b/tests/e2e-prow/rhoai/pipeline-konflux.sh @@ -387,7 +387,7 @@ if [[ -n "${VLLM_URL:-}" ]]; then : "${E2E_DEFAULT_MODEL_OVERRIDE:=${VLLM_MODEL:-meta-llama/Llama-3.2-1B-Instruct}}" else : "${E2E_DEFAULT_PROVIDER_OVERRIDE:=openai}" - : "${E2E_DEFAULT_MODEL_OVERRIDE:=${E2E_OPENAI_MODEL:-gpt-4o-mini}}" + : "${E2E_DEFAULT_MODEL_OVERRIDE:=${E2E_OPENAI_MODEL:-gpt-5.6-luna}}" fi export E2E_DEFAULT_PROVIDER_OVERRIDE E2E_DEFAULT_MODEL_OVERRIDE log "LCS accessible at: http://$E2E_LSC_HOSTNAME:8080" diff --git a/tests/e2e/configs/run-azure.yaml b/tests/e2e/configs/run-azure.yaml index 6f627ba8b..eb145a84d 100644 --- a/tests/e2e/configs/run-azure.yaml +++ b/tests/e2e/configs/run-azure.yaml @@ -24,13 +24,13 @@ providers: config: base_url: https://ols-test.openai.azure.com/openai/v1 api_version: 2024-02-15-preview - allowed_models: ["gpt-4o-mini"] + allowed_models: ["gpt-5.6-luna"] model_validation: false - provider_id: openai provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] - config: {} provider_id: sentence-transformers provider_type: inline::sentence-transformers @@ -132,10 +132,10 @@ storage: backend: kv_default registered_resources: models: - - model_id: gpt-4o-mini + - model_id: gpt-5.6-luna provider_id: azure model_type: llm - provider_model_id: gpt-4o-mini + provider_model_id: gpt-5.6-luna - model_id: all-mpnet-base-v2 model_type: embedding provider_id: sentence-transformers @@ -145,7 +145,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/tests/e2e/configs/run-bedrock.yaml b/tests/e2e/configs/run-bedrock.yaml index 02f902b2d..fd5a25448 100644 --- a/tests/e2e/configs/run-bedrock.yaml +++ b/tests/e2e/configs/run-bedrock.yaml @@ -28,7 +28,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] - config: {} provider_id: sentence-transformers provider_type: inline::sentence-transformers @@ -143,7 +143,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/tests/e2e/configs/run-ci.yaml b/tests/e2e/configs/run-ci.yaml index 5c9dd8cb1..bce055ef1 100644 --- a/tests/e2e/configs/run-ci.yaml +++ b/tests/e2e/configs/run-ci.yaml @@ -23,7 +23,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] - config: {} provider_id: sentence-transformers provider_type: inline::sentence-transformers @@ -134,7 +134,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/tests/e2e/configs/run-rhaiis.yaml b/tests/e2e/configs/run-rhaiis.yaml index 74c0b654b..188eca51a 100644 --- a/tests/e2e/configs/run-rhaiis.yaml +++ b/tests/e2e/configs/run-rhaiis.yaml @@ -30,7 +30,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] - config: {} provider_id: sentence-transformers provider_type: inline::sentence-transformers @@ -145,7 +145,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/tests/e2e/configs/run-rhelai.yaml b/tests/e2e/configs/run-rhelai.yaml index 4fa263387..7c71c435c 100644 --- a/tests/e2e/configs/run-rhelai.yaml +++ b/tests/e2e/configs/run-rhelai.yaml @@ -30,7 +30,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["gpt-4o-mini"] + allowed_models: ["gpt-5.6-luna"] - config: {} provider_id: sentence-transformers provider_type: inline::sentence-transformers @@ -145,7 +145,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/tests/e2e/configs/run-vertexai.yaml b/tests/e2e/configs/run-vertexai.yaml index aa5f4925e..3a3caf9a2 100644 --- a/tests/e2e/configs/run-vertexai.yaml +++ b/tests/e2e/configs/run-vertexai.yaml @@ -29,7 +29,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] - config: {} provider_id: sentence-transformers provider_type: inline::sentence-transformers @@ -140,7 +140,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/tests/e2e/configs/run-watsonx.yaml b/tests/e2e/configs/run-watsonx.yaml index a472471b6..a7d7f0c15 100644 --- a/tests/e2e/configs/run-watsonx.yaml +++ b/tests/e2e/configs/run-watsonx.yaml @@ -30,7 +30,7 @@ providers: provider_type: remote::openai config: api_key: ${env.OPENAI_API_KEY} - allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-4o-mini}"] + allowed_models: ["${env.E2E_OPENAI_MODEL:=gpt-5.6-luna}"] - config: {} provider_id: sentence-transformers provider_type: inline::sentence-transformers @@ -141,7 +141,7 @@ registered_resources: shields: - shield_id: llama-guard provider_id: llama-guard - provider_shield_id: openai/gpt-4o-mini + provider_shield_id: openai/gpt-5.6-luna vector_stores: [] datasets: [] scoring_fns: [] diff --git a/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml b/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml index 2c55ae440..b8d7624a3 100644 --- a/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml +++ b/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml @@ -25,7 +25,7 @@ authentication: module: "noop-with-token" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna byok_rag: - rag_id: e2e-test-docs diff --git a/tests/e2e/configuration/library-mode/lightspeed-stack-byok-pdf.yaml b/tests/e2e/configuration/library-mode/lightspeed-stack-byok-pdf.yaml index 4d04eaac5..463c3c690 100644 --- a/tests/e2e/configuration/library-mode/lightspeed-stack-byok-pdf.yaml +++ b/tests/e2e/configuration/library-mode/lightspeed-stack-byok-pdf.yaml @@ -24,7 +24,7 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna # BYOK store built from a PDF by rag-content's `pdf` module (LCORE-2091). # The vector_db_id is hardcoded to the id baked into the committed fixture diff --git a/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml b/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml index ffd744da6..4a0caa2f1 100644 --- a/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml +++ b/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml @@ -24,7 +24,7 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna byok_rag: - rag_id: e2e-test-docs diff --git a/tests/e2e/configuration/library-mode/lightspeed-stack-skills-directory.yaml b/tests/e2e/configuration/library-mode/lightspeed-stack-skills-directory.yaml index 0aff2f67b..afe2d14e3 100644 --- a/tests/e2e/configuration/library-mode/lightspeed-stack-skills-directory.yaml +++ b/tests/e2e/configuration/library-mode/lightspeed-stack-skills-directory.yaml @@ -19,7 +19,7 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna skills: paths: - skills diff --git a/tests/e2e/configuration/library-mode/lightspeed-stack-skills.yaml b/tests/e2e/configuration/library-mode/lightspeed-stack-skills.yaml index 1a7177434..4abc3256c 100644 --- a/tests/e2e/configuration/library-mode/lightspeed-stack-skills.yaml +++ b/tests/e2e/configuration/library-mode/lightspeed-stack-skills.yaml @@ -19,7 +19,7 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna skills: paths: - skills/echo diff --git a/tests/e2e/configuration/library-mode/lightspeed-stack.yaml b/tests/e2e/configuration/library-mode/lightspeed-stack.yaml index 6c032de89..3ee4d1922 100644 --- a/tests/e2e/configuration/library-mode/lightspeed-stack.yaml +++ b/tests/e2e/configuration/library-mode/lightspeed-stack.yaml @@ -19,7 +19,7 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna byok_rag: - rag_id: e2e-test-docs rag_type: inline::faiss diff --git a/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml b/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml index 49ee71d59..8e982a599 100644 --- a/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml +++ b/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml @@ -31,7 +31,7 @@ authentication: module: "noop-with-token" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna byok_rag: - rag_id: e2e-test-docs diff --git a/tests/e2e/configuration/server-mode/lightspeed-stack-degraded-mode.yaml b/tests/e2e/configuration/server-mode/lightspeed-stack-degraded-mode.yaml index 1435b9fc0..09575ff59 100644 --- a/tests/e2e/configuration/server-mode/lightspeed-stack-degraded-mode.yaml +++ b/tests/e2e/configuration/server-mode/lightspeed-stack-degraded-mode.yaml @@ -22,4 +22,4 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna diff --git a/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml b/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml index 1a2850162..69aab4f00 100644 --- a/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml +++ b/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml @@ -25,7 +25,7 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna byok_rag: - rag_id: e2e-test-docs diff --git a/tests/e2e/configuration/server-mode/lightspeed-stack-skills-directory.yaml b/tests/e2e/configuration/server-mode/lightspeed-stack-skills-directory.yaml index 0ae7888c7..5e166adbf 100644 --- a/tests/e2e/configuration/server-mode/lightspeed-stack-skills-directory.yaml +++ b/tests/e2e/configuration/server-mode/lightspeed-stack-skills-directory.yaml @@ -20,7 +20,7 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna skills: paths: - skills diff --git a/tests/e2e/configuration/server-mode/lightspeed-stack-skills.yaml b/tests/e2e/configuration/server-mode/lightspeed-stack-skills.yaml index 387d03856..cacd4bb00 100644 --- a/tests/e2e/configuration/server-mode/lightspeed-stack-skills.yaml +++ b/tests/e2e/configuration/server-mode/lightspeed-stack-skills.yaml @@ -20,7 +20,7 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna skills: paths: - skills/echo diff --git a/tests/e2e/configuration/server-mode/lightspeed-stack.yaml b/tests/e2e/configuration/server-mode/lightspeed-stack.yaml index de945bb2e..405386c1d 100644 --- a/tests/e2e/configuration/server-mode/lightspeed-stack.yaml +++ b/tests/e2e/configuration/server-mode/lightspeed-stack.yaml @@ -20,7 +20,7 @@ authentication: module: "noop" inference: default_provider: openai - default_model: gpt-4o-mini + default_model: gpt-5.6-luna byok_rag: - rag_id: e2e-test-docs rag_type: inline::faiss diff --git a/tests/e2e/features/environment.py b/tests/e2e/features/environment.py index 7eb9d8f71..6b33444fe 100644 --- a/tests/e2e/features/environment.py +++ b/tests/e2e/features/environment.py @@ -44,7 +44,7 @@ switch_config, ) -FALLBACK_MODEL = "gpt-4o-mini" +FALLBACK_MODEL = "gpt-5.6-luna" FALLBACK_PROVIDER = "openai" # Wall-clock start for each feature (on ``Feature``; survives Behave context resets). diff --git a/tests/e2e/features/steps/info.py b/tests/e2e/features/steps/info.py index 52fed7eb8..d4fbf621e 100644 --- a/tests/e2e/features/steps/info.py +++ b/tests/e2e/features/steps/info.py @@ -60,8 +60,8 @@ def check_shield_structure(context: Context) -> None: assert ( found_shield["provider_id"] == "llama-guard" ), "provider_id should be 'llama-guard'" - assert found_shield["provider_resource_id"] == "openai/gpt-4o-mini", ( - f"provider_resource_id should be 'openai/gpt-4o-mini', " + assert found_shield["provider_resource_id"] == "openai/gpt-5.6-luna", ( + f"provider_resource_id should be 'openai/gpt-5.6-luna', " f"but is '{found_shield['provider_resource_id']}'" ) assert ( diff --git a/tests/e2e/utils/llama_stack_utils.py b/tests/e2e/utils/llama_stack_utils.py index 70b444170..95593fafa 100644 --- a/tests/e2e/utils/llama_stack_utils.py +++ b/tests/e2e/utils/llama_stack_utils.py @@ -155,6 +155,6 @@ def register_shield( if not provider_shield_id: provider_shield_id = os.getenv( "E2E_LLAMA_GUARD_PROVIDER_SHIELD_ID", - "openai/gpt-4o-mini", + "openai/gpt-5.6-luna", ) asyncio.run(_register_shield_async(shield_id, provider_id, provider_shield_id)) diff --git a/tests/unit/app/endpoints/test_rlsapi_v1.py b/tests/unit/app/endpoints/test_rlsapi_v1.py index 4270c5705..61a935ec0 100644 --- a/tests/unit/app/endpoints/test_rlsapi_v1.py +++ b/tests/unit/app/endpoints/test_rlsapi_v1.py @@ -434,7 +434,7 @@ async def test_get_default_model_id_auto_discovery_success( mock_llm_model = mocker.Mock() mock_llm_model.custom_metadata = {"model_type": "llm"} - mock_llm_model.id = "openai/gpt-4o-mini" + mock_llm_model.id = "openai/gpt-5.6-luna" mock_embedding_model = mocker.Mock() mock_embedding_model.custom_metadata = {"model_type": "embedding"} @@ -455,7 +455,7 @@ async def test_get_default_model_id_auto_discovery_success( model_id = await _get_default_model_id() - assert model_id == "openai/gpt-4o-mini" + assert model_id == "openai/gpt-5.6-luna" # --- Test get_rh_identity_context --- diff --git a/tests/unit/cache/test_in_memory_cache.py b/tests/unit/cache/test_in_memory_cache.py index 2b11aace5..ea24cc436 100644 --- a/tests/unit/cache/test_in_memory_cache.py +++ b/tests/unit/cache/test_in_memory_cache.py @@ -21,7 +21,7 @@ summarized_through_turn=8, token_count=9, created_at="2025-10-03T09:31:29Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) diff --git a/tests/unit/cache/test_noop_cache.py b/tests/unit/cache/test_noop_cache.py index 36fb82da2..79f7a2aed 100644 --- a/tests/unit/cache/test_noop_cache.py +++ b/tests/unit/cache/test_noop_cache.py @@ -260,7 +260,7 @@ def test_get_improper_conversation_id(cache_fixture: NoopCache) -> None: summarized_through_turn=8, token_count=9, created_at="2025-10-03T09:31:29Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) diff --git a/tests/unit/cache/test_postgres_cache.py b/tests/unit/cache/test_postgres_cache.py index 0e8c759e9..726265cef 100644 --- a/tests/unit/cache/test_postgres_cache.py +++ b/tests/unit/cache/test_postgres_cache.py @@ -926,14 +926,14 @@ def test_insert_and_get_with_tool_calls_and_results( summarized_through_turn=8, token_count=14, created_at="2025-10-03T09:31:29Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) summary_2 = ConversationSummary( summary_text="User then moved on to Helm charts and Istio routing.", summarized_through_turn=18, token_count=12, created_at="2025-10-03T10:05:01Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) # A fold collapsing the accumulated chunks (R3, LCORE-1572). folded_summary = ConversationSummary( @@ -941,7 +941,7 @@ def test_insert_and_get_with_tool_calls_and_results( summarized_through_turn=18, token_count=11, created_at="2025-10-03T11:00:00Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) diff --git a/tests/unit/cache/test_sqlite_cache.py b/tests/unit/cache/test_sqlite_cache.py index 2fdb9ba1a..3a3e1eab9 100644 --- a/tests/unit/cache/test_sqlite_cache.py +++ b/tests/unit/cache/test_sqlite_cache.py @@ -626,14 +626,14 @@ def test_insert_and_get_with_all_fields(tmpdir: Path) -> None: summarized_through_turn=8, token_count=14, created_at="2025-10-03T09:31:29Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) summary_2 = ConversationSummary( summary_text="User then moved on to Helm charts and Istio routing.", summarized_through_turn=18, token_count=12, created_at="2025-10-03T10:05:01Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) # A fold collapsing summary_1 + summary_2; created after both (R3, LCORE-1572). folded_summary = ConversationSummary( @@ -641,7 +641,7 @@ def test_insert_and_get_with_all_fields(tmpdir: Path) -> None: summarized_through_turn=18, token_count=11, created_at="2025-10-03T11:00:00Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) # A chunk produced after a fold; created later still, so it sorts after the fold. summary_after_fold = ConversationSummary( @@ -649,7 +649,7 @@ def test_insert_and_get_with_all_fields(tmpdir: Path) -> None: summarized_through_turn=26, token_count=10, created_at="2025-10-03T11:42:00Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) diff --git a/tests/unit/models/config/test_inference_configuration.py b/tests/unit/models/config/test_inference_configuration.py index a9cfc4cc5..a36a9f9da 100644 --- a/tests/unit/models/config/test_inference_configuration.py +++ b/tests/unit/models/config/test_inference_configuration.py @@ -68,11 +68,11 @@ def test_context_windows_accepts_model_to_size_map() -> None: """Test context_windows accepts a populated model-to-window map.""" inference_config = InferenceConfiguration( context_windows={ - "openai/gpt-4o-mini": 128000, + "openai/gpt-5.6-luna": 128000, "openai/gpt-4o": 128000, }, ) # pyright: ignore[reportCallIssue] - assert inference_config.context_windows["openai/gpt-4o-mini"] == 128000 + assert inference_config.context_windows["openai/gpt-5.6-luna"] == 128000 assert inference_config.context_windows["openai/gpt-4o"] == 128000 @@ -80,7 +80,7 @@ def test_context_windows_rejects_non_positive_size() -> None: """Test that a non-positive window size is rejected by Pydantic.""" with pytest.raises(ValueError): InferenceConfiguration( - context_windows={"openai/gpt-4o-mini": 0}, + context_windows={"openai/gpt-5.6-luna": 0}, ) # pyright: ignore[reportCallIssue] @@ -88,7 +88,7 @@ def test_context_windows_rejects_negative_size() -> None: """Test that a negative window size is rejected by Pydantic.""" with pytest.raises(ValueError): InferenceConfiguration( - context_windows={"openai/gpt-4o-mini": -1}, + context_windows={"openai/gpt-5.6-luna": -1}, ) # pyright: ignore[reportCallIssue] diff --git a/tests/unit/models/test_compaction.py b/tests/unit/models/test_compaction.py index f20ba5b55..7379e1499 100644 --- a/tests/unit/models/test_compaction.py +++ b/tests/unit/models/test_compaction.py @@ -12,7 +12,7 @@ def _valid_kwargs() -> dict: "summarized_through_turn": 8, "token_count": 42, "created_at": "2026-05-11T00:00:00Z", - "model_used": "openai/gpt-4o-mini", + "model_used": "openai/gpt-5.6-luna", } @@ -23,7 +23,7 @@ def test_constructor_with_valid_values() -> None: assert summary.summarized_through_turn == 8 assert summary.token_count == 42 assert summary.created_at == "2026-05-11T00:00:00Z" - assert summary.model_used == "openai/gpt-4o-mini" + assert summary.model_used == "openai/gpt-5.6-luna" def test_summarized_through_turn_accepts_zero() -> None: diff --git a/tests/unit/telemetry/conftest.py b/tests/unit/telemetry/conftest.py index 6b2db6a82..3fe74c395 100644 --- a/tests/unit/telemetry/conftest.py +++ b/tests/unit/telemetry/conftest.py @@ -113,9 +113,9 @@ "registered_resources": { "models": [ { - "model_id": "gpt-4o-mini", + "model_id": "gpt-5.6-luna", "provider_id": "openai", - "provider_model_id": "gpt-4o-mini", + "provider_model_id": "gpt-5.6-luna", "model_type": "llm", }, { @@ -205,7 +205,7 @@ def build_fully_populated_config() -> Configuration: timeout=180, ), inference=InferenceConfiguration.model_construct( - default_model="gpt-4o-mini", + default_model="gpt-5.6-luna", default_provider="openai", ), authentication=AuthenticationConfiguration.model_construct( diff --git a/tests/unit/telemetry/test_configuration_snapshot.py b/tests/unit/telemetry/test_configuration_snapshot.py index 85dac1d64..5a51a0ccd 100644 --- a/tests/unit/telemetry/test_configuration_snapshot.py +++ b/tests/unit/telemetry/test_configuration_snapshot.py @@ -421,7 +421,7 @@ def test_passthrough_fields_preserved(self) -> None: assert snapshot["service"]["cors"]["allow_credentials"] is True assert snapshot["service"]["cors"]["allow_methods"] == ["GET", "POST"] assert snapshot["llama_stack"]["use_as_library_client"] is False - assert snapshot["inference"]["default_model"] == "gpt-4o-mini" + assert snapshot["inference"]["default_model"] == "gpt-5.6-luna" assert snapshot["inference"]["default_provider"] == "openai" assert snapshot["authentication"]["module"] == "jwk_token" assert snapshot["authentication"]["skip_tls_verification"] is False @@ -534,7 +534,7 @@ async def test_models_extraction(self, llama_stack_config_file: str) -> None: result = await build_llama_stack_snapshot(llama_stack_config_file) models = result["registered_resources"]["models"] assert len(models) == 2 - assert models[0]["model_id"] == "gpt-4o-mini" + assert models[0]["model_id"] == "gpt-5.6-luna" assert models[0]["model_type"] == "llm" @pytest.mark.asyncio diff --git a/tests/unit/test_configuration.py b/tests/unit/test_configuration.py index fe1d1fc20..4cdb7a9a5 100644 --- a/tests/unit/test_configuration.py +++ b/tests/unit/test_configuration.py @@ -3902,7 +3902,7 @@ def test_native_override_env_refs_not_resolved( Llama Stack's own raw schema. """ monkeypatch.setenv("LCORE_TEST_SECRET", "supersecret") - monkeypatch.setenv("LCORE_TEST_MODEL", "gpt-4o-mini") + monkeypatch.setenv("LCORE_TEST_MODEL", "gpt-5.6-luna") config_dict = { "inference": {"default_model": "${env.LCORE_TEST_MODEL}"}, "llama_stack": { @@ -3928,14 +3928,14 @@ def test_native_override_env_refs_not_resolved( assert override_api_key == "${env.LCORE_TEST_SECRET}" assert "supersecret" not in str(resolved["llama_stack"]) # everything outside native_override still resolves - assert resolved["inference"]["default_model"] == "gpt-4o-mini" + assert resolved["inference"]["default_model"] == "gpt-5.6-luna" def test_replace_env_vars_without_native_override_resolves_all( monkeypatch: pytest.MonkeyPatch, ) -> None: """With no native_override, the helper resolves env refs like the plain call.""" - monkeypatch.setenv("LCORE_TEST_MODEL", "gpt-4o-mini") + monkeypatch.setenv("LCORE_TEST_MODEL", "gpt-5.6-luna") config_dict = {"inference": {"default_model": "${env.LCORE_TEST_MODEL}"}} resolved = replace_env_vars_preserving_native_override(config_dict) - assert resolved["inference"]["default_model"] == "gpt-4o-mini" + assert resolved["inference"]["default_model"] == "gpt-5.6-luna" diff --git a/tests/unit/test_llama_stack_synthesize.py b/tests/unit/test_llama_stack_synthesize.py index 1bb8f551b..e69d0e4eb 100644 --- a/tests/unit/test_llama_stack_synthesize.py +++ b/tests/unit/test_llama_stack_synthesize.py @@ -102,7 +102,7 @@ def test_apply_high_level_inference_maps_type_and_emits_env_ref() -> None: { "type": "openai", "api_key_env": "OPENAI_API_KEY", - "allowed_models": ["gpt-4o-mini"], + "allowed_models": ["gpt-5.6-luna"], "extra": {}, } ] @@ -112,7 +112,7 @@ def test_apply_high_level_inference_maps_type_and_emits_env_ref() -> None: assert entry["provider_id"] == "openai" assert entry["provider_type"] == "remote::openai" assert entry["config"]["api_key"] == "${env.OPENAI_API_KEY}" - assert entry["config"]["allowed_models"] == ["gpt-4o-mini"] + assert entry["config"]["allowed_models"] == ["gpt-5.6-luna"] def test_apply_high_level_inference_hyphenates_provider_id() -> None: diff --git a/tests/unit/utils/test_compaction.py b/tests/unit/utils/test_compaction.py index c93119f12..4041ec93e 100644 --- a/tests/unit/utils/test_compaction.py +++ b/tests/unit/utils/test_compaction.py @@ -362,7 +362,7 @@ async def test_returns_conversation_summary_with_populated_fields( ] summary = await summarize_chunk( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", old_items=items, summarized_through_turn=2, encoding_name=DEFAULT_ENCODING_NAME, @@ -373,7 +373,7 @@ async def test_returns_conversation_summary_with_populated_fields( ) assert summary.summarized_through_turn == 2 assert summary.token_count > 0 - assert summary.model_used == "openai/gpt-4o-mini" + assert summary.model_used == "openai/gpt-5.6-luna" assert summary.created_at # non-empty ISO 8601 @pytest.mark.asyncio @@ -388,7 +388,7 @@ async def test_invokes_responses_create_with_store_false( ) await summarize_chunk( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", old_items=[_MessageItem("user", "hi")], summarized_through_turn=1, encoding_name=DEFAULT_ENCODING_NAME, @@ -396,7 +396,7 @@ async def test_invokes_responses_create_with_store_false( kwargs = client.responses.create.call_args.kwargs assert kwargs["store"] is False assert kwargs["stream"] is False - assert kwargs["model"] == "openai/gpt-4o-mini" + assert kwargs["model"] == "openai/gpt-5.6-luna" # System directives travel as `instructions`, transcript as `input`. # This keeps the directives in their own channel (resilient to # prompt-injection from user content) and matches the convention used @@ -413,7 +413,7 @@ async def test_raises_when_llm_returns_empty(self, mocker: MockerFixture) -> Non with pytest.raises(ValueError, match="no extractable text"): await summarize_chunk( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", old_items=[_MessageItem("user", "hi")], summarized_through_turn=1, encoding_name=DEFAULT_ENCODING_NAME, @@ -439,14 +439,14 @@ async def test_additive_second_call_does_not_resummarize_first( first = await summarize_chunk( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", old_items=first_chunk, summarized_through_turn=1, encoding_name=DEFAULT_ENCODING_NAME, ) second = await summarize_chunk( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", old_items=second_chunk, summarized_through_turn=2, encoding_name=DEFAULT_ENCODING_NAME, @@ -478,7 +478,7 @@ def _make_summary(text: str, through: int, tokens: int = 5) -> ConversationSumma summarized_through_turn=through, token_count=tokens, created_at="2026-05-11T00:00:00Z", - model_used="openai/gpt-4o-mini", + model_used="openai/gpt-5.6-luna", ) @@ -499,7 +499,7 @@ async def test_collapses_n_summaries_into_one(self, mocker: MockerFixture) -> No ] folded = await recursively_resummarize( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", summaries=summaries, encoding_name=DEFAULT_ENCODING_NAME, ) @@ -508,7 +508,7 @@ async def test_collapses_n_summaries_into_one(self, mocker: MockerFixture) -> No # new turns were summarized by this call. assert folded.summarized_through_turn == 15 assert folded.token_count > 0 - assert folded.model_used == "openai/gpt-4o-mini" + assert folded.model_used == "openai/gpt-5.6-luna" @pytest.mark.asyncio async def test_prompt_lists_each_summary(self, mocker: MockerFixture) -> None: @@ -524,7 +524,7 @@ async def test_prompt_lists_each_summary(self, mocker: MockerFixture) -> None: ] await recursively_resummarize( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", summaries=summaries, encoding_name=DEFAULT_ENCODING_NAME, ) @@ -547,7 +547,7 @@ async def test_uses_store_false(self, mocker: MockerFixture) -> None: ] await recursively_resummarize( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", summaries=summaries, encoding_name=DEFAULT_ENCODING_NAME, ) @@ -562,7 +562,7 @@ async def test_raises_for_single_summary(self, mocker: MockerFixture) -> None: with pytest.raises(ValueError, match="at least 2 summary chunks"): await recursively_resummarize( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", summaries=[_make_summary("only one", through=5)], encoding_name=DEFAULT_ENCODING_NAME, ) @@ -574,7 +574,7 @@ async def test_raises_for_empty_list(self, mocker: MockerFixture) -> None: with pytest.raises(ValueError, match="at least 2 summary chunks"): await recursively_resummarize( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", summaries=[], encoding_name=DEFAULT_ENCODING_NAME, ) @@ -591,7 +591,7 @@ async def test_raises_when_llm_returns_empty(self, mocker: MockerFixture) -> Non with pytest.raises(ValueError, match="no extractable text"): await recursively_resummarize( client=client, - model="openai/gpt-4o-mini", + model="openai/gpt-5.6-luna", summaries=summaries, encoding_name=DEFAULT_ENCODING_NAME, ) diff --git a/tests/unit/utils/test_conversation_compaction.py b/tests/unit/utils/test_conversation_compaction.py index 4d78cde12..1261dced3 100644 --- a/tests/unit/utils/test_conversation_compaction.py +++ b/tests/unit/utils/test_conversation_compaction.py @@ -16,7 +16,7 @@ from models.config import CompactionConfiguration, InferenceConfiguration from utils import conversation_compaction as cc -MODEL = "openai/gpt-4o-mini" +MODEL = "openai/gpt-5.6-luna" CONV = "conv_abc123" diff --git a/tests/unit/utils/test_token_estimator.py b/tests/unit/utils/test_token_estimator.py index 2f645f183..cdfd4f520 100644 --- a/tests/unit/utils/test_token_estimator.py +++ b/tests/unit/utils/test_token_estimator.py @@ -228,18 +228,18 @@ class TestGetContextWindow: def test_returns_size_for_known_model(self) -> None: """A configured model returns its window size.""" config = InferenceConfiguration( - context_windows={"openai/gpt-4o-mini": 128000}, + context_windows={"openai/gpt-5.6-luna": 128000}, ) # pyright: ignore[reportCallIssue] - assert get_context_window("openai/gpt-4o-mini", config) == 128000 + assert get_context_window("openai/gpt-5.6-luna", config) == 128000 def test_returns_none_for_unknown_model(self) -> None: """An unconfigured model returns None — caller decides fallback.""" config = InferenceConfiguration( - context_windows={"openai/gpt-4o-mini": 128000}, + context_windows={"openai/gpt-5.6-luna": 128000}, ) # pyright: ignore[reportCallIssue] assert get_context_window("anthropic/claude-3", config) is None def test_returns_none_when_map_empty(self) -> None: """An empty context_windows dict returns None for any model.""" config = InferenceConfiguration() # pyright: ignore[reportCallIssue] - assert get_context_window("openai/gpt-4o-mini", config) is None + assert get_context_window("openai/gpt-5.6-luna", config) is None