Skip to content

Commit cce85f3

Browse files
committed
Version 1.4.69
1 parent 33b6f81 commit cce85f3

331 files changed

Lines changed: 2559 additions & 88 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

abacusai/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@
224224
from .prediction_operator import PredictionOperator
225225
from .prediction_operator_version import PredictionOperatorVersion
226226
from .presentation_export_result import PresentationExportResult
227+
from .private_web_app_deployment import PrivateWebAppDeployment
227228
from .problem_type import ProblemType
228229
from .project import Project
229230
from .project_config import ProjectConfig
@@ -276,6 +277,7 @@
276277
from .video_search_result import VideoSearchResult
277278
from .voice_gen_details import VoiceGenDetails
278279
from .web_app_conversation import WebAppConversation
280+
from .web_app_deployment_permission_dict import WebAppDeploymentPermissionDict
279281
from .web_app_domain import WebAppDomain
280282
from .web_page_response import WebPageResponse
281283
from .web_search_response import WebSearchResponse
@@ -285,4 +287,4 @@
285287
from .workflow_node_template import WorkflowNodeTemplate
286288

287289

288-
__version__ = "1.4.68"
290+
__version__ = "1.4.69"

abacusai/api_class/model.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,7 @@ class ChatLLMTrainingConfig(TrainingConfig):
503503
json_response_schema (str): Specifies the JSON schema that the model should adhere to if `response_format` is set to "JSON". This should be a json-formatted string where each field of the expected schema is mapped to a dictionary containing the fields 'type', 'required' and 'description'. For example - '{"sample_field": {"type": "integer", "required": true, "description": "Sample Field"}}'
504504
mask_pii (bool): Mask PII in the prompts and uploaded documents before sending it to the LLM. Only available for Enterprise users and will cause validation errors if set to True for ChatLLM Teams users.
505505
builtin_tools (List[SystemConnectorTool]): List of builtin system connector tools to use in the ChatLLM. Using builtin tools does not require enabling tool bar (enable_tool_bar flag).
506+
config_connectors (List[str]): List of names of config connectors to use in the ChatLLM. This should not be used with document_retrievers.
506507
mcp_servers (List[str]): List of names of MCP servers to use in the ChatLLM. This should not be used with document_retrievers.
507508
agentic_loop_mode (bool): Enables use of agentic loop that uses a series of tool calls when needed to respond. If set to False, the agentic loop will not be used. If not set or set to Auto, the agentic loop will be automatically used based on certain conditions like presence of tools in the model.
508509
"""
@@ -545,6 +546,7 @@ class ChatLLMTrainingConfig(TrainingConfig):
545546
json_response_schema: str = dataclasses.field(default=None)
546547
mask_pii: bool = dataclasses.field(default=None)
547548
builtin_tools: List[SystemConnectorTool] = dataclasses.field(default=None)
549+
config_connectors: List[str] = dataclasses.field(default=None)
548550
mcp_servers: List[str] = dataclasses.field(default=None)
549551
agentic_loop_mode: bool = dataclasses.field(default=None)
550552

abacusai/batch_prediction.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def __init__(self, client, batchPredictionId=None, createdAt=None, name=None, de
8484
BatchPredictionArgs, globalPredictionArgs)
8585
self.batch_prediction_args = client._build_class(getattr(
8686
api_class, batchPredictionArgsType, BatchPredictionArgs) if batchPredictionArgsType else BatchPredictionArgs, batchPredictionArgs)
87-
self.deprecated_keys = {'explanations', 'global_prediction_args'}
87+
self.deprecated_keys = {'global_prediction_args', 'explanations'}
8888

8989
def __repr__(self):
9090
repr_dict = {f'batch_prediction_id': repr(self.batch_prediction_id), f'created_at': repr(self.created_at), f'name': repr(self.name), f'deployment_id': repr(self.deployment_id), f'file_connector_output_location': repr(self.file_connector_output_location), f'database_connector_id': repr(self.database_connector_id), f'database_output_configuration': repr(self.database_output_configuration), f'file_output_format': repr(self.file_output_format), f'connector_type': repr(self.connector_type), f'legacy_input_location': repr(self.legacy_input_location), f'output_feature_group_id': repr(self.output_feature_group_id), f'feature_group_table_name': repr(self.feature_group_table_name), f'output_feature_group_table_name': repr(self.output_feature_group_table_name), f'summary_feature_group_table_name': repr(self.summary_feature_group_table_name), f'csv_input_prefix': repr(

abacusai/batch_prediction_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def __init__(self, client, batchPredictionVersion=None, batchPredictionId=None,
100100
BatchPredictionArgs, globalPredictionArgs)
101101
self.batch_prediction_args = client._build_class(getattr(
102102
api_class, batchPredictionArgsType, BatchPredictionArgs) if batchPredictionArgsType else BatchPredictionArgs, batchPredictionArgs)
103-
self.deprecated_keys = {'explanations', 'global_prediction_args'}
103+
self.deprecated_keys = {'global_prediction_args', 'explanations'}
104104

105105
def __repr__(self):
106106
repr_dict = {f'batch_prediction_version': repr(self.batch_prediction_version), f'batch_prediction_id': repr(self.batch_prediction_id), f'status': repr(self.status), f'drift_monitor_status': repr(self.drift_monitor_status), f'deployment_id': repr(self.deployment_id), f'model_id': repr(self.model_id), f'model_version': repr(self.model_version), f'predictions_started_at': repr(self.predictions_started_at), f'predictions_completed_at': repr(self.predictions_completed_at), f'database_output_error': repr(self.database_output_error), f'total_predictions': repr(self.total_predictions), f'failed_predictions': repr(self.failed_predictions), f'database_connector_id': repr(self.database_connector_id), f'database_output_configuration': repr(self.database_output_configuration), f'file_connector_output_location': repr(self.file_connector_output_location), f'file_output_format': repr(self.file_output_format), f'connector_type': repr(self.connector_type), f'legacy_input_location': repr(self.legacy_input_location), f'error': repr(self.error), f'drift_monitor_error': repr(self.drift_monitor_error), f'monitor_warnings': repr(self.monitor_warnings), f'csv_input_prefix': repr(

abacusai/client.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -667,7 +667,7 @@ class BaseApiClient:
667667
client_options (ClientOptions): Optional API client configurations
668668
skip_version_check (bool): If true, will skip checking the server's current API version on initializing the client
669669
"""
670-
client_version = '1.4.68'
670+
client_version = '1.4.69'
671671

