Skip to content

Commit 309b2e0

Browse files
authored
Add 'type' Key to Model Configurations and Some Cleanup (Azure#37569)
* Add 'type' Key to Model Configurations and Some Cleanup * get rid of one line functions * add retrieval chat eval * clean up model configuration classes * add changelog entry * fix missing import * fix an import * lint and add docstrings for typed dicts * fix docstrings * rerecord failing tests * add connections.json to gitignore
1 parent 55320e0 commit 309b2e0

File tree

14 files changed

+81
-86
lines changed

14 files changed

+81
-86
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ sdk/storage/azure-storage-blob-changefeed/tests/settings/settings_real.py
123123
!sdk/ml/azure-ai-ml/tests/test_configs/*/*/environment*
124124
!sdk/ml/azure-ai-ml/tests/environment*
125125

126+
# azure-ai-evaluation connections file
127+
sdk/evaluation/azure-ai-evaluation/connections.json
128+
126129

127130
# The locations below are deprecated - keep to prevent any accidental secrets leakage ==========
128131
sdk/storage/azure-storage-blob/tests/_shared/settings_real.py

sdk/evaluation/azure-ai-evaluation/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
### Features Added
66

7+
- Added `type` field to `AzureOpenAIModelConfiguration` and `OpenAIModelConfiguration`
8+
79
### Breaking Changes
810

911
### Bugs Fixed

sdk/evaluation/azure-ai-evaluation/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "python",
44
"TagPrefix": "python/evaluation/azure-ai-evaluation",
5-
"Tag": "python/evaluation/azure-ai-evaluation_9ac3e64c3e"
5+
"Tag": "python/evaluation/azure-ai-evaluation_26cf396fa1"
66
}

sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_common/utils.py

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
# ---------------------------------------------------------
44

55
import threading
6-
from typing import List, Optional, Union
6+
from typing import List, Union
77

88
import nltk
99
import numpy as np
1010

1111
from azure.ai.evaluation._model_configurations import AzureOpenAIModelConfiguration, OpenAIModelConfiguration
12+
from azure.ai.evaluation._constants import AZURE_OPENAI_TYPE, OPENAI_TYPE
1213

1314
from . import constants
1415

@@ -70,18 +71,32 @@ def nltk_tokenize(text: str) -> List[str]:
7071
return list(tokens)
7172

7273

73-
def ensure_api_version_in_aoai_model_config(
74+
def parse_model_config_type(
7475
model_config: Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration],
75-
default_api_version: str,
7676
) -> None:
7777
if "azure_endpoint" in model_config or "azure_deployment" in model_config:
78-
model_config["api_version"] = model_config.get("api_version", default_api_version)
78+
model_config["type"] = AZURE_OPENAI_TYPE
79+
else:
80+
model_config["type"] = OPENAI_TYPE
7981

8082

81-
def ensure_user_agent_in_aoai_model_config(
83+
def construct_prompty_model_config(
8284
model_config: Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration],
83-
prompty_model_config: dict,
84-
user_agent: Optional[str] = None,
85-
) -> None:
86-
if user_agent and ("azure_endpoint" in model_config or "azure_deployment" in model_config):
85+
default_api_version: str,
86+
user_agent: str,
87+
) -> dict:
88+
parse_model_config_type(model_config)
89+
90+
if model_config["type"] == AZURE_OPENAI_TYPE:
91+
model_config["api_version"] = model_config.get("api_version", default_api_version)
92+
93+
prompty_model_config = {"configuration": model_config, "parameters": {"extra_headers": {}}}
94+
95+
# Handle "RuntimeError: Event loop is closed" from httpx AsyncClient
96+
# https://github.com/encode/httpx/discussions/2959
97+
prompty_model_config["parameters"]["extra_headers"].update({"Connection": "close"})
98+
99+
if model_config["type"] == AZURE_OPENAI_TYPE and user_agent:
87100
prompty_model_config["parameters"]["extra_headers"].update({"x-ms-useragent": user_agent})
101+
102+
return prompty_model_config

sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_constants.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,7 @@ class DefaultOpenEncoding:
5757

5858
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT = "OTEL_EXPORTER_OTLP_TRACES_TIMEOUT"
5959
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT_DEFAULT = 60
60+
61+
AZURE_OPENAI_TYPE = "azure_openai"
62+
63+
OPENAI_TYPE = "openai"

sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_chat/retrieval/_retrieval.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from promptflow._utils.async_utils import async_run_allowing_running_loop
1212
from promptflow.core import AsyncPrompty
1313

14-
from ...._common.utils import ensure_api_version_in_aoai_model_config, ensure_user_agent_in_aoai_model_config
14+
from ...._common.utils import construct_prompty_model_config
1515

1616
logger = logging.getLogger(__name__)
1717

@@ -28,17 +28,9 @@ class _AsyncRetrievalChatEvaluator:
2828
DEFAULT_OPEN_API_VERSION = "2024-02-15-preview"
2929

