Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#9,097 1 commento 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@eavanvalkenburg ci sta già lavorando.

Dal 6/10/2026.

  • #9098 di @Aditya-XR — aperta

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

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.
Lingua principale
Python
Stelle
13.9k
Fork
2.4k
Merge medio
1g 16h
PR unite (30g)
432

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/agent-framework

Tutte le issue di microsoft/agent-framework

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.