Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đã đóng
#9,097 1 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@eavanvalkenburg đang làm issue này rồi.

Từ ngày 6/10/2026.

  • #9098 của @Aditya-XR — đã merge

Đánh giá

Issue này chưa được đánh giá.

Mô tả

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.
Ngôn ngữ chính
Python
Star
14.3k
Fork
2.5k
Merge trung bình
2 ngày 16 giờ
Pull request đã merge (30 ngày)
383

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của microsoft/agent-framework

Tất cả issue của microsoft/agent-framework

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.