aixplain.modules.model.utils
build_payload
def build_payload(data: Union[Text, Dict],
parameters: Optional[Dict] = None,
stream: Optional[bool] = None)
Build a JSON payload for API requests.
This function constructs a JSON payload by combining input data with optional parameters and streaming configuration. It handles various input formats and ensures proper JSON serialization.
Arguments:
data
Union[Text, Dict] - The primary data to include in the payload. Can be a string (which may be JSON) or a dictionary.parameters
Optional[Dict], optional - Additional parameters to include in the payload. Defaults to None.stream
Optional[bool], optional - Whether to enable streaming for this request. If provided, adds streaming configuration to parameters. Defaults to None.
Returns:
str
- A JSON string containing the complete payload with all parameters and data properly formatted.
Notes:
- If data is a string that can be parsed as JSON, it will be.
- If data is a number (after JSON parsing), it will be converted to string.
- The function ensures the result is a valid JSON string.
call_run_endpoint
def call_run_endpoint(url: Text, api_key: Text, payload: Dict) -> Dict
Call a model execution endpoint and handle the response.
This function makes a POST request to a model execution endpoint, handles various response scenarios, and provides appropriate error handling.
Arguments:
url
Text - The endpoint URL to call.api_key
Text - API key for authentication.payload
Dict - The request payload to send.
Returns:
Dict
- A response dictionary containing:- status (str): "IN_PROGRESS", "SUCCESS", or "FAILED"
- completed (bool): Whether the request is complete
- url (str, optional): Polling URL for async requests
- data (Any, optional): Response data if available
- error_message (str, optional): Error message if failed
Notes:
- For async operations, returns a polling URL in the 'url' field
- For failures, includes an error message and sets status to "FAILED"
- Handles both API errors and request exceptions
parse_code
def parse_code(code: Union[Text, Callable]) -> Tuple[Text, List, Text, Text]
Parse and process code for utility model creation.
This function takes code input in various forms (callable, file path, URL, or string) and processes it for use in a utility model. It extracts metadata, validates the code structure, and prepares it for execution.
Arguments:
code
Union[Text, Callable] - The code to parse. Can be:- A callable function
- A file path (string)
- A URL (string)
- Raw code (string)
Returns:
Tuple[Text, List, Text, Text]: A tuple containing:
- code (Text): The processed code, uploaded to storage
- inputs (List[UtilityModelInput]): List of extracted input parameters
- description (Text): Function description from docstring
- name (Text): Function name
Raises:
Exception
- If the code doesn't have a main functionAssertionError
- If input types are not properly specifiedException
- If an input type is not supported (must be int, float, bool, or str)
Notes:
- The function requires a 'main' function in the code
- Input parameters must have type annotations
- Supported input types are: int, float, bool, str
- The code is uploaded to temporary storage for later use
parse_code_decorated
def parse_code_decorated(
code: Union[Text, Callable]) -> Tuple[Text, List, Text, Text]
Parse and process code that may be decorated with @utility_tool.
This function handles code that may be decorated with the @utility_tool decorator, extracting metadata from either the decorator or the code itself. It supports various input formats and provides robust parameter extraction.
Arguments:
code
Union[Text, Callable] - The code to parse. Can be:- A decorated callable function
- A non-decorated callable function
- A file path (string)
- A URL (string)
- Raw code (string)
Returns:
Tuple[Text, List, Text, Text]: A tuple containing:
- code (Text): The processed code, uploaded to storage
- inputs (List[UtilityModelInput]): List of extracted input parameters
- description (Text): Function description from decorator or docstring
- name (Text): Function name from decorator or code
Raises:
TypeError
- If code is a class or class instanceAssertionError
- If input types are not properly specifiedException
- In various cases:- If code doesn't have a function definition
- If code has invalid @utility_tool decorator
- If input type is not supported
- If code parsing fails
Notes:
- Handles both decorated and non-decorated code
- For decorated code, extracts metadata from decorator
- For non-decorated code, falls back to code parsing
- Renames the function to 'main' for backend compatibility
- Supports TEXT, BOOLEAN, and NUMBER input types
- Uploads processed code to temporary storage
is_supported_image_type
def is_supported_image_type(value: str) -> bool
Check if a file path or URL points to a supported image format.
This function checks if the provided string ends with a supported image file extension. The check is case-insensitive.
Arguments:
value
str - The file path or URL to check.
Returns:
bool
- True if the file has a supported image extension, False otherwise.
Notes:
Supported image formats are:
- JPEG (.jpg, .jpeg)
- PNG (.png)
- GIF (.gif)
- BMP (.bmp)
- WebP (.webp)