672672
def __init__(self, api_key: str = None, server: str = None, client_options: ClientOptions = None, skip_version_check: bool = False, include_tb: bool = False):
673673
self.api_key = api_key
@@ -857,7 +857,7 @@ def _call_api(
857857
error_message, response.status_code, error_type, request_id)
858858
return result
859859

860-
def _proxy_request(self, name: str, method: str = 'POST', query_params: dict = None, body: dict = None, data: dict = None, files=None, parse_type=None, is_sync: bool = False, streamable_response: bool = False):
860+
def _proxy_request(self, name: str, method: str = 'POST', query_params: dict = None, body: dict = None, data: dict = None, files=None, parse_type=None, is_sync: bool = False, streamable_response: bool = False, timeout=None):
861861
headers = {'APIKEY': self.api_key}
862862
deployment_id = os.getenv('ABACUS_EXEC_SERVICE_DEPLOYMENT_ID')
863863
if deployment_id:
@@ -908,7 +908,7 @@ def _proxy_request(self, name: str, method: str = 'POST', query_params: dict = N
908908
if is_sync:
909909
sync_api_endpoint = f'{endpoint}/api/{name}'
910910
response = self._request(url=sync_api_endpoint, method=method, query_params=query_params,
911-
headers=headers, body=body, data=data, files=files, stream=streamable_response)
911+
headers=headers, body=body, data=data, files=files, stream=streamable_response, timeout=timeout)
912912
status_code = response.status_code
913913
if streamable_response and status_code == 200:
914914
return response.raw
@@ -7719,7 +7719,7 @@ def get_deep_agent_response(self, message: str, deployment_conversation_id: str
77197719
Args:
77207720
message (str): The user's message/task for DeepAgent to complete
77217721
deployment_conversation_id (str): The unique identifier of a deployment conversation to continue. If not specified, a new one will be created."""
7722-
return self._proxy_request('getDeepAgentResponse', 'POST', query_params={}, body={'message': message, 'deploymentConversationId': deployment_conversation_id}, is_sync=True)
7722+
return self._proxy_request('getDeepAgentResponse', 'POST', query_params={}, body={'message': message, 'deploymentConversationId': deployment_conversation_id}, is_sync=True, timeout=3600)
77237723

77247724
def get_search_results(self, deployment_token: str, deployment_id: str, query_data: dict, num: int = 15) -> Dict:
77257725
"""Return the most relevant search results to the search query from the uploaded documents.

abacusai/hosted_app_container.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ class HostedAppContainer(AbstractApiClass):
1212
deploymentConversationId (id): The deployment conversation ID
1313
hostedAppVersion (id): The instance of the hosted app
1414
name (str): The name of the hosted app
15+
userId (id): The ID of the creation user
16+
email (str): The email of the creation user
1517
createdAt (str): Creation timestamp
1618
updatedAt (str): Last update timestamp
1719
containerImage (str): Container image name
@@ -34,13 +36,15 @@ class HostedAppContainer(AbstractApiClass):
3436
parentConversationId (id): The ID of the parent conversation
3537
"""
3638

37-
def __init__(self, client, hostedAppContainerId=None, hostedAppId=None, deploymentConversationId=None, hostedAppVersion=None, name=None, createdAt=None, updatedAt=None, containerImage=None, route=None, appConfig=None, isDev=None, isDeployable=None, isPreviewAvailable=None, lifecycle=None, status=None, deployedStatus=None, accessLevel=None, hostname=None, llmArtifactId=None, artifactType=None, deployedLlmArtifactId=None, hasDatabase=None, hasStorage=None, webAppProjectId=None, parentConversationId=None):
39+
def __init__(self, client, hostedAppContainerId=None, hostedAppId=None, deploymentConversationId=None, hostedAppVersion=None, name=None, userId=None, email=None, createdAt=None, updatedAt=None, containerImage=None, route=None, appConfig=None, isDev=None, isDeployable=None, isPreviewAvailable=None, lifecycle=None, status=None, deployedStatus=None, accessLevel=None, hostname=None, llmArtifactId=None, artifactType=None, deployedLlmArtifactId=None, hasDatabase=None, hasStorage=None, webAppProjectId=None, parentConversationId=None):
3840
super().__init__(client, hostedAppContainerId)
3941
self.hosted_app_container_id = hostedAppContainerId
4042
self.hosted_app_id = hostedAppId
4143
self.deployment_conversation_id = deploymentConversationId
4244
self.hosted_app_version = hostedAppVersion
4345
self.name = name
46+
self.user_id = userId
47+
self.email = email
4448
self.created_at = createdAt
4549
self.updated_at = updatedAt
4650
self.container_image = containerImage
@@ -64,7 +68,7 @@ def __init__(self, client, hostedAppContainerId=None, hostedAppId=None, deployme
6468
self.deprecated_keys = {}
6569

6670
def __repr__(self):
67-
repr_dict = {f'hosted_app_container_id': repr(self.hosted_app_container_id), f'hosted_app_id': repr(self.hosted_app_id), f'deployment_conversation_id': repr(self.deployment_conversation_id), f'hosted_app_version': repr(self.hosted_app_version), f'name': repr(self.name), f'created_at': repr(self.created_at), f'updated_at': repr(self.updated_at), f'container_image': repr(self.container_image), f'route': repr(self.route), f'app_config': repr(self.app_config), f'is_dev': repr(self.is_dev), f'is_deployable': repr(self.is_deployable), f'is_preview_available': repr(
71+
repr_dict = {f'hosted_app_container_id': repr(self.hosted_app_container_id), f'hosted_app_id': repr(self.hosted_app_id), f'deployment_conversation_id': repr(self.deployment_conversation_id), f'hosted_app_version': repr(self.hosted_app_version), f'name': repr(self.name), f'user_id': repr(self.user_id), f'email': repr(self.email), f'created_at': repr(self.created_at), f'updated_at': repr(self.updated_at), f'container_image': repr(self.container_image), f'route': repr(self.route), f'app_config': repr(self.app_config), f'is_dev': repr(self.is_dev), f'is_deployable': repr(self.is_deployable), f'is_preview_available': repr(
6872
self.is_preview_available), f'lifecycle': repr(self.lifecycle), f'status': repr(self.status), f'deployed_status': repr(self.deployed_status), f'access_level': repr(self.access_level), f'hostname': repr(self.hostname), f'llm_artifact_id': repr(self.llm_artifact_id), f'artifact_type': repr(self.artifact_type), f'deployed_llm_artifact_id': repr(self.deployed_llm_artifact_id), f'has_database': repr(self.has_database), f'has_storage': repr(self.has_storage), f'web_app_project_id': repr(self.web_app_project_id), f'parent_conversation_id': repr(self.parent_conversation_id)}
6973
class_name = "HostedAppContainer"
7074
repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
@@ -78,6 +82,6 @@ def to_dict(self):
7882
Returns:
7983
dict: The dict value representation of the class parameters
8084
"""
81-
resp = {'hosted_app_container_id': self.hosted_app_container_id, 'hosted_app_id': self.hosted_app_id, 'deployment_conversation_id': self.deployment_conversation_id, 'hosted_app_version': self.hosted_app_version, 'name': self.name, 'created_at': self.created_at, 'updated_at': self.updated_at, 'container_image': self.container_image, 'route': self.route, 'app_config': self.app_config, 'is_dev': self.is_dev, 'is_deployable': self.is_deployable, 'is_preview_available': self.is_preview_available,
82-
'lifecycle': self.lifecycle, 'status': self.status, 'deployed_status': self.deployed_status, 'access_level': self.access_level, 'hostname': self.hostname, 'llm_artifact_id': self.llm_artifact_id, 'artifact_type': self.artifact_type, 'deployed_llm_artifact_id': self.deployed_llm_artifact_id, 'has_database': self.has_database, 'has_storage': self.has_storage, 'web_app_project_id': self.web_app_project_id, 'parent_conversation_id': self.parent_conversation_id}
85+
resp = {'hosted_app_container_id': self.hosted_app_container_id, 'hosted_app_id': self.hosted_app_id, 'deployment_conversation_id': self.deployment_conversation_id, 'hosted_app_version': self.hosted_app_version, 'name': self.name, 'user_id': self.user_id, 'email': self.email, 'created_at': self.created_at, 'updated_at': self.updated_at, 'container_image': self.container_image, 'route': self.route, 'app_config': self.app_config, 'is_dev': self.is_dev, 'is_deployable': self.is_deployable,
86+
'is_preview_available': self.is_preview_available, 'lifecycle': self.lifecycle, 'status': self.status, 'deployed_status': self.deployed_status, 'access_level': self.access_level, 'hostname': self.hostname, 'llm_artifact_id': self.llm_artifact_id, 'artifact_type': self.artifact_type, 'deployed_llm_artifact_id': self.deployed_llm_artifact_id, 'has_database': self.has_database, 'has_storage': self.has_storage, 'web_app_project_id': self.web_app_project_id, 'parent_conversation_id': self.parent_conversation_id}
8387
return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}

