Coverage for intelligence_toolkit/tests/unit/AI/test_openai_configuration.py: 100%
85 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-16 13:41 -0300
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-16 13:41 -0300
1# Copyright (c) 2024 Microsoft Corporation. All rights reserved.
2# Licensed under the MIT license. See LICENSE file in the project.
3#
4import os
5from unittest.mock import patch
7import pytest
9from intelligence_toolkit.AI.defaults import (
10 DEFAULT_AZ_AUTH_TYPE,
11 DEFAULT_EMBEDDING_MODEL,
12 DEFAULT_EMBEDDING_MODEL_AZURE,
13 DEFAULT_LLM_MAX_TOKENS,
14 DEFAULT_LLM_MODEL,
15 DEFAULT_OPENAI_VERSION,
16 DEFAULT_TEMPERATURE,
17)
18from intelligence_toolkit.AI.openai_configuration import OpenAIConfiguration
21@pytest.fixture
22def clean_env(monkeypatch):
23 """Remove all OpenAI-related environment variables for clean testing."""
24 env_vars = [
25 "OPENAI_TYPE",
26 "AZURE_AUTH_TYPE",
27 "AZURE_OPENAI_VERSION",
28 "OPENAI_API_MODEL",
29 "OPENAI_EMBEDDING_MODEL",
30 "AZURE_OPENAI_ENDPOINT",
31 "OPENAI_API_KEY",
32 ]
33 for var in env_vars:
34 monkeypatch.delenv(var, raising=False)
37def test_openai_configuration_initialization_defaults(clean_env):
38 config = OpenAIConfiguration()
40 assert config.api_key == ""
41 assert config.model == DEFAULT_LLM_MODEL
42 assert config.api_base is None # Empty string becomes None via _non_blank
43 assert config.api_version == DEFAULT_OPENAI_VERSION
44 assert config.temperature == DEFAULT_TEMPERATURE
45 assert config.max_tokens == DEFAULT_LLM_MAX_TOKENS
46 assert config.az_auth_type == DEFAULT_AZ_AUTH_TYPE
47 assert config.api_type == "OpenAI"
48 assert config.embedding_model == DEFAULT_EMBEDDING_MODEL
51def test_openai_configuration_initialization_with_config():
52 config_dict = {
53 "api_key": "test_key_123",
54 "model": "gpt-4",
55 "api_base": "https://test.openai.azure.com",
56 "api_version": "2023-05-15",
57 "temperature": 0.7,
58 "max_tokens": 2000,
59 "az_auth_type": "Managed Identity",
60 "api_type": "Azure OpenAI",
61 "embedding_model": "text-embedding-ada-002",
62 }
64 config = OpenAIConfiguration(config_dict)
66 assert config.api_key == "test_key_123"
67 assert config.model == "gpt-4"
68 assert config.api_base == "https://test.openai.azure.com"
69 assert config.api_version == "2023-05-15"
70 assert config.temperature == 0.7
71 assert config.max_tokens == 2000
72 assert config.az_auth_type == "Managed Identity"
73 assert config.api_type == "Azure OpenAI"
74 assert config.embedding_model == "text-embedding-ada-002"
77def test_openai_configuration_from_environment(monkeypatch):
78 monkeypatch.setenv("OPENAI_TYPE", "Azure OpenAI")
79 monkeypatch.setenv("AZURE_AUTH_TYPE", "Managed Identity")
80 monkeypatch.setenv("AZURE_OPENAI_VERSION", "2024-02-01")
81 monkeypatch.setenv("OPENAI_API_MODEL", "gpt-4-turbo")
82 monkeypatch.setenv("OPENAI_EMBEDDING_MODEL", "text-embedding-3-large")
83 monkeypatch.setenv("AZURE_OPENAI_ENDPOINT", "https://my-resource.openai.azure.com/")
84 monkeypatch.setenv("OPENAI_API_KEY", "env_api_key")
86 config = OpenAIConfiguration()
88 assert config.api_type == "Azure OpenAI"
89 assert config.az_auth_type == "Managed Identity"
90 assert config.api_version == "2024-02-01"
91 assert config.model == "gpt-4-turbo"
92 assert config.embedding_model == "text-embedding-3-large"
93 assert config.api_base == "https://my-resource.openai.azure.com"
94 assert config.api_key == "env_api_key"
97def test_openai_configuration_api_base_trailing_slash_removal():
98 config_dict = {
99 "api_base": "https://test.openai.azure.com/",
100 }
102 config = OpenAIConfiguration(config_dict)
103 assert config.api_base == "https://test.openai.azure.com"
106def test_openai_configuration_api_base_no_trailing_slash():
107 config_dict = {
108 "api_base": "https://test.openai.azure.com",
109 }
111 config = OpenAIConfiguration(config_dict)
112 assert config.api_base == "https://test.openai.azure.com"
115def test_openai_configuration_blank_api_base():
116 config_dict = {
117 "api_base": " ",
118 }
120 config = OpenAIConfiguration(config_dict)
121 assert config.api_base is None
124def test_openai_configuration_blank_api_version():
125 config_dict = {
126 "api_version": " ",
127 }
129 config = OpenAIConfiguration(config_dict)
130 assert config.api_version is None
133def test_openai_configuration_azure_embedding_model_default(monkeypatch):
134 monkeypatch.setenv("OPENAI_TYPE", "Azure OpenAI")
135 monkeypatch.delenv("OPENAI_EMBEDDING_MODEL", raising=False)
137 config = OpenAIConfiguration()
138 assert config.embedding_model == DEFAULT_EMBEDDING_MODEL_AZURE
141def test_openai_configuration_openai_embedding_model_default(clean_env, monkeypatch):
142 monkeypatch.setenv("OPENAI_TYPE", "OpenAI")
144 config = OpenAIConfiguration()
145 assert config.embedding_model == DEFAULT_EMBEDDING_MODEL
148def test_openai_configuration_properties_are_accessible():
149 config = OpenAIConfiguration()
151 # Test that all properties are accessible
152 _ = config.api_key
153 _ = config.model
154 _ = config.api_base
155 _ = config.api_version
156 _ = config.temperature
157 _ = config.max_tokens
158 _ = config.embedding_model
159 _ = config.api_type
160 _ = config.az_auth_type