Add convenience methods for detecting model parameter support (temperature, reasoning)
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
- #3124 de @SinhSinhAn — fechado sem integrar
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 38/100
Direção de pesquisa
A issue não menciona arquivos de implementação, testes ou pontos de entrada. Comece localizando a API pública da biblioteca Python relacionada a modelos e os metadados de modelos existentes; em seguida, determine como as verificações de capacidades e os valores válidos de reasoning-effort devem ser representados. O trabalho estará concluído quando o comportamento para as famílias de modelos listadas estiver documentado e houver cobertura para os parâmetros compatíveis e incompatíveis.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Confirm this is a feature request for the Python library and not the underlying OpenAI API.
- This is a feature request for the Python library
Describe the feature or improvement you're requesting
Feature request
When building applications that support multiple OpenAI models (e.g., gpt-4.1-mini, gpt-5, gpt-5.1, gpt-5.4), developers need to know which parameters each model supports. Currently this requires maintaining hardcoded model lists or prefix checks, which break as new models are released.
The problem
Different model families have different parameter constraints:
temperature: Supported by gpt-4.x but rejected by gpt-5.x reasoning models when reasoning_effort != nonereasoning: Only supported by gpt-5 family models, not gpt-4.xreasoning.effortvalues: Vary by model — gpt-5 supportsminimal/low/medium/high, gpt-5.1+ addsnone, gpt-5.4+ addsxhigh
Today, developers must write code like:
def is_reasoning_model(model: str) -> bool:
return model.startswith("gpt-5")
def get_reasoning_effort_options(model: str) -> list[str]:
if not is_reasoning_model(model):
return []
if model.startswith("gpt-5."):
minor = int(model[6:].split("-")[0])
options = ["none", "low", "medium", "high"]
if minor >= 4:
options.append("xhigh")
return options
return ["minimal", "low", "medium", "high"]
This is fragile — it breaks whenever a new model family is released, and the version-based logic for effort levels is reverse-engineered from documentation rather than provided by the SDK.
Proposed solution
Add model capability metadata to the SDK in some way, for example:
# Check if a parameter is supported
openai.models.supports(model="gpt-5.4", parameter="temperature") # False
openai.models.supports(model="gpt-5.4", parameter="reasoning") # True
# Get valid values for an enum parameter
openai.models.valid_values(model="gpt-5.4", parameter="reasoning.effort")
# ["none", "low", "medium", "high", "xhigh"]
openai.models.valid_values(model="gpt-5", parameter="reasoning.effort")
# ["minimal", "low", "medium", "high"]
Or alternatively, expose it as model metadata:
from openai.models import get_model_capabilities
caps = get_model_capabilities("gpt-5.4")
caps.supports_temperature # False
caps.supports_reasoning # True
caps.reasoning_effort_options # ["none", "low", "medium", "high", "xhigh"]
Use case
This came up while migrating azure-search-openai-demo from Chat Completions to the Responses API. The app supports multiple model deployments and needs to dynamically adjust which parameters it sends and presents in the UI for users. I imagine there are many similar apps that provide users with model options and parameters.
Additional context
No response
- Linguagem predominante
- Python
- Estrelas
- 32k
- Forks
- 7.3k
- Merge médio
- 15h 56min
- PRs com merge (30d)
- 179
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de openai/openai-python
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
openai/openai-python#4156 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
openai/openai-python#4022 · 23 comentários ·
Mantenedores costumam responder em até 1 dia
-
fix(auth): SubjectTokenProviderError drops response and duplicates error message in workload identity providersTalvez já em andamento @mohmedmm assumiu há 32 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
openai/openai-python#4017 · 5 comentários ·
Mantenedores costumam responder em até 1 dia
-
Define + export `ServiceTiers` string literalTalvez já em andamento @SparshGarg999 assumiu há 81 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
openai/openai-python#3556 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
Empty OPENAI_BASE_URL prevents fallback to default API endpointTalvez já em andamento @Sehastrajit-S assumiu há 47 dias. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
openai/openai-python#2927 · 7 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de openai/openai-python
Issues semelhantes
-
bump patch
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
autowarefoundation/autoware_carla_scenario#1321 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 78/100
QuantConnect/Documentation#2838 ·
Mantenedores costumam responder em até 1 dia
-
get_all_subclasses must deduplicate by class identityTalvez já em andamento @Gambit-Checkmate assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 15 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
awslabs/route53-dynamic-dns-with-lambda#67 · 1 comentário ·