abacusai/prediction_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ def get_deep_agent_response(self, message: str, deployment_conversation_id: str
431431
Args:
432432
message (str): The user's message/task for DeepAgent to complete
433433
deployment_conversation_id (str): The unique identifier of a deployment conversation to continue. If not specified, a new one will be created."""
434-
return self._proxy_request('getDeepAgentResponse', 'POST', query_params={}, body={'message': message, 'deploymentConversationId': deployment_conversation_id}, is_sync=True)
434+
return self._proxy_request('getDeepAgentResponse', 'POST', query_params={}, body={'message': message, 'deploymentConversationId': deployment_conversation_id}, is_sync=True, timeout=3600)
435435

436436
def get_search_results(self, deployment_token: str, deployment_id: str, query_data: dict, num: int = 15) -> Dict:
437437
"""Return the most relevant search results to the search query from the uploaded documents.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from .return_class import AbstractApiClass
2+
3+
4+
class PrivateWebAppDeployment(AbstractApiClass):
5+
"""
6+
Private web app deployment list.
7+
8+
Args:
9+
client (ApiClient): An authenticated API Client instance
10+
hostname (str): The hostname of the web app deployment.
11+
llmArtifactId (id): The ID of the LLM artifact.
12+
hostedAppVersion (id): The version of the hosted app.
13+
applicationType (str): The type of application.
14+
lifecycle (str): The lifecycle of the web app deployment.
15+
deploymentConversationId (id): The ID of the deployment conversation.
16+
conversationName (str): The name of the conversation.
17+
userId (id): The ID of the user who created the deployment.
18+
email (str): The email of the user who created the deployment.
19+
conversationType (str): The type of conversation.
20+
source (str): The source of the conversation.
21+
conversationCreatedAt (str): The timestamp when the conversation was created.
22+
"""
23+
24+
def __init__(self, client, hostname=None, llmArtifactId=None, hostedAppVersion=None, applicationType=None, lifecycle=None, deploymentConversationId=None, conversationName=None, userId=None, email=None, conversationType=None, source=None, conversationCreatedAt=None):
25+
super().__init__(client, None)
26+
self.hostname = hostname
27+
self.llm_artifact_id = llmArtifactId
28+
self.hosted_app_version = hostedAppVersion
29+
self.application_type = applicationType
30+
self.lifecycle = lifecycle
31+
self.deployment_conversation_id = deploymentConversationId
32+
self.conversation_name = conversationName
33+
self.user_id = userId
34+
self.email = email
35+
self.conversation_type = conversationType
36+
self.source = source
37+
self.conversation_created_at = conversationCreatedAt
38+
self.deprecated_keys = {}
39+
40+
def __repr__(self):
41+
repr_dict = {f'hostname': repr(self.hostname), f'llm_artifact_id': repr(self.llm_artifact_id), f'hosted_app_version': repr(self.hosted_app_version), f'application_type': repr(self.application_type), f'lifecycle': repr(self.lifecycle), f'deployment_conversation_id': repr(
42+
self.deployment_conversation_id), f'conversation_name': repr(self.conversation_name), f'user_id': repr(self.user_id), f'email': repr(self.email), f'conversation_type': repr(self.conversation_type), f'source': repr(self.source), f'conversation_created_at': repr(self.conversation_created_at)}
43+
class_name = "PrivateWebAppDeployment"
44+
repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
45+
) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
46+
return f"{class_name}({repr_str})"
47+
48+
def to_dict(self):
49+
"""
50+
Get a dict representation of the parameters in this class
51+
52+
Returns:
53+
dict: The dict value representation of the class parameters
54+
"""
55+
resp = {'hostname': self.hostname, 'llm_artifact_id': self.llm_artifact_id, 'hosted_app_version': self.hosted_app_version, 'application_type': self.application_type, 'lifecycle': self.lifecycle, 'deployment_conversation_id': self.deployment_conversation_id,
56+
'conversation_name': self.conversation_name, 'user_id': self.user_id, 'email': self.email, 'conversation_type': self.conversation_type, 'source': self.source, 'conversation_created_at': self.conversation_created_at}
57+
return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}

0 commit comments

Comments
 (0)