Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Python: [Bug]: AZURE_OPENAI_API_VERSION is ignored by the OpenAI clients on the Azure route

Abierto
#9,097 1 comentario 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@eavanvalkenburg ya está trabajando en esto.

Desde el 6/10/2026.

  • #9098 de @Aditya-XR — abierto

Evaluación

Este issue todavía no se ha evaluado.

Descripción

agents python reproduced
Description

OpenAIChatCompletionClient, OpenAIChatClient and OpenAIEmbeddingClient ignore AZURE_OPENAI_API_VERSION, whether it is set in the environment or in a .env file, and always send their built-in default api-version to Azure. Passing api_version= explicitly works.

The constructors document the opposite. For example, OpenAIChatCompletionClient says: "When not provided explicitly, the constructor reads AZURE_OPENAI_API_VERSION and then uses the Chat Completions default." OpenAIChatClient and OpenAIEmbeddingClient say the same, and the package README lists the variable as the Azure OpenAI API version.

Cause: load_openai_service_settings in agent_framework_openai/_shared.py passes the default into load_settings:

azure_settings = load_settings(
    AzureOpenAISettings,
    env_prefix="AZURE_OPENAI_",
    ...
    api_version=api_version or default_azure_api_version,
    ...
)

load_settings gives explicit keyword values priority over .env files and environment variables. Since api_version or default_azure_api_version is never None, the environment value can never win. This looks like a regression from #4925; before it, only the explicit api_version was passed and the default was applied afterwards.

The existing tests miss this because the Azure test fixture sets AZURE_OPENAI_API_VERSION to 2024-12-01-preview, which is also the Chat Completions default.

Expected: an explicit api_version wins, then AZURE_OPENAI_API_VERSION (environment or .env), then the client's default.

Code Sample
import os

for name in ("OPENAI_API_KEY", "AZURE_OPENAI_BASE_URL"):
    os.environ.pop(name, None)  # make sure the clients take the Azure route
os.environ.update({
    "AZURE_OPENAI_ENDPOINT": "https://my-resource.openai.azure.com",
    "AZURE_OPENAI_API_KEY": "test-key",
    "AZURE_OPENAI_MODEL": "my-deployment",
    "AZURE_OPENAI_API_VERSION": "2025-04-01-preview",
})

from agent_framework.openai import OpenAIChatClient, OpenAIChatCompletionClient, OpenAIEmbeddingClient

for client_type in (OpenAIChatCompletionClient, OpenAIChatClient, OpenAIEmbeddingClient):
    client = client_type()
    print(f"{client_type.__name__:<27} api_version={client.api_version}")

Output on main:

OpenAIChatCompletionClient  api_version=2024-12-01-preview
OpenAIChatClient            api_version=preview
OpenAIEmbeddingClient       api_version=2024-10-21

Every client should report 2025-04-01-preview. The same default also goes out as the api-version query parameter on the request, and setting the variable in a .env file passed via env_file_path behaves the same way.

Error Messages / Stack Traces

None. Requests silently use the default version.

Package Versions

agent-framework-openai: 1.15.0, agent-framework-core: 1.20.0 (source checkout of main at b9d24c8fb)

Python Version

Python 3.13

Additional Context
  • Reproduced on Windows and Linux.
  • One question for the fix: OpenAIChatClient (Responses) defaults to preview on the /openai/v1/ path. Once the variable is read again, a dated value set for Chat Completions would also be used by the Responses client. That matches its docstring and the behavior before #4925, but if the Responses client shouldn't pick up the shared variable, its docstring would need to change instead.
  • Fix: pass only the explicit api_version to load_settings, and apply the client default afterwards when nothing set a version. I'll open a PR with that and regression tests.
Lenguaje dominante
Python
Estrellas
13.9k
Forks
2.4k
Merge medio
1 d 16 h
PR fusionados (30 d)
432

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/agent-framework

Todos los issues de microsoft/agent-framework

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.