94 lines
3.0 KiB
Python
94 lines
3.0 KiB
Python
from typing import TYPE_CHECKING, Any, Dict, Optional
|
|
|
|
from litellm.types.videos.main import VideoCreateOptionalRequestParams
|
|
from litellm.types.router import GenericLiteLLMParams
|
|
from litellm.llms.azure.common_utils import BaseAzureLLM
|
|
from litellm.llms.openai.videos.transformation import OpenAIVideoConfig
|
|
|
|
if TYPE_CHECKING:
|
|
from litellm.litellm_core_utils.litellm_logging import Logging as _LiteLLMLoggingObj
|
|
|
|
from ...base_llm.videos.transformation import BaseVideoConfig as _BaseVideoConfig
|
|
from ...base_llm.chat.transformation import BaseLLMException as _BaseLLMException
|
|
|
|
LiteLLMLoggingObj = _LiteLLMLoggingObj
|
|
BaseVideoConfig = _BaseVideoConfig
|
|
BaseLLMException = _BaseLLMException
|
|
else:
|
|
LiteLLMLoggingObj = Any
|
|
BaseVideoConfig = Any
|
|
BaseLLMException = Any
|
|
|
|
|
|
class AzureVideoConfig(OpenAIVideoConfig):
|
|
"""
|
|
Configuration class for OpenAI video generation.
|
|
"""
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
def get_supported_openai_params(self, model: str) -> list:
|
|
"""
|
|
Get the list of supported OpenAI parameters for video generation.
|
|
"""
|
|
return [
|
|
"model",
|
|
"prompt",
|
|
"input_reference",
|
|
"seconds",
|
|
"size",
|
|
"user",
|
|
"extra_headers",
|
|
]
|
|
|
|
def map_openai_params(
|
|
self,
|
|
video_create_optional_params: VideoCreateOptionalRequestParams,
|
|
model: str,
|
|
drop_params: bool,
|
|
) -> Dict:
|
|
"""No mapping applied since inputs are in OpenAI spec already"""
|
|
return dict(video_create_optional_params)
|
|
|
|
def validate_environment(
|
|
self,
|
|
headers: dict,
|
|
model: str,
|
|
api_key: Optional[str] = None,
|
|
litellm_params: Optional[GenericLiteLLMParams] = None,
|
|
) -> dict:
|
|
"""
|
|
Validate Azure environment and set up authentication headers.
|
|
Uses _base_validate_azure_environment to properly handle credentials from litellm_credential_name.
|
|
"""
|
|
# If litellm_params is provided, use it; otherwise create a new one
|
|
if litellm_params is None:
|
|
litellm_params = GenericLiteLLMParams()
|
|
|
|
if api_key and not litellm_params.api_key:
|
|
litellm_params.api_key = api_key
|
|
|
|
# Use the base Azure validation method which properly handles:
|
|
# 1. Credentials from litellm_credential_name via litellm_params
|
|
# 2. Sets the correct "api-key" header (not "Authorization: Bearer")
|
|
return BaseAzureLLM._base_validate_azure_environment(
|
|
headers=headers, litellm_params=litellm_params
|
|
)
|
|
|
|
def get_complete_url(
|
|
self,
|
|
model: str,
|
|
api_base: Optional[str],
|
|
litellm_params: dict,
|
|
) -> str:
|
|
"""
|
|
Constructs a complete URL for the API request.
|
|
"""
|
|
return BaseAzureLLM._get_base_azure_url(
|
|
api_base=api_base,
|
|
litellm_params=litellm_params,
|
|
route="/openai/v1/videos",
|
|
default_api_version="",
|
|
)
|