chore: initial snapshot for gitea/github upload
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
"""
|
||||
Utility functions for Interactions API.
|
||||
"""
|
||||
|
||||
from typing import Any, Dict, Optional, cast
|
||||
|
||||
from litellm.llms.base_llm.interactions.transformation import BaseInteractionsAPIConfig
|
||||
from litellm.types.interactions import InteractionsAPIOptionalRequestParams
|
||||
|
||||
# Valid optional parameter keys per OpenAPI spec
|
||||
INTERACTIONS_API_OPTIONAL_PARAMS = {
|
||||
"tools",
|
||||
"system_instruction",
|
||||
"generation_config",
|
||||
"stream",
|
||||
"store",
|
||||
"background",
|
||||
"response_modalities",
|
||||
"response_format",
|
||||
"response_mime_type",
|
||||
"previous_interaction_id",
|
||||
"agent_config",
|
||||
}
|
||||
|
||||
|
||||
def get_provider_interactions_api_config(
|
||||
provider: str,
|
||||
model: Optional[str] = None,
|
||||
) -> Optional[BaseInteractionsAPIConfig]:
|
||||
"""
|
||||
Get the interactions API config for the given provider.
|
||||
|
||||
Args:
|
||||
provider: The LLM provider name
|
||||
model: Optional model name
|
||||
|
||||
Returns:
|
||||
The provider-specific interactions API config, or None if not supported
|
||||
"""
|
||||
from litellm.types.utils import LlmProviders
|
||||
|
||||
if provider == LlmProviders.GEMINI.value or provider == "gemini":
|
||||
from litellm.llms.gemini.interactions.transformation import (
|
||||
GoogleAIStudioInteractionsConfig,
|
||||
)
|
||||
|
||||
return GoogleAIStudioInteractionsConfig()
|
||||
|
||||
return None
|
||||
|
||||
|
||||
class InteractionsAPIRequestUtils:
|
||||
"""Helper utils for constructing Interactions API requests."""
|
||||
|
||||
@staticmethod
|
||||
def get_requested_interactions_api_optional_params(
|
||||
params: Dict[str, Any],
|
||||
) -> InteractionsAPIOptionalRequestParams:
|
||||
"""
|
||||
Filter parameters to only include valid optional params per OpenAPI spec.
|
||||
|
||||
Args:
|
||||
params: Dictionary of parameters to filter (typically from locals())
|
||||
|
||||
Returns:
|
||||
Dict with only the valid optional parameters
|
||||
"""
|
||||
from litellm.utils import PreProcessNonDefaultParams
|
||||
|
||||
custom_llm_provider = params.pop("custom_llm_provider", None)
|
||||
special_params = params.pop("kwargs", {})
|
||||
additional_drop_params = params.pop("additional_drop_params", None)
|
||||
|
||||
non_default_params = (
|
||||
PreProcessNonDefaultParams.base_pre_process_non_default_params(
|
||||
passed_params=params,
|
||||
special_params=special_params,
|
||||
custom_llm_provider=custom_llm_provider,
|
||||
additional_drop_params=additional_drop_params,
|
||||
default_param_values={
|
||||
k: None for k in INTERACTIONS_API_OPTIONAL_PARAMS
|
||||
},
|
||||
additional_endpoint_specific_params=["input", "model", "agent"],
|
||||
)
|
||||
)
|
||||
|
||||
return cast(InteractionsAPIOptionalRequestParams, non_default_params)
|
||||
Reference in New Issue
Block a user