3030
def __init__(self, model_config: dict):
31-
ensure_api_version_in_aoai_model_config(model_config, self.DEFAULT_OPEN_API_VERSION)
32-
33-
prompty_model_config = {"configuration": model_config, "parameters": {"extra_headers": {}}}
34-
35-
# Handle "RuntimeError: Event loop is closed" from httpx AsyncClient
36-
# https://github.com/encode/httpx/discussions/2959
37-
prompty_model_config["parameters"]["extra_headers"].update({"Connection": "close"})
38-
39-
ensure_user_agent_in_aoai_model_config(
31+
prompty_model_config = construct_prompty_model_config(
4032
model_config,
41-
prompty_model_config,
33+
self.DEFAULT_OPEN_API_VERSION,
4234
USER_AGENT,
4335
)
4436

sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_coherence/_coherence.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from azure.ai.evaluation._exceptions import ErrorBlame, ErrorCategory, ErrorTarget, EvaluationException
1313

14-
from ..._common.utils import ensure_api_version_in_aoai_model_config, ensure_user_agent_in_aoai_model_config
14+
from ..._common.utils import construct_prompty_model_config
1515

1616
try:
1717
from ..._user_agent import USER_AGENT
@@ -26,17 +26,9 @@ class _AsyncCoherenceEvaluator:
2626
DEFAULT_OPEN_API_VERSION = "2024-02-15-preview"
2727

2828
def __init__(self, model_config: dict):
29-
ensure_api_version_in_aoai_model_config(model_config, self.DEFAULT_OPEN_API_VERSION)
30-
31-
prompty_model_config = {"configuration": model_config, "parameters": {"extra_headers": {}}}
32-
33-
# Handle "RuntimeError: Event loop is closed" from httpx AsyncClient
34-
# https://github.com/encode/httpx/discussions/2959
35-
prompty_model_config["parameters"]["extra_headers"].update({"Connection": "close"})
36-
37-
ensure_user_agent_in_aoai_model_config(
29+
prompty_model_config = construct_prompty_model_config(
3830
model_config,
39-
prompty_model_config,
31+
self.DEFAULT_OPEN_API_VERSION,
4032
USER_AGENT,
4133
)
4234

sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_fluency/_fluency.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from azure.ai.evaluation._exceptions import ErrorBlame, ErrorCategory, ErrorTarget, EvaluationException
1313

14-
from ..._common.utils import ensure_api_version_in_aoai_model_config, ensure_user_agent_in_aoai_model_config
14+
from ..._common.utils import construct_prompty_model_config
1515

1616
try:
1717
from ..._user_agent import USER_AGENT
@@ -26,17 +26,9 @@ class _AsyncFluencyEvaluator:
2626
DEFAULT_OPEN_API_VERSION = "2024-02-15-preview"
2727

2828
def __init__(self, model_config: dict):
29-
ensure_api_version_in_aoai_model_config(model_config, self.DEFAULT_OPEN_API_VERSION)
30-
31-
prompty_model_config = {"configuration": model_config, "parameters": {"extra_headers": {}}}
32-
33-
# Handle "RuntimeError: Event loop is closed" from httpx AsyncClient
34-
# https://github.com/encode/httpx/discussions/2959
35-
prompty_model_config["parameters"]["extra_headers"].update({"Connection": "close"})
36-
37-
ensure_user_agent_in_aoai_model_config(
29+
prompty_model_config = construct_prompty_model_config(
3830
model_config,
39-
prompty_model_config,
31+
self.DEFAULT_OPEN_API_VERSION,
4032
USER_AGENT,
4133
)
4234

sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_groundedness/_groundedness.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from azure.ai.evaluation._exceptions import ErrorBlame, ErrorCategory, ErrorTarget, EvaluationException
1313

14-
from ..._common.utils import ensure_api_version_in_aoai_model_config, ensure_user_agent_in_aoai_model_config
14+
from ..._common.utils import construct_prompty_model_config
1515

1616
try:
1717
from ..._user_agent import USER_AGENT
@@ -26,17 +26,9 @@ class _AsyncGroundednessEvaluator:
2626
DEFAULT_OPEN_API_VERSION = "2024-02-15-preview"
2727

2828
def __init__(self, model_config: dict):
29-
ensure_api_version_in_aoai_model_config(model_config, self.DEFAULT_OPEN_API_VERSION)
30-
31-
prompty_model_config = {"configuration": model_config, "parameters": {"extra_headers": {}}}
32-
33-
# Handle "RuntimeError: Event loop is closed" from httpx AsyncClient
34-
# https://github.com/encode/httpx/discussions/2959
35-
prompty_model_config["parameters"]["extra_headers"].update({"Connection": "close"})
36-
37-
ensure_user_agent_in_aoai_model_config(
29+
prompty_model_config = construct_prompty_model_config(
3830
model_config,
39-
prompty_model_config,
31+
self.DEFAULT_OPEN_API_VERSION,
4032
USER_AGENT,
4133
)
4234

sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_relevance/_relevance.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from azure.ai.evaluation._exceptions import ErrorBlame, ErrorCategory, ErrorTarget, EvaluationException
1313

14-
from ..._common.utils import ensure_api_version_in_aoai_model_config, ensure_user_agent_in_aoai_model_config
14+
from ..._common.utils import construct_prompty_model_config
1515

1616
try:
1717
from ..._user_agent import USER_AGENT
@@ -26,17 +26,9 @@ class _AsyncRelevanceEvaluator:
2626
DEFAULT_OPEN_API_VERSION = "2024-02-15-preview"
2727

2828
def __init__(self, model_config: dict):
29-
ensure_api_version_in_aoai_model_config(model_config, self.DEFAULT_OPEN_API_VERSION)
30-
31-
prompty_model_config = {"configuration": model_config, "parameters": {"extra_headers": {}}}
32-
33-
# Handle "RuntimeError: Event loop is closed" from httpx AsyncClient
34-
# https://github.com/encode/httpx/discussions/2959
35-
prompty_model_config["parameters"]["extra_headers"].update({"Connection": "close"})
36-
37-
ensure_user_agent_in_aoai_model_config(
29+
prompty_model_config = construct_prompty_model_config(
3830
model_config,
39-
prompty_model_config,
31+
self.DEFAULT_OPEN_API_VERSION,
4032
USER_AGENT,
4133
)
4234

0 commit comments

Comments
 (0)