-
Notifications
You must be signed in to change notification settings - Fork 88
OLS-3442 Add reasoning token support spec #2985
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -109,17 +109,18 @@ Each provider entry under `llm_providers` supports: | |
| | Field Path | Type | Default | Purpose | | ||
| |------------|------|---------|---------| | ||
| | `llm_providers[].name` | string | (required) | Provider name | | ||
| | `llm_providers[].type` | string | =name | Provider type (openai, azure_openai, watsonx, rhoai_vllm, rhelai_vllm, google_vertex, google_vertex_anthropic, fake_provider) | | ||
| | `llm_providers[].type` | string | =name | Provider type (openai, azure_openai, watsonx, rhoai_vllm, rhelai_vllm, google_vertex, google_vertex_anthropic, bedrock, fake_provider) | | ||
| | `llm_providers[].url` | URL | none | Provider endpoint URL | | ||
| | `llm_providers[].credentials_path` | string | none | Path to credential file or directory | | ||
| | `llm_providers[].models[]` | list | (required, >= 1) | Model definitions | | ||
| | `llm_providers[].models[].name` | string | (required) | Model identifier | | ||
| | `llm_providers[].models[].context_window_size` | int | 128000 | Context window size in tokens | | ||
| | `llm_providers[].models[].parameters.max_tokens_for_response` | int | 4096 | Tokens reserved for response | | ||
| | `llm_providers[].models[].parameters.tool_budget_ratio` | float | 0.25 | Fraction of context window for tool outputs (0.1--0.6) | | ||
| | `llm_providers[].models[].parameters.reasoning_effort` | enum | low | Reasoning effort level (low, medium, high) | | ||
| | `llm_providers[].models[].parameters.reasoning_summary` | enum | concise | Reasoning summary style (auto, concise, detailed) | | ||
| | `llm_providers[].models[].parameters.verbosity` | enum | low | General verbosity level (low, medium, high) | | ||
| | `llm_providers[].models[].parameters.reasoning_config` | dict | none | [PLANNED: OLS-3442] Freeform dict of provider-specific reasoning/thinking parameters. See `what/llm-providers.md` rule 13 for valid keys per provider | | ||
| | `llm_providers[].models[].parameters.reasoning_effort` | enum | low | [DEPRECATED: OLS-3442] Reasoning effort level (low, medium, high). Replaced by `reasoning_config` | | ||
| | `llm_providers[].models[].parameters.reasoning_summary` | enum | concise | [DEPRECATED: OLS-3442] Reasoning summary style (auto, concise, detailed). Replaced by `reasoning_config` | | ||
| | `llm_providers[].models[].parameters.verbosity` | enum | low | [DEPRECATED: OLS-3442] General verbosity level (low, medium, high). Replaced by `reasoning_config` | | ||
|
Comment on lines
+112
to
+123
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
# Inspect the cited spec sections with line numbers.
file=".ai/spec/what/config.md"
if [ -f "$file" ]; then
echo "== $file (lines 100-170) =="
sed -n '100,170p' "$file" | nl -ba
else
echo "Missing $file"
fi
echo
echo "== Search for llm_providers[].type / allowlist / validation references =="
rg -n --no-heading "llm_providers\\[\\]\\.type|allowlist|registered provider|type.*name|type = name|provider instance name|aliases|alias" .ai/spec . 2>/dev/null || true
echo
echo "== Nearby references to line 153 in config.md =="
if [ -f "$file" ]; then
sed -n '145,160p' "$file" | nl -ba
fiRepository: openshift/lightspeed-service Length of output: 252 🏁 Script executed: #!/bin/bash
set -euo pipefail
file=".ai/spec/what/config.md"
echo "== $file (lines 100-170) =="
awk 'NR>=100 && NR<=170 { printf "%d:%s\n", NR, $0 }' "$file"
echo
echo "== Search for type/allowlist references =="
rg -n --no-heading "llm_providers\\[\\]\\.type|allowlist|registered provider|type.*name|type = name|provider instance name|aliases|alias" .ai/spec . 2>/dev/null || true
echo
echo "== Lines around 153 =="
awk 'NR>=145 && NR<=160 { printf "%d:%s\n", NR, $0 }' "$file"Repository: openshift/lightspeed-service Length of output: 19131 🏁 Script executed: #!/bin/bash
set -euo pipefail
file="ols/app/models/config.py"
echo "== provider type logic =="
awk 'NR>=430 && NR<=490 { printf "%d:%s\n", NR, $0 }' "$file"
echo
echo "== related tests =="
awk 'NR>=1500 && NR<=1545 { printf "%d:%s\n", NR, $0 }' tests/unit/app/models/test_config.py
echo
echo "== search for type validation / unsupported provider references =="
rg -n --no-heading "unsupported provider|supported provider types|Provider type must be one of|set_provider_type|type.*lower\\(\\)|defaulted from provider name|allowlist" ols tests .ai/spec/what/llm-providers.md .ai/spec/how/llm-providers.mdRepository: openshift/lightspeed-service Length of output: 8555 Clarify 🤖 Prompt for AI Agents |
||
| | `llm_providers[].models[].options` | dict | none | Arbitrary key-value model options | | ||
| | `llm_providers[].<type>_config` | object | none | Provider-specific config (at most one per provider) | | ||
| | `llm_providers[].tlsSecurityProfile` | object | none | TLS security profile for provider connection | | ||
|
|
@@ -149,7 +150,7 @@ Each provider entry under `llm_providers` supports: | |
| 13. `default_model` must name a model that exists within the default provider's model list. | ||
| 14. `conversation_cache.type` must be either `memory` or `postgres`. The corresponding sub-section (`memory` or `postgres`) must be present when the type is specified. | ||
| 15. `authentication_config.module` must be one of: `k8s`, `noop`, `noop-with-token`. | ||
| 16. Provider `type` must be one of the supported provider types: openai, azure_openai, watsonx, rhoai_vllm, rhelai_vllm, google_vertex, google_vertex_anthropic, fake_provider. | ||
| 16. Provider `type` must be one of the supported provider types: openai, azure_openai, watsonx, rhoai_vllm, rhelai_vllm, google_vertex, google_vertex_anthropic, bedrock, fake_provider. | ||
| 17. `project_id` is required when provider type is `watsonx`. | ||
|
|
||
| ### Tool Budget Computation | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: openshift/lightspeed-service
Length of output: 11183
🏁 Script executed:
Repository: openshift/lightspeed-service
Length of output: 3675
Update the spec to match
streaming_ols.py.REASONINGis streamed, but onlyTEXTis appended toresponsetoday, so this reads like a shipped fix that isn’t in place yet. Either soften the spec to a planned change or add the missing append in code.🤖 Prompt for AI Agents