Fix: Asure-OpenAI resource not found (#11934)

### What problem does this PR solve?

Asure-OpenAI resource not found. #11750


### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
Yongteng Lei
2025-12-13 11:32:46 +08:00
committed by GitHub
parent 44dec89f1f
commit 6be0338aa0
2 changed files with 17 additions and 23 deletions

View File

@ -55,6 +55,7 @@ class SupportedLiteLLMProvider(StrEnum):
DeerAPI = "DeerAPI" DeerAPI = "DeerAPI"
GPUStack = "GPUStack" GPUStack = "GPUStack"
OpenAI = "OpenAI" OpenAI = "OpenAI"
Azure_OpenAI = "Azure-OpenAI"
FACTORY_DEFAULT_BASE_URL = { FACTORY_DEFAULT_BASE_URL = {
@ -116,7 +117,7 @@ LITELLM_PROVIDER_PREFIX = {
SupportedLiteLLMProvider.DeerAPI: "openai/", SupportedLiteLLMProvider.DeerAPI: "openai/",
SupportedLiteLLMProvider.GPUStack: "openai/", SupportedLiteLLMProvider.GPUStack: "openai/",
SupportedLiteLLMProvider.OpenAI: "openai/", SupportedLiteLLMProvider.OpenAI: "openai/",
SupportedLiteLLMProvider.Azure_OpenAI: "azure/",
} }
ChatModel = globals().get("ChatModel", {}) ChatModel = globals().get("ChatModel", {})

View File

@ -28,7 +28,6 @@ import json_repair
import litellm import litellm
import openai import openai
from openai import AsyncOpenAI, OpenAI from openai import AsyncOpenAI, OpenAI
from openai.lib.azure import AzureOpenAI, AsyncAzureOpenAI
from strenum import StrEnum from strenum import StrEnum
from common.token_utils import num_tokens_from_string, total_token_count_from_response from common.token_utils import num_tokens_from_string, total_token_count_from_response
@ -517,26 +516,6 @@ class ModelScopeChat(Base):
super().__init__(key, model_name.split("___")[0], base_url, **kwargs) super().__init__(key, model_name.split("___")[0], base_url, **kwargs)
class AzureChat(Base):
_FACTORY_NAME = "Azure-OpenAI"
def __init__(self, key, model_name, base_url, **kwargs):
api_key = json.loads(key).get("api_key", "")
api_version = json.loads(key).get("api_version", "2024-02-01")
super().__init__(key, model_name, base_url, **kwargs)
self.client = AzureOpenAI(api_key=api_key, azure_endpoint=base_url, api_version=api_version)
self.async_client = AsyncAzureOpenAI(api_key=key, base_url=base_url, api_version=api_version)
self.model_name = model_name
@property
def _retryable_errors(self) -> set[str]:
return {
LLMErrorCode.ERROR_RATE_LIMIT,
LLMErrorCode.ERROR_SERVER,
LLMErrorCode.ERROR_QUOTA,
}
class BaiChuanChat(Base): class BaiChuanChat(Base):
_FACTORY_NAME = "BaiChuan" _FACTORY_NAME = "BaiChuan"
@ -1219,6 +1198,7 @@ class LiteLLMBase(ABC):
"DeerAPI", "DeerAPI",
"GPUStack", "GPUStack",
"OpenAI", "OpenAI",
"Azure-OpenAI",
] ]
def __init__(self, key, model_name, base_url=None, **kwargs): def __init__(self, key, model_name, base_url=None, **kwargs):
@ -1244,6 +1224,9 @@ class LiteLLMBase(ABC):
elif self.provider == SupportedLiteLLMProvider.OpenRouter: elif self.provider == SupportedLiteLLMProvider.OpenRouter:
self.api_key = json.loads(key).get("api_key", "") self.api_key = json.loads(key).get("api_key", "")
self.provider_order = json.loads(key).get("provider_order", "") self.provider_order = json.loads(key).get("provider_order", "")
elif self.provider == SupportedLiteLLMProvider.Azure_OpenAI:
self.api_key = json.loads(key).get("api_key", "")
self.api_version = json.loads(key).get("api_version", "2024-02-01")
def _get_delay(self): def _get_delay(self):
return self.base_delay * random.uniform(10, 150) return self.base_delay * random.uniform(10, 150)
@ -1675,6 +1658,16 @@ class LiteLLMBase(ABC):
"api_base": self.base_url, "api_base": self.base_url,
} }
) )
elif self.provider == SupportedLiteLLMProvider.Azure_OpenAI:
completion_args.pop("api_key", None)
completion_args.pop("api_base", None)
completion_args.update(
{
"api_key": self.api_key,
"api_base": self.base_url,
"api_version": self.api_version,
}
)
# Ollama deployments commonly sit behind a reverse proxy that enforces # Ollama deployments commonly sit behind a reverse proxy that enforces
# Bearer auth. Ensure the Authorization header is set when an API key # Bearer auth. Ensure the Authorization header is set when an API key