Bug Description
Thanks for the quick review and merge of #7411. The _MODELS_REJECTING_SAMPLING_PARAMS guard from #6947 made that fix small, and I think the same list is all that's needed here.
OpenAI GPT-6 Sol and GPT-6 Luna became available on Bedrock on 2026-09-22, and GPT-6 Astra on 2026-09-08. Converse rejects inferenceConfig.temperature and topP for all three, and for GPT-5.6, at any value (including 1). The guard only lists Claude models, so aws.LLM(temperature=...) or top_p=... sends both fields and every turn ends in a 400:
aws.LLM(model=..., temperature=0.7, top_p=0.9), us-east-1 |
main (b4df92e) |
us.openai.gpt-6-sol / -luna / -astra |
❌ APIConnectionError after 4 attempts (about 7 s) |
global.openai.gpt-6-sol / -luna / -astra |
❌ same |
us.openai.gpt-6-astra with only temperature=1.0, or only top_p=1.0 |
❌ same |
us.openai.gpt-5.6-sol |
❌ same |
openai.gpt-oss-120b-1:0 |
✅ pong (accepts both fields) |
| GPT-6 without temperature/top_p |
✅ pong |
Expected Behavior
Same as Claude Opus 4.7+: both fields are dropped, with the existing one-time warning, and the turn succeeds. gpt-oss keeps receiving them.
Reproduction Steps
cat > repro.py <<'PY'
import asyncio
from livekit.agents.llm import ChatContext
from livekit.plugins import aws
async def main():
for model in ("us.openai.gpt-6-sol", "us.openai.gpt-6-luna", "us.openai.gpt-6-astra",
"openai.gpt-oss-120b-1:0"):
ctx = ChatContext()
ctx.add_message(role="user", content="Say pong and nothing else.")
try:
r = await aws.LLM(model=model, temperature=0.7, top_p=0.9).chat(chat_ctx=ctx).collect()
print(model, "->", repr(r.text))
except Exception as e:
print(model, "->", type(e).__name__, e)
asyncio.run(main())
PY
uv run python repro.py
us.openai.gpt-6-sol -> APIConnectionError failed to generate LLM completion after 4 attempts (caused by ValidationException: An error occurred (ValidationException) when calling the ConverseStream operation: This model doesn't support the temperature field. Remove temperature and try again.)
us.openai.gpt-6-luna -> APIConnectionError (same)
us.openai.gpt-6-astra -> APIConnectionError (same)
openai.gpt-oss-120b-1:0 -> 'pong'
With only top_p=0.9: This model doesn't support the topP field. Remove topP and try again.
Operating System
macOS 26 (the rejection is server-side, so any OS)
Models Used
AWS Bedrock us./global. openai.gpt-6-sol, openai.gpt-6-luna, openai.gpt-6-astra, openai.gpt-5.6-sol via livekit-plugins-aws aws.LLM
Package Versions
livekit-agents==1.8.2
livekit-plugins-aws==1.8.2 # main at b4df92e
aiobotocore==3.8.0
botocore==1.43.46
python==3.13
Session/Room/Call IDs
N/A, reproduces with aws.LLM alone.
Proposed Solution
_MODELS_REJECTING_SAMPLING_PARAMS = (
...,
"claude-fable-5",
# OpenAI GPT-5.6/GPT-6: "This model doesn't support the temperature field. Remove
# temperature and try again." gpt-oss still accepts both, so it stays off this list.
"gpt-5.6",
"gpt-6",
)
The substrings don't match gpt-oss-*. Application inference profiles stay on supports_sampling_params, as today. I have this with hermetic tests and can open a PR.
Additional Context
Scope and workaround
- Workaround today:
aws.LLM(..., supports_sampling_params=False). The request goes out with inferenceConfig: {} and the turn succeeds.
- Other GPT-6 paths through
aws.LLM worked for all three models: plain, system prompt, streaming, tool round trip, tool_choice required/named, image input, usage, global. profiles.
- The 400 is retried three times before it surfaces because nothing was streamed yet. That is a separate problem and not part of this issue.
Bug Description
Thanks for the quick review and merge of #7411. The
_MODELS_REJECTING_SAMPLING_PARAMSguard from #6947 made that fix small, and I think the same list is all that's needed here.OpenAI GPT-6 Sol and GPT-6 Luna became available on Bedrock on 2026-09-22, and GPT-6 Astra on 2026-09-08. Converse rejects
inferenceConfig.temperatureandtopPfor all three, and for GPT-5.6, at any value (including 1). The guard only lists Claude models, soaws.LLM(temperature=...)ortop_p=...sends both fields and every turn ends in a 400:aws.LLM(model=..., temperature=0.7, top_p=0.9), us-east-1us.openai.gpt-6-sol/-luna/-astraAPIConnectionErrorafter 4 attempts (about 7 s)global.openai.gpt-6-sol/-luna/-astraus.openai.gpt-6-astrawith onlytemperature=1.0, or onlytop_p=1.0us.openai.gpt-5.6-solopenai.gpt-oss-120b-1:0pong(accepts both fields)pongExpected Behavior
Same as Claude Opus 4.7+: both fields are dropped, with the existing one-time warning, and the turn succeeds. gpt-oss keeps receiving them.
Reproduction Steps
With only
top_p=0.9:This model doesn't support the topP field. Remove topP and try again.Operating System
macOS 26 (the rejection is server-side, so any OS)
Models Used
AWS Bedrock
us./global.openai.gpt-6-sol,openai.gpt-6-luna,openai.gpt-6-astra,openai.gpt-5.6-solvialivekit-plugins-awsaws.LLMPackage Versions
livekit-agents==1.8.2 livekit-plugins-aws==1.8.2 # main at b4df92e aiobotocore==3.8.0 botocore==1.43.46 python==3.13Session/Room/Call IDs
N/A, reproduces with
aws.LLMalone.Proposed Solution
The substrings don't match
gpt-oss-*. Application inference profiles stay onsupports_sampling_params, as today. I have this with hermetic tests and can open a PR.Additional Context
Scope and workaround
aws.LLM(..., supports_sampling_params=False). The request goes out withinferenceConfig: {}and the turn succeeds.aws.LLMworked for all three models: plain, system prompt, streaming, tool round trip,tool_choicerequired/named, image input, usage,global.profiles.