diff --git a/abacusai/__init__.py b/abacusai/__init__.py
index 903bdaf9..80a0f3ab 100644
--- a/abacusai/__init__.py
+++ b/abacusai/__init__.py
@@ -225,7 +225,8 @@
from .web_search_response import WebSearchResponse
from .web_search_result import WebSearchResult
from .webhook import Webhook
+from .workflow_graph_node import WorkflowGraphNode
from .workflow_node_template import WorkflowNodeTemplate
-__version__ = "1.4.23"
+__version__ = "1.4.24"
diff --git a/abacusai/api_class/ai_agents.py b/abacusai/api_class/ai_agents.py
index 826cc659..c8aa00a6 100644
--- a/abacusai/api_class/ai_agents.py
+++ b/abacusai/api_class/ai_agents.py
@@ -1,6 +1,6 @@
import ast
import dataclasses
-from typing import Dict, List, Union
+from typing import Dict, List, Tuple, Union
from . import enums
from .abstract import ApiClass, get_clean_function_source_code_for_agent, validate_constructor_arg_types
@@ -34,6 +34,8 @@ class FieldDescriptor(ApiClass):
class JSONSchema:
@classmethod
def from_fields_list(cls, fields_list: List[str]):
+ if not fields_list:
+ return cls(json_schema={})
json_schema = {
'type': 'object',
'properties': {field: {'title': field, 'type': 'string'} for field in fields_list}
@@ -62,6 +64,7 @@ class WorkflowNodeInputMapping(ApiClass):
Set to `None` if the type is `USER_INPUT` and the variable doesn't need a pre-filled initial value.
is_required (bool): Indicates whether the input is required. Defaults to True.
description (str): The description of this input.
+ constant_value (str): The constant value of this input if variable type is CONSTANT. Only applicable for template nodes.
"""
name: str
variable_type: enums.WorkflowNodeInputType
@@ -69,10 +72,21 @@ class WorkflowNodeInputMapping(ApiClass):
source_prop: str = dataclasses.field(default=None)
is_required: bool = dataclasses.field(default=True)
description: str = dataclasses.field(default=None)
+ constant_value: str = dataclasses.field(default=None)
def __post_init__(self):
- if self.variable_type == enums.WorkflowNodeInputType.IGNORE and self.is_required:
- raise ValueError('input_mapping', 'Invalid input mapping. The variable type cannot be IGNORE if is_required is True.')
+ if self.variable_type == enums.WorkflowNodeInputType.IGNORE:
+ if self.is_required:
+ raise ValueError('input_mapping', 'Invalid input mapping. The variable type cannot be IGNORE if is_required is True.')
+ if self.variable_source or self.source_prop:
+ raise ValueError('input_mapping', 'variable source and source prop should not be provided for IGNORE input mappings.')
+ if self.variable_type != enums.WorkflowNodeInputType.CONSTANT and self.constant_value:
+ raise ValueError('input_mapping', 'Invalid input mapping. If the variable type is not CONSTANT, constant_value must be empty.')
+ if self.variable_type == enums.WorkflowNodeInputType.CONSTANT:
+ if self.is_required and self.constant_value is None:
+ raise ValueError('input_mapping', 'The constant value mapping should be provided for required CONSTANT input mappings.')
+ if self.variable_source or self.source_prop:
+ raise ValueError('input_mapping', 'variable source and source prop should not be provided for CONSTANT input mappings.')
if isinstance(self.variable_type, str):
self.variable_type = enums.WorkflowNodeInputType(self.variable_type)
@@ -83,7 +97,8 @@ def to_dict(self):
'variable_source': self.variable_source,
'source_prop': self.source_prop or self.name,
'is_required': self.is_required,
- 'description': self.description
+ 'description': self.description,
+ 'constant_value': self.constant_value
}
@classmethod
@@ -97,7 +112,8 @@ def from_dict(cls, mapping: dict):
variable_source=mapping.get('variable_source'),
source_prop=mapping.get('source_prop') or mapping['name'] if mapping.get('variable_source') else None,
is_required=mapping.get('is_required', True),
- description=mapping.get('description')
+ description=mapping.get('description'),
+ constant_value=mapping.get('constant_value')
)
@@ -166,6 +182,25 @@ def from_workflow_node(cls, schema_source: str, schema_prop: str):
instance.runtime_schema = True
return instance
+ @classmethod
+ def from_input_mappings(cls, input_mappings: List[WorkflowNodeInputMapping]):
+ """
+ Creates a json_schema for the input schema of the node from it's input mappings.
+
+ Args:
+ input_mappings (List[WorkflowNodeInputMapping]): The input mappings for the node.
+ """
+ user_input_mappings = [input_mapping for input_mapping in input_mappings if input_mapping.variable_type == enums.WorkflowNodeInputType.USER_INPUT]
+ if len(user_input_mappings) > 0:
+ json_schema = {
+ 'type': 'object',
+ 'required': [input_mapping.name for input_mapping in user_input_mappings if input_mapping.is_required],
+ 'properties': {input_mapping.name: {'title': input_mapping.name, 'type': 'string'} for input_mapping in user_input_mappings}
+ }
+ return cls(json_schema=json_schema)
+ else:
+ return cls(json_schema={})
+
@validate_constructor_arg_types('output_mapping')
@dataclasses.dataclass
@@ -274,7 +309,7 @@ class WorkflowGraphNode(ApiClass):
trigger_config (TriggerConfig): The configuration for a trigger workflow node.
"""
- def __init__(self, name: str, input_mappings: Union[Dict[str, WorkflowNodeInputMapping], List[WorkflowNodeInputMapping]] = None, output_mappings: Union[List[str], Dict[str, str], List[WorkflowNodeOutputMapping]] = None, function: callable = None, function_name: str = None, source_code: str = None, input_schema: Union[List[str], WorkflowNodeInputSchema] = None, output_schema: Union[List[str], WorkflowNodeOutputSchema] = None, template_metadata: dict = None, trigger_config: TriggerConfig = None):
+ def __init__(self, name: str, function: callable = None, input_mappings: Union[Dict[str, WorkflowNodeInputMapping], List[WorkflowNodeInputMapping]] = None, output_mappings: Union[List[str], Dict[str, str], List[WorkflowNodeOutputMapping]] = None, function_name: str = None, source_code: str = None, input_schema: Union[List[str], WorkflowNodeInputSchema] = None, output_schema: Union[List[str], WorkflowNodeOutputSchema] = None, template_metadata: dict = None, trigger_config: TriggerConfig = None):
self.template_metadata = template_metadata
self.trigger_config = trigger_config
if self.template_metadata and not self.template_metadata.get('initialized'):
@@ -314,7 +349,7 @@ def __init__(self, name: str, input_mappings: Union[Dict[str, WorkflowNodeInputM
is_shortform_input_mappings = False
if input_mappings is None:
- input_mappings = []
+ input_mappings = {}
if isinstance(input_mappings, List) and all(isinstance(input, WorkflowNodeInputMapping) for input in input_mappings):
self.input_mappings = input_mappings
input_mapping_args = [input.name for input in input_mappings]
@@ -334,6 +369,22 @@ def __init__(self, name: str, input_mappings: Union[Dict[str, WorkflowNodeInputM
else:
raise ValueError('workflow_graph_node', 'Invalid input mappings. Must be a list of WorkflowNodeInputMapping or a dictionary of input mappings in the form {arg_name: node_name.outputs.prop_name}.')
+ if input_schema is None:
+ self.input_schema = WorkflowNodeInputSchema.from_input_mappings(self.input_mappings)
+ elif isinstance(input_schema, WorkflowNodeInputSchema):
+ self.input_schema = input_schema
+ elif isinstance(input_schema, list) and all(isinstance(field, str) for field in input_schema):
+ self.input_schema = WorkflowNodeInputSchema.from_fields_list(input_schema)
+ else:
+ raise ValueError('workflow_graph_node', 'Invalid input schema. Must be a WorkflowNodeInputSchema or a list of field names.')
+
+ if input_schema is not None and is_shortform_input_mappings:
+ # If user provided input_schema and input_mappings in shortform, then we need to update the input_mappings to have the correct variable_type
+ user_input_fields = JSONSchema.to_fields_list(self.input_schema)
+ for mapping in self.input_mappings:
+ if mapping.name in user_input_fields:
+ mapping.variable_type = enums.WorkflowNodeInputType.USER_INPUT
+
if output_mappings is None:
output_mappings = []
if isinstance(output_mappings, List):
@@ -348,23 +399,9 @@ def __init__(self, name: str, input_mappings: Union[Dict[str, WorkflowNodeInputM
else:
raise ValueError('workflow_graph_node', 'Invalid output mappings. Must be a list of WorkflowNodeOutputMapping or a list of output names or a dictionary of output mappings in the form {output_name: output_type}.')
- if not input_schema:
- self.input_schema = WorkflowNodeInputSchema(json_schema={}, ui_schema={})
- elif isinstance(input_schema, WorkflowNodeInputSchema):
- self.input_schema = input_schema
- elif isinstance(input_schema, list) and all(isinstance(field, str) for field in input_schema):
- self.input_schema = WorkflowNodeInputSchema.from_fields_list(input_schema)
- else:
- raise ValueError('workflow_graph_node', 'Invalid input schema. Must be a WorkflowNodeInputSchema or a list of field names.')
-
- if is_shortform_input_mappings:
- user_input_fields = JSONSchema.to_fields_list(self.input_schema)
- for mapping in self.input_mappings:
- if mapping.name in user_input_fields:
- mapping.variable_type = enums.WorkflowNodeInputType.USER_INPUT
-
- if not output_schema:
- self.output_schema = WorkflowNodeOutputSchema({})
+ if output_schema is None:
+ outputs = [output.name for output in self.output_mappings]
+ self.output_schema = WorkflowNodeOutputSchema.from_fields_list(outputs)
elif isinstance(output_schema, WorkflowNodeOutputSchema):
self.output_schema = output_schema
elif isinstance(output_schema, list) and all(isinstance(field, str) for field in output_schema):
@@ -546,10 +583,19 @@ class WorkflowGraph(ApiClass):
primary_start_node (Union[str, WorkflowGraphNode]): The primary node to start the workflow from.
"""
nodes: List[WorkflowGraphNode] = dataclasses.field(default_factory=list)
- edges: List[WorkflowGraphEdge] = dataclasses.field(default_factory=list)
+ edges: List[Union[WorkflowGraphEdge, Tuple[WorkflowGraphNode, WorkflowGraphNode, dict], Tuple[str, str, dict]]] = dataclasses.field(default_factory=list)
primary_start_node: Union[str, WorkflowGraphNode] = dataclasses.field(default=None)
common_source_code: str = dataclasses.field(default=None)
+ def __post_init__(self):
+ if self.edges:
+ for index, edge in enumerate(self.edges):
+ if isinstance(edge, Tuple):
+ source = edge[0] if isinstance(edge[0], str) else edge[0].name
+ target = edge[1] if isinstance(edge[1], str) else edge[1].name
+ details = edge[2] if isinstance(edge[2], dict) else None
+ self.edges[index] = WorkflowGraphEdge(source=source, target=target, details=details)
+
def to_dict(self):
return {
'nodes': [node.to_dict() for node in self.nodes],
@@ -566,7 +612,7 @@ def from_dict(cls, graph: dict):
node['__return_filter'] = True
nodes = [WorkflowGraphNode.from_dict(node) for node in graph.get('nodes', [])]
edges = [WorkflowGraphEdge.from_dict(edge) for edge in graph.get('edges', [])]
- if graph.get('primary_start_node') is None:
+ if graph.get('primary_start_node') not in [node.name for node in nodes]:
non_primary_nodes = set()
for edge in edges:
non_primary_nodes.add(edge.target)
diff --git a/abacusai/api_class/enums.py b/abacusai/api_class/enums.py
index 17323fb4..8edc546d 100644
--- a/abacusai/api_class/enums.py
+++ b/abacusai/api_class/enums.py
@@ -485,6 +485,8 @@ class LLMName(ApiEnum):
ABACUS_SMAUG3 = 'ABACUS_SMAUG3'
ABACUS_DRACARYS = 'ABACUS_DRACARYS'
QWEN_2_5_32B = 'QWEN_2_5_32B'
+ QWEN_2_5_32B_BASE = 'QWEN_2_5_32B_BASE'
+ QWEN_2_5_72B = 'QWEN_2_5_72B'
QWQ_32B = 'QWQ_32B'
GEMINI_1_5_FLASH = 'GEMINI_1_5_FLASH'
XAI_GROK = 'XAI_GROK'
@@ -554,6 +556,7 @@ class WorkflowNodeInputType(ApiEnum):
USER_INPUT = 'USER_INPUT'
WORKFLOW_VARIABLE = 'WORKFLOW_VARIABLE'
IGNORE = 'IGNORE'
+ CONSTANT = 'CONSTANT'
class WorkflowNodeOutputType(ApiEnum):
diff --git a/abacusai/api_client_utils.py b/abacusai/api_client_utils.py
index e01229fb..df14a5b0 100644
--- a/abacusai/api_client_utils.py
+++ b/abacusai/api_client_utils.py
@@ -617,7 +617,7 @@ def combine_doc_info(group):
cls.TOKENS: [token for page in page_infos for token in page.get(cls.TOKENS) or []],
# default to embedded text
cls.PAGES: [page.get(cls.PAGE_TEXT) or '' for page in page_infos],
- **({cls.DOC_ID: page_infos[0]} if cls.DOC_ID in page_infos[0] else {}),
+ **({cls.DOC_ID: page_infos[0][cls.DOC_ID]} if cls.DOC_ID in page_infos[0] else {}),
}
document_data[cls.EMBEDDED_TEXT] = combine_page_texts(info.get(
cls.EMBEDDED_TEXT) or info.get(cls.PAGE_TEXT) or '' for info in page_infos)
diff --git a/abacusai/client.py b/abacusai/client.py
index 04d5a3c4..b5007b91 100644
--- a/abacusai/client.py
+++ b/abacusai/client.py
@@ -181,6 +181,7 @@
from .web_page_response import WebPageResponse
from .web_search_response import WebSearchResponse
from .webhook import Webhook
+from .workflow_graph_node import WorkflowGraphNode
from .workflow_node_template import WorkflowNodeTemplate
@@ -635,7 +636,7 @@ class BaseApiClient:
client_options (ClientOptions): Optional API client configurations
skip_version_check (bool): If true, will skip checking the server's current API version on initializing the client
"""
- client_version = '1.4.23'
+ client_version = '1.4.24'
def __init__(self, api_key: str = None, server: str = None, client_options: ClientOptions = None, skip_version_check: bool = False, include_tb: bool = False):
self.api_key = api_key
@@ -3743,7 +3744,8 @@ def _endpoint(deployment_id: str, ttl_hash: int):
with self._request(endpoint, 'GET', query_params={'sql': sql}, stream=True, retry_500=True) as response:
if response.status_code == 200:
- return pd.read_csv(response.raw, sep=',')
+ buf = io.BytesIO(response.content)
+ return pd.read_parquet(buf, engine='pyarrow')
else:
error_json = response.json()
error_message = error_json.get('error')
@@ -6004,7 +6006,7 @@ def get_docstore_document_data(self, doc_id: str, document_processing_config: Un
return self._proxy_request('getDocstoreDocumentData', 'POST', query_params={}, body={'docId': doc_id, 'documentProcessingConfig': document_processing_config, 'documentProcessingVersion': document_processing_version, 'returnExtractedPageText': return_extracted_page_text}, parse_type=DocumentData, is_sync=True)
def extract_document_data(self, document: io.TextIOBase = None, doc_id: str = None, document_processing_config: Union[dict, DocumentProcessingConfig] = None, start_page: int = None, end_page: int = None, return_extracted_page_text: bool = False) -> DocumentData:
- """Extracts data from a document.
+ """Extracts data from a document using either OCR (for scanned documents/images) or embedded text extraction (for digital documents like .docx). Configure the extraction method through DocumentProcessingConfig
Args:
document (io.TextIOBase): The document to extract data from. One of document or doc_id must be provided.
@@ -8640,7 +8642,7 @@ def generate_agent_code(self, project_id: str, prompt: str, fast_mode: bool = No
fast_mode (bool): If True, runs a faster but slightly less accurate code generation pipeline"""
return self._call_api('generateAgentCode', 'POST', query_params={}, body={'projectId': project_id, 'prompt': prompt, 'fastMode': fast_mode})
- def evaluate_prompt(self, prompt: str = None, system_message: str = None, llm_name: Union[LLMName, str] = None, max_tokens: int = None, temperature: float = 0.0, messages: list = None, response_type: str = None, json_response_schema: dict = None, stop_sequences: list = None, top_p: float = None) -> LlmResponse:
+ def evaluate_prompt(self, prompt: str = None, system_message: str = None, llm_name: Union[LLMName, str] = None, max_tokens: int = None, temperature: float = 0.0, messages: list = None, response_type: str = None, json_response_schema: dict = None, stop_sequences: List = None, top_p: float = None) -> LlmResponse:
"""Generate response to the prompt using the specified model.
Args:
@@ -8652,7 +8654,7 @@ def evaluate_prompt(self, prompt: str = None, system_message: str = None, llm_na
messages (list): A list of messages to use as conversation history. For completion models like OPENAI_GPT3_5_TEXT and PALM_TEXT this should not be set. A message is a dict with attributes: is_user (bool): Whether the message is from the user. text (str): The message's text. attachments (list): The files attached to the message represented as a list of dictionaries [{"doc_id": }, {"doc_id": }]
response_type (str): Specifies the type of response to request from the LLM. One of 'text' and 'json'. If set to 'json', the LLM will respond with a json formatted string whose schema can be specified `json_response_schema`. Defaults to 'text'
json_response_schema (dict): A dictionary specifying the keys/schema/parameters which LLM should adhere to in its response when `response_type` is 'json'. Each parameter is mapped to a dict with the following info - type (str) (required): Data type of the parameter. description (str) (required): Description of the parameter. is_required (bool) (optional): Whether the parameter is required or not. Example: json_response_schema = {'title': {'type': 'string', 'description': 'Article title', 'is_required': true}, 'body': {'type': 'string', 'description': 'Article body'}}
- stop_sequences (list): Specifies the strings on which the LLM will stop generation.
+ stop_sequences (List): Specifies the strings on which the LLM will stop generation.
top_p (float): The nucleus sampling value used for this run. If set, the model will sample from the smallest set of tokens whose cumulative probability exceeds the probability `top_p`. Default is 1.0. A range of 0.0 - 1.0 is allowed. It is generally recommended to use either temperature sampling or nucleus sampling, but not both.
Returns:
diff --git a/abacusai/code_autocomplete_response.py b/abacusai/code_autocomplete_response.py
index d80ef8e5..e977abc0 100644
--- a/abacusai/code_autocomplete_response.py
+++ b/abacusai/code_autocomplete_response.py
@@ -8,16 +8,18 @@ class CodeAutocompleteResponse(AbstractApiClass):
Args:
client (ApiClient): An authenticated API Client instance
autocompleteResponse (str): autocomplete code
+ showAutocomplete (bool): Whether to show autocomplete in the client
"""
- def __init__(self, client, autocompleteResponse=None):
+ def __init__(self, client, autocompleteResponse=None, showAutocomplete=None):
super().__init__(client, None)
self.autocomplete_response = autocompleteResponse
+ self.show_autocomplete = showAutocomplete
self.deprecated_keys = {}
def __repr__(self):
repr_dict = {f'autocomplete_response': repr(
- self.autocomplete_response)}
+ self.autocomplete_response), f'show_autocomplete': repr(self.show_autocomplete)}
class_name = "CodeAutocompleteResponse"
repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -30,5 +32,6 @@ def to_dict(self):
Returns:
dict: The dict value representation of the class parameters
"""
- resp = {'autocomplete_response': self.autocomplete_response}
+ resp = {'autocomplete_response': self.autocomplete_response,
+ 'show_autocomplete': self.show_autocomplete}
return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
diff --git a/abacusai/workflow_graph_node.py b/abacusai/workflow_graph_node.py
new file mode 100644
index 00000000..b4a392c4
--- /dev/null
+++ b/abacusai/workflow_graph_node.py
@@ -0,0 +1,36 @@
+from .api_class import WorkflowGraphNode
+from .return_class import AbstractApiClass
+
+
+class WorkflowGraphNode(AbstractApiClass):
+ """
+ A workflow graph node in the workflow graph.
+
+ Args:
+ client (ApiClient): An authenticated API Client instance
+ workflowGraphNode (WorkflowGraphNode): The workflow graph node object.
+ """
+
+ def __init__(self, client, workflowGraphNode={}):
+ super().__init__(client, None)
+ self.workflow_graph_node = client._build_class(
+ WorkflowGraphNode, workflowGraphNode)
+ self.deprecated_keys = {}
+
+ def __repr__(self):
+ repr_dict = {f'workflow_graph_node': repr(self.workflow_graph_node)}
+ class_name = "WorkflowGraphNode"
+ repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
+ ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
+ return f"{class_name}({repr_str})"
+
+ def to_dict(self):
+ """
+ Get a dict representation of the parameters in this class
+
+ Returns:
+ dict: The dict value representation of the class parameters
+ """
+ resp = {'workflow_graph_node': self._get_attribute_as_dict(
+ self.workflow_graph_node)}
+ return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
diff --git a/docs/_sources/autoapi/abacusai/api_class/ai_agents/index.rst.txt b/docs/_sources/autoapi/abacusai/api_class/ai_agents/index.rst.txt
index 283816c2..3a5ef898 100644
--- a/docs/_sources/autoapi/abacusai/api_class/ai_agents/index.rst.txt
+++ b/docs/_sources/autoapi/abacusai/api_class/ai_agents/index.rst.txt
@@ -107,6 +107,8 @@ Module Contents
:type is_required: bool
:param description: The description of this input.
:type description: str
+ :param constant_value: The constant value of this input if variable type is CONSTANT. Only applicable for template nodes.
+ :type constant_value: str
.. py:attribute:: name
@@ -141,6 +143,12 @@ Module Contents
+ .. py:attribute:: constant_value
+ :type: str
+ :value: None
+
+
+
.. py:method:: __post_init__()
@@ -224,6 +232,17 @@ Module Contents
+ .. py:method:: from_input_mappings(input_mappings)
+ :classmethod:
+
+
+ Creates a json_schema for the input schema of the node from it's input mappings.
+
+ :param input_mappings: The input mappings for the node.
+ :type input_mappings: List[WorkflowNodeInputMapping]
+
+
+
.. py:class:: WorkflowNodeOutputMapping
Bases: :py:obj:`abacusai.api_class.abstract.ApiClass`
@@ -327,7 +346,7 @@ Module Contents
-.. py:class:: WorkflowGraphNode(name, input_mappings = None, output_mappings = None, function = None, function_name = None, source_code = None, input_schema = None, output_schema = None, template_metadata = None, trigger_config = None)
+.. py:class:: WorkflowGraphNode(name, function = None, input_mappings = None, output_mappings = None, function_name = None, source_code = None, input_schema = None, output_schema = None, template_metadata = None, trigger_config = None)
Bases: :py:obj:`abacusai.api_class.abstract.ApiClass`
@@ -461,7 +480,7 @@ Module Contents
.. py:attribute:: edges
- :type: List[WorkflowGraphEdge]
+ :type: List[Union[WorkflowGraphEdge, Tuple[WorkflowGraphNode, WorkflowGraphNode, dict], Tuple[str, str, dict]]]
:value: []
@@ -478,6 +497,9 @@ Module Contents
+ .. py:method:: __post_init__()
+
+
.. py:method:: to_dict()
Standardizes converting an ApiClass to dictionary.
diff --git a/docs/_sources/autoapi/abacusai/api_class/enums/index.rst.txt b/docs/_sources/autoapi/abacusai/api_class/enums/index.rst.txt
index 2af83a12..9c84da26 100644
--- a/docs/_sources/autoapi/abacusai/api_class/enums/index.rst.txt
+++ b/docs/_sources/autoapi/abacusai/api_class/enums/index.rst.txt
@@ -2124,6 +2124,16 @@ Module Contents
+ .. py:attribute:: QWEN_2_5_32B_BASE
+ :value: 'QWEN_2_5_32B_BASE'
+
+
+
+ .. py:attribute:: QWEN_2_5_72B
+ :value: 'QWEN_2_5_72B'
+
+
+
.. py:attribute:: QWQ_32B
:value: 'QWQ_32B'
@@ -2419,6 +2429,11 @@ Module Contents
+ .. py:attribute:: CONSTANT
+ :value: 'CONSTANT'
+
+
+
.. py:class:: WorkflowNodeOutputType
Bases: :py:obj:`ApiEnum`
diff --git a/docs/_sources/autoapi/abacusai/api_class/index.rst.txt b/docs/_sources/autoapi/abacusai/api_class/index.rst.txt
index 2c089342..c7735101 100644
--- a/docs/_sources/autoapi/abacusai/api_class/index.rst.txt
+++ b/docs/_sources/autoapi/abacusai/api_class/index.rst.txt
@@ -442,6 +442,8 @@ Package Contents
:type is_required: bool
:param description: The description of this input.
:type description: str
+ :param constant_value: The constant value of this input if variable type is CONSTANT. Only applicable for template nodes.
+ :type constant_value: str
.. py:attribute:: name
@@ -476,6 +478,12 @@ Package Contents
+ .. py:attribute:: constant_value
+ :type: str
+ :value: None
+
+
+
.. py:method:: __post_init__()
@@ -559,6 +567,17 @@ Package Contents
+ .. py:method:: from_input_mappings(input_mappings)
+ :classmethod:
+
+
+ Creates a json_schema for the input schema of the node from it's input mappings.
+
+ :param input_mappings: The input mappings for the node.
+ :type input_mappings: List[WorkflowNodeInputMapping]
+
+
+
.. py:class:: WorkflowNodeOutputMapping
Bases: :py:obj:`abacusai.api_class.abstract.ApiClass`
@@ -662,7 +681,7 @@ Package Contents
-.. py:class:: WorkflowGraphNode(name, input_mappings = None, output_mappings = None, function = None, function_name = None, source_code = None, input_schema = None, output_schema = None, template_metadata = None, trigger_config = None)
+.. py:class:: WorkflowGraphNode(name, function = None, input_mappings = None, output_mappings = None, function_name = None, source_code = None, input_schema = None, output_schema = None, template_metadata = None, trigger_config = None)
Bases: :py:obj:`abacusai.api_class.abstract.ApiClass`
@@ -796,7 +815,7 @@ Package Contents
.. py:attribute:: edges
- :type: List[WorkflowGraphEdge]
+ :type: List[Union[WorkflowGraphEdge, Tuple[WorkflowGraphNode, WorkflowGraphNode, dict], Tuple[str, str, dict]]]
:value: []
@@ -813,6 +832,9 @@ Package Contents
+ .. py:method:: __post_init__()
+
+
.. py:method:: to_dict()
Standardizes converting an ApiClass to dictionary.
@@ -5498,6 +5520,16 @@ Package Contents
+ .. py:attribute:: QWEN_2_5_32B_BASE
+ :value: 'QWEN_2_5_32B_BASE'
+
+
+
+ .. py:attribute:: QWEN_2_5_72B
+ :value: 'QWEN_2_5_72B'
+
+
+
.. py:attribute:: QWQ_32B
:value: 'QWQ_32B'
@@ -5793,6 +5825,11 @@ Package Contents
+ .. py:attribute:: CONSTANT
+ :value: 'CONSTANT'
+
+
+
.. py:class:: WorkflowNodeOutputType
Bases: :py:obj:`ApiEnum`
diff --git a/docs/_sources/autoapi/abacusai/client/index.rst.txt b/docs/_sources/autoapi/abacusai/client/index.rst.txt
index bf513d93..3194b7ff 100644
--- a/docs/_sources/autoapi/abacusai/client/index.rst.txt
+++ b/docs/_sources/autoapi/abacusai/client/index.rst.txt
@@ -569,7 +569,7 @@ Module Contents
.. py:attribute:: client_version
- :value: '1.4.23'
+ :value: '1.4.24'
@@ -6356,7 +6356,7 @@ Module Contents
.. py:method:: extract_document_data(document = None, doc_id = None, document_processing_config = None, start_page = None, end_page = None, return_extracted_page_text = False)
- Extracts data from a document.
+ Extracts data from a document using either OCR (for scanned documents/images) or embedded text extraction (for digital documents like .docx). Configure the extraction method through DocumentProcessingConfig
:param document: The document to extract data from. One of document or doc_id must be provided.
:type document: io.TextIOBase
@@ -10008,7 +10008,7 @@ Module Contents
:param json_response_schema: A dictionary specifying the keys/schema/parameters which LLM should adhere to in its response when `response_type` is 'json'. Each parameter is mapped to a dict with the following info - type (str) (required): Data type of the parameter. description (str) (required): Description of the parameter. is_required (bool) (optional): Whether the parameter is required or not. Example: json_response_schema = {'title': {'type': 'string', 'description': 'Article title', 'is_required': true}, 'body': {'type': 'string', 'description': 'Article body'}}
:type json_response_schema: dict
:param stop_sequences: Specifies the strings on which the LLM will stop generation.
- :type stop_sequences: list
+ :type stop_sequences: List
:param top_p: The nucleus sampling value used for this run. If set, the model will sample from the smallest set of tokens whose cumulative probability exceeds the probability `top_p`. Default is 1.0. A range of 0.0 - 1.0 is allowed. It is generally recommended to use either temperature sampling or nucleus sampling, but not both.
:type top_p: float
diff --git a/docs/_sources/autoapi/abacusai/code_autocomplete_response/index.rst.txt b/docs/_sources/autoapi/abacusai/code_autocomplete_response/index.rst.txt
index 5ef582c1..701e8280 100644
--- a/docs/_sources/autoapi/abacusai/code_autocomplete_response/index.rst.txt
+++ b/docs/_sources/autoapi/abacusai/code_autocomplete_response/index.rst.txt
@@ -15,7 +15,7 @@ Classes
Module Contents
---------------
-.. py:class:: CodeAutocompleteResponse(client, autocompleteResponse=None)
+.. py:class:: CodeAutocompleteResponse(client, autocompleteResponse=None, showAutocomplete=None)
Bases: :py:obj:`abacusai.return_class.AbstractApiClass`
@@ -26,6 +26,8 @@ Module Contents
:type client: ApiClient
:param autocompleteResponse: autocomplete code
:type autocompleteResponse: str
+ :param showAutocomplete: Whether to show autocomplete in the client
+ :type showAutocomplete: bool
.. py:attribute:: autocomplete_response
@@ -33,6 +35,11 @@ Module Contents
+ .. py:attribute:: show_autocomplete
+ :value: None
+
+
+
.. py:attribute:: deprecated_keys
diff --git a/docs/_sources/autoapi/abacusai/index.rst.txt b/docs/_sources/autoapi/abacusai/index.rst.txt
index 55444127..2f8639af 100644
--- a/docs/_sources/autoapi/abacusai/index.rst.txt
+++ b/docs/_sources/autoapi/abacusai/index.rst.txt
@@ -240,6 +240,7 @@ Submodules
/autoapi/abacusai/web_search_response/index
/autoapi/abacusai/web_search_result/index
/autoapi/abacusai/webhook/index
+ /autoapi/abacusai/workflow_graph_node/index
/autoapi/abacusai/workflow_node_template/index
@@ -707,6 +708,7 @@ Classes
abacusai.WebSearchResponse
abacusai.WebSearchResult
abacusai.Webhook
+ abacusai.WorkflowGraphNode
abacusai.WorkflowNodeTemplate
@@ -2073,6 +2075,8 @@ Package Contents
:type is_required: bool
:param description: The description of this input.
:type description: str
+ :param constant_value: The constant value of this input if variable type is CONSTANT. Only applicable for template nodes.
+ :type constant_value: str
.. py:attribute:: name
@@ -2107,6 +2111,12 @@ Package Contents
+ .. py:attribute:: constant_value
+ :type: str
+ :value: None
+
+
+
.. py:method:: __post_init__()
@@ -2190,6 +2200,17 @@ Package Contents
+ .. py:method:: from_input_mappings(input_mappings)
+ :classmethod:
+
+
+ Creates a json_schema for the input schema of the node from it's input mappings.
+
+ :param input_mappings: The input mappings for the node.
+ :type input_mappings: List[WorkflowNodeInputMapping]
+
+
+
.. py:class:: WorkflowNodeOutputMapping
Bases: :py:obj:`abacusai.api_class.abstract.ApiClass`
@@ -2293,7 +2314,7 @@ Package Contents
-.. py:class:: WorkflowGraphNode(name, input_mappings = None, output_mappings = None, function = None, function_name = None, source_code = None, input_schema = None, output_schema = None, template_metadata = None, trigger_config = None)
+.. py:class:: WorkflowGraphNode(name, function = None, input_mappings = None, output_mappings = None, function_name = None, source_code = None, input_schema = None, output_schema = None, template_metadata = None, trigger_config = None)
Bases: :py:obj:`abacusai.api_class.abstract.ApiClass`
@@ -2427,7 +2448,7 @@ Package Contents
.. py:attribute:: edges
- :type: List[WorkflowGraphEdge]
+ :type: List[Union[WorkflowGraphEdge, Tuple[WorkflowGraphNode, WorkflowGraphNode, dict], Tuple[str, str, dict]]]
:value: []
@@ -2444,6 +2465,9 @@ Package Contents
+ .. py:method:: __post_init__()
+
+
.. py:method:: to_dict()
Standardizes converting an ApiClass to dictionary.
@@ -6562,6 +6586,16 @@ Package Contents
+ .. py:attribute:: QWEN_2_5_32B_BASE
+ :value: 'QWEN_2_5_32B_BASE'
+
+
+
+ .. py:attribute:: QWEN_2_5_72B
+ :value: 'QWEN_2_5_72B'
+
+
+
.. py:attribute:: QWQ_32B
:value: 'QWQ_32B'
@@ -6857,6 +6891,11 @@ Package Contents
+ .. py:attribute:: CONSTANT
+ :value: 'CONSTANT'
+
+
+
.. py:class:: WorkflowNodeOutputType
Bases: :py:obj:`ApiEnum`
@@ -16464,7 +16503,7 @@ Package Contents
.. py:method:: extract_document_data(document = None, doc_id = None, document_processing_config = None, start_page = None, end_page = None, return_extracted_page_text = False)
- Extracts data from a document.
+ Extracts data from a document using either OCR (for scanned documents/images) or embedded text extraction (for digital documents like .docx). Configure the extraction method through DocumentProcessingConfig
:param document: The document to extract data from. One of document or doc_id must be provided.
:type document: io.TextIOBase
@@ -20116,7 +20155,7 @@ Package Contents
:param json_response_schema: A dictionary specifying the keys/schema/parameters which LLM should adhere to in its response when `response_type` is 'json'. Each parameter is mapped to a dict with the following info - type (str) (required): Data type of the parameter. description (str) (required): Description of the parameter. is_required (bool) (optional): Whether the parameter is required or not. Example: json_response_schema = {'title': {'type': 'string', 'description': 'Article title', 'is_required': true}, 'body': {'type': 'string', 'description': 'Article body'}}
:type json_response_schema: dict
:param stop_sequences: Specifies the strings on which the LLM will stop generation.
- :type stop_sequences: list
+ :type stop_sequences: List
:param top_p: The nucleus sampling value used for this run. If set, the model will sample from the smallest set of tokens whose cumulative probability exceeds the probability `top_p`. Default is 1.0. A range of 0.0 - 1.0 is allowed. It is generally recommended to use either temperature sampling or nucleus sampling, but not both.
:type top_p: float
@@ -22847,7 +22886,7 @@ Package Contents
.. py:data:: _request_context
-.. py:class:: CodeAutocompleteResponse(client, autocompleteResponse=None)
+.. py:class:: CodeAutocompleteResponse(client, autocompleteResponse=None, showAutocomplete=None)
Bases: :py:obj:`abacusai.return_class.AbstractApiClass`
@@ -22858,6 +22897,8 @@ Package Contents
:type client: ApiClient
:param autocompleteResponse: autocomplete code
:type autocompleteResponse: str
+ :param showAutocomplete: Whether to show autocomplete in the client
+ :type showAutocomplete: bool
.. py:attribute:: autocomplete_response
@@ -22865,6 +22906,11 @@ Package Contents
+ .. py:attribute:: show_autocomplete
+ :value: None
+
+
+
.. py:attribute:: deprecated_keys
@@ -44507,6 +44553,37 @@ Package Contents
+.. py:class:: WorkflowGraphNode(client, workflowGraphNode={})
+
+ Bases: :py:obj:`abacusai.return_class.AbstractApiClass`
+
+
+ A workflow graph node in the workflow graph.
+
+ :param client: An authenticated API Client instance
+ :type client: ApiClient
+ :param workflowGraphNode: The workflow graph node object.
+ :type workflowGraphNode: WorkflowGraphNode
+
+
+ .. py:attribute:: workflow_graph_node
+
+
+ .. py:attribute:: deprecated_keys
+
+
+ .. py:method:: __repr__()
+
+
+ .. py:method:: to_dict()
+
+ Get a dict representation of the parameters in this class
+
+ :returns: The dict value representation of the class parameters
+ :rtype: dict
+
+
+
.. py:class:: WorkflowNodeTemplate(client, workflowNodeTemplateId=None, name=None, functionName=None, sourceCode=None, description=None, packageRequirements=None, tags=None, additionalConfigs=None, inputs={}, outputs={}, templateConfigs={})
Bases: :py:obj:`abacusai.return_class.AbstractApiClass`
@@ -44605,6 +44682,6 @@ Package Contents
.. py:data:: __version__
- :value: '1.4.23'
+ :value: '1.4.24'
diff --git a/docs/_sources/autoapi/abacusai/workflow_graph_node/index.rst.txt b/docs/_sources/autoapi/abacusai/workflow_graph_node/index.rst.txt
new file mode 100644
index 00000000..eb1e447d
--- /dev/null
+++ b/docs/_sources/autoapi/abacusai/workflow_graph_node/index.rst.txt
@@ -0,0 +1,48 @@
+abacusai.workflow_graph_node
+============================
+
+.. py:module:: abacusai.workflow_graph_node
+
+
+Classes
+-------
+
+.. autoapisummary::
+
+ abacusai.workflow_graph_node.WorkflowGraphNode
+
+
+Module Contents
+---------------
+
+.. py:class:: WorkflowGraphNode(client, workflowGraphNode={})
+
+ Bases: :py:obj:`abacusai.return_class.AbstractApiClass`
+
+
+ A workflow graph node in the workflow graph.
+
+ :param client: An authenticated API Client instance
+ :type client: ApiClient
+ :param workflowGraphNode: The workflow graph node object.
+ :type workflowGraphNode: WorkflowGraphNode
+
+
+ .. py:attribute:: workflow_graph_node
+
+
+ .. py:attribute:: deprecated_keys
+
+
+ .. py:method:: __repr__()
+
+
+ .. py:method:: to_dict()
+
+ Get a dict representation of the parameters in this class
+
+ :returns: The dict value representation of the class parameters
+ :rtype: dict
+
+
+
diff --git a/docs/autoapi/abacusai/abacus_api/index.html b/docs/autoapi/abacusai/abacus_api/index.html
index 7c8b268a..7fc7d081 100644
--- a/docs/autoapi/abacusai/abacus_api/index.html
+++ b/docs/autoapi/abacusai/abacus_api/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/address/index.html b/docs/autoapi/abacusai/address/index.html
index d3549fa6..61ac991b 100644
--- a/docs/autoapi/abacusai/address/index.html
+++ b/docs/autoapi/abacusai/address/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/agent/index.html b/docs/autoapi/abacusai/agent/index.html
index b84c6d90..80bca48f 100644
--- a/docs/autoapi/abacusai/agent/index.html
+++ b/docs/autoapi/abacusai/agent/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/agent_chat_message/index.html b/docs/autoapi/abacusai/agent_chat_message/index.html
index 8709bd85..1bc65e92 100644
--- a/docs/autoapi/abacusai/agent_chat_message/index.html
+++ b/docs/autoapi/abacusai/agent_chat_message/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/agent_conversation/index.html b/docs/autoapi/abacusai/agent_conversation/index.html
index 0c7d9f0d..0f484b55 100644
--- a/docs/autoapi/abacusai/agent_conversation/index.html
+++ b/docs/autoapi/abacusai/agent_conversation/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/agent_data_document_info/index.html b/docs/autoapi/abacusai/agent_data_document_info/index.html
index 157e9845..149ad97d 100644
--- a/docs/autoapi/abacusai/agent_data_document_info/index.html
+++ b/docs/autoapi/abacusai/agent_data_document_info/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/agent_data_execution_result/index.html b/docs/autoapi/abacusai/agent_data_execution_result/index.html
index a27be13a..e16a2b7f 100644
--- a/docs/autoapi/abacusai/agent_data_execution_result/index.html
+++ b/docs/autoapi/abacusai/agent_data_execution_result/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/agent_version/index.html b/docs/autoapi/abacusai/agent_version/index.html
index d6a0b3ed..78b0bc3d 100644
--- a/docs/autoapi/abacusai/agent_version/index.html
+++ b/docs/autoapi/abacusai/agent_version/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/ai_building_task/index.html b/docs/autoapi/abacusai/ai_building_task/index.html
index 1254f0e6..b1ef0ec3 100644
--- a/docs/autoapi/abacusai/ai_building_task/index.html
+++ b/docs/autoapi/abacusai/ai_building_task/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/algorithm/index.html b/docs/autoapi/abacusai/algorithm/index.html
index dba0f577..35cceb39 100644
--- a/docs/autoapi/abacusai/algorithm/index.html
+++ b/docs/autoapi/abacusai/algorithm/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/annotation/index.html b/docs/autoapi/abacusai/annotation/index.html
index c988bf8f..788375ee 100644
--- a/docs/autoapi/abacusai/annotation/index.html
+++ b/docs/autoapi/abacusai/annotation/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/annotation_config/index.html b/docs/autoapi/abacusai/annotation_config/index.html
index 62efcd53..97d1c6f2 100644
--- a/docs/autoapi/abacusai/annotation_config/index.html
+++ b/docs/autoapi/abacusai/annotation_config/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/annotation_document/index.html b/docs/autoapi/abacusai/annotation_document/index.html
index a0d6761b..32db28be 100644
--- a/docs/autoapi/abacusai/annotation_document/index.html
+++ b/docs/autoapi/abacusai/annotation_document/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/annotation_entry/index.html b/docs/autoapi/abacusai/annotation_entry/index.html
index ecc60291..ece99421 100644
--- a/docs/autoapi/abacusai/annotation_entry/index.html
+++ b/docs/autoapi/abacusai/annotation_entry/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/annotations_status/index.html b/docs/autoapi/abacusai/annotations_status/index.html
index fe97914b..520cbed4 100644
--- a/docs/autoapi/abacusai/annotations_status/index.html
+++ b/docs/autoapi/abacusai/annotations_status/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/abstract/index.html b/docs/autoapi/abacusai/api_class/abstract/index.html
index 5ed2f5ea..fc1f1180 100644
--- a/docs/autoapi/abacusai/api_class/abstract/index.html
+++ b/docs/autoapi/abacusai/api_class/abstract/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/ai_agents/index.html b/docs/autoapi/abacusai/api_class/ai_agents/index.html
index adaed07b..570859d7 100644
--- a/docs/autoapi/abacusai/api_class/ai_agents/index.html
+++ b/docs/autoapi/abacusai/api_class/ai_agents/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
@@ -467,6 +468,7 @@ Module Contents) – Indicates whether the input is required. Defaults to True.
description (str) – The description of this input.
+constant_value (str) – The constant value of this input if variable type is CONSTANT. Only applicable for template nodes.
@@ -500,6 +502,11 @@ Module Contents
+
+-
+constant_value: str = None
+
+
-
__post_init__()
@@ -596,6 +603,17 @@ Module Contents
+
@@ -724,7 +742,7 @@ Module Contents
Bases: abacusai.api_class.abstract.ApiClass
Represents a node in an Agent workflow graph.
@@ -913,7 +931,7 @@ Module Contents
@@ -926,6 +944,11 @@ Module Contents
+
+-
+__post_init__()
+
+
-
to_dict()
diff --git a/docs/autoapi/abacusai/api_class/ai_chat/index.html b/docs/autoapi/abacusai/api_class/ai_chat/index.html
index 1b9a0258..f1d620e8 100644
--- a/docs/autoapi/abacusai/api_class/ai_chat/index.html
+++ b/docs/autoapi/abacusai/api_class/ai_chat/index.html
@@ -283,6 +283,7 @@
- abacusai.web_search_response
- abacusai.web_search_result
- abacusai.webhook
+- abacusai.workflow_graph_node
- abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/batch_prediction/index.html b/docs/autoapi/abacusai/api_class/batch_prediction/index.html
index d08fd2fc..cfd6266d 100644
--- a/docs/autoapi/abacusai/api_class/batch_prediction/index.html
+++ b/docs/autoapi/abacusai/api_class/batch_prediction/index.html
@@ -283,6 +283,7 @@
- abacusai.web_search_response
- abacusai.web_search_result
- abacusai.webhook
+- abacusai.workflow_graph_node
- abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/blob_input/index.html b/docs/autoapi/abacusai/api_class/blob_input/index.html
index a5ab8a53..ad78e136 100644
--- a/docs/autoapi/abacusai/api_class/blob_input/index.html
+++ b/docs/autoapi/abacusai/api_class/blob_input/index.html
@@ -283,6 +283,7 @@
- abacusai.web_search_response
- abacusai.web_search_result
- abacusai.webhook
+- abacusai.workflow_graph_node
- abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/connectors/index.html b/docs/autoapi/abacusai/api_class/connectors/index.html
index 65b62f23..7936dd39 100644
--- a/docs/autoapi/abacusai/api_class/connectors/index.html
+++ b/docs/autoapi/abacusai/api_class/connectors/index.html
@@ -283,6 +283,7 @@
- abacusai.web_search_response
- abacusai.web_search_result
- abacusai.webhook
+- abacusai.workflow_graph_node
- abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/dataset/index.html b/docs/autoapi/abacusai/api_class/dataset/index.html
index 99f07bef..abd8a640 100644
--- a/docs/autoapi/abacusai/api_class/dataset/index.html
+++ b/docs/autoapi/abacusai/api_class/dataset/index.html
@@ -283,6 +283,7 @@
- abacusai.web_search_response
- abacusai.web_search_result
- abacusai.webhook
+- abacusai.workflow_graph_node
- abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/dataset_application_connector/index.html b/docs/autoapi/abacusai/api_class/dataset_application_connector/index.html
index 519957cc..47f68470 100644
--- a/docs/autoapi/abacusai/api_class/dataset_application_connector/index.html
+++ b/docs/autoapi/abacusai/api_class/dataset_application_connector/index.html
@@ -283,6 +283,7 @@
- abacusai.web_search_response
- abacusai.web_search_result
- abacusai.webhook
+- abacusai.workflow_graph_node
- abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/deployment/index.html b/docs/autoapi/abacusai/api_class/deployment/index.html
index 8e7ebe80..88bb3c2c 100644
--- a/docs/autoapi/abacusai/api_class/deployment/index.html
+++ b/docs/autoapi/abacusai/api_class/deployment/index.html
@@ -283,6 +283,7 @@
- abacusai.web_search_response
- abacusai.web_search_result
- abacusai.webhook
+- abacusai.workflow_graph_node
- abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/document_retriever/index.html b/docs/autoapi/abacusai/api_class/document_retriever/index.html
index a45b8881..cdaa3637 100644
--- a/docs/autoapi/abacusai/api_class/document_retriever/index.html
+++ b/docs/autoapi/abacusai/api_class/document_retriever/index.html
@@ -283,6 +283,7 @@
- abacusai.web_search_response
- abacusai.web_search_result
- abacusai.webhook
+- abacusai.workflow_graph_node
- abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/enums/index.html b/docs/autoapi/abacusai/api_class/enums/index.html
index 17d76aa8..3b00d538 100644
--- a/docs/autoapi/abacusai/api_class/enums/index.html
+++ b/docs/autoapi/abacusai/api_class/enums/index.html
@@ -283,6 +283,7 @@
- abacusai.web_search_response
- abacusai.web_search_result
- abacusai.webhook
+- abacusai.workflow_graph_node
- abacusai.workflow_node_template
@@ -2495,6 +2496,16 @@ Module Contents
+
+-
+QWEN_2_5_32B_BASE = 'QWEN_2_5_32B_BASE'
+
+
+
+-
+QWEN_2_5_72B = 'QWEN_2_5_72B'
+
+
-
QWQ_32B = 'QWQ_32B'
@@ -2772,6 +2783,11 @@ Module Contents
+
+-
+CONSTANT = 'CONSTANT'
+
+
diff --git a/docs/autoapi/abacusai/api_class/feature_group/index.html b/docs/autoapi/abacusai/api_class/feature_group/index.html
index 2ddc416a..5888e88f 100644
--- a/docs/autoapi/abacusai/api_class/feature_group/index.html
+++ b/docs/autoapi/abacusai/api_class/feature_group/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/index.html b/docs/autoapi/abacusai/api_class/index.html
index b17e4ae4..a7006cc4 100644
--- a/docs/autoapi/abacusai/api_class/index.html
+++ b/docs/autoapi/abacusai/api_class/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
@@ -1331,6 +1332,7 @@ Package Contents) – Indicates whether the input is required. Defaults to True.
description (str) – The description of this input.
+constant_value (str) – The constant value of this input if variable type is CONSTANT. Only applicable for template nodes.
@@ -1364,6 +1366,11 @@ Package Contents
+
+-
+constant_value: str = None
+
+
-
__post_init__()
@@ -1460,6 +1467,17 @@ Package Contents
+
@@ -1588,7 +1606,7 @@ Package Contents
Bases: abacusai.api_class.abstract.ApiClass
Represents a node in an Agent workflow graph.
@@ -1777,7 +1795,7 @@ Package Contents
@@ -1790,6 +1808,11 @@ Package Contents
+
+-
+__post_init__()
+
+
-
to_dict()
@@ -6720,6 +6743,16 @@ Package Contents
+
+-
+QWEN_2_5_32B_BASE = 'QWEN_2_5_32B_BASE'
+
+
+
+-
+QWEN_2_5_72B = 'QWEN_2_5_72B'
+
+
-
QWQ_32B = 'QWQ_32B'
@@ -6997,6 +7030,11 @@ Package Contents
+
+-
+CONSTANT = 'CONSTANT'
+
+
diff --git a/docs/autoapi/abacusai/api_class/model/index.html b/docs/autoapi/abacusai/api_class/model/index.html
index aa8cfa7f..38c94672 100644
--- a/docs/autoapi/abacusai/api_class/model/index.html
+++ b/docs/autoapi/abacusai/api_class/model/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/monitor/index.html b/docs/autoapi/abacusai/api_class/monitor/index.html
index 9b1f02fe..d0ffd847 100644
--- a/docs/autoapi/abacusai/api_class/monitor/index.html
+++ b/docs/autoapi/abacusai/api_class/monitor/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/monitor_alert/index.html b/docs/autoapi/abacusai/api_class/monitor_alert/index.html
index e5077e55..956d8025 100644
--- a/docs/autoapi/abacusai/api_class/monitor_alert/index.html
+++ b/docs/autoapi/abacusai/api_class/monitor_alert/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/project/index.html b/docs/autoapi/abacusai/api_class/project/index.html
index dbc20123..6d7e0ea2 100644
--- a/docs/autoapi/abacusai/api_class/project/index.html
+++ b/docs/autoapi/abacusai/api_class/project/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/python_functions/index.html b/docs/autoapi/abacusai/api_class/python_functions/index.html
index f7d0973a..09c90ab9 100644
--- a/docs/autoapi/abacusai/api_class/python_functions/index.html
+++ b/docs/autoapi/abacusai/api_class/python_functions/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/refresh/index.html b/docs/autoapi/abacusai/api_class/refresh/index.html
index ab49528a..2a55269e 100644
--- a/docs/autoapi/abacusai/api_class/refresh/index.html
+++ b/docs/autoapi/abacusai/api_class/refresh/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_class/segments/index.html b/docs/autoapi/abacusai/api_class/segments/index.html
index 500cfd63..e6d44bd4 100644
--- a/docs/autoapi/abacusai/api_class/segments/index.html
+++ b/docs/autoapi/abacusai/api_class/segments/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_client_utils/index.html b/docs/autoapi/abacusai/api_client_utils/index.html
index c07f5bb6..2127d61f 100644
--- a/docs/autoapi/abacusai/api_client_utils/index.html
+++ b/docs/autoapi/abacusai/api_client_utils/index.html
@@ -282,6 +282,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_endpoint/index.html b/docs/autoapi/abacusai/api_endpoint/index.html
index a10f8d3c..f9f8c3f5 100644
--- a/docs/autoapi/abacusai/api_endpoint/index.html
+++ b/docs/autoapi/abacusai/api_endpoint/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/api_key/index.html b/docs/autoapi/abacusai/api_key/index.html
index b70128b5..9da70495 100644
--- a/docs/autoapi/abacusai/api_key/index.html
+++ b/docs/autoapi/abacusai/api_key/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/app_user_group/index.html b/docs/autoapi/abacusai/app_user_group/index.html
index 325d7e8a..a2f2c708 100644
--- a/docs/autoapi/abacusai/app_user_group/index.html
+++ b/docs/autoapi/abacusai/app_user_group/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/app_user_group_sign_in_token/index.html b/docs/autoapi/abacusai/app_user_group_sign_in_token/index.html
index 39a22e40..8c3b3196 100644
--- a/docs/autoapi/abacusai/app_user_group_sign_in_token/index.html
+++ b/docs/autoapi/abacusai/app_user_group_sign_in_token/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/application_connector/index.html b/docs/autoapi/abacusai/application_connector/index.html
index fbef0911..4805db79 100644
--- a/docs/autoapi/abacusai/application_connector/index.html
+++ b/docs/autoapi/abacusai/application_connector/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/batch_prediction/index.html b/docs/autoapi/abacusai/batch_prediction/index.html
index b64c81bd..cc3c7ce3 100644
--- a/docs/autoapi/abacusai/batch_prediction/index.html
+++ b/docs/autoapi/abacusai/batch_prediction/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/batch_prediction_version/index.html b/docs/autoapi/abacusai/batch_prediction_version/index.html
index 0aa219d2..450c03d3 100644
--- a/docs/autoapi/abacusai/batch_prediction_version/index.html
+++ b/docs/autoapi/abacusai/batch_prediction_version/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/batch_prediction_version_logs/index.html b/docs/autoapi/abacusai/batch_prediction_version_logs/index.html
index f127b015..3bddb9e4 100644
--- a/docs/autoapi/abacusai/batch_prediction_version_logs/index.html
+++ b/docs/autoapi/abacusai/batch_prediction_version_logs/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/bot_info/index.html b/docs/autoapi/abacusai/bot_info/index.html
index c33ffbde..45214944 100644
--- a/docs/autoapi/abacusai/bot_info/index.html
+++ b/docs/autoapi/abacusai/bot_info/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/categorical_range_violation/index.html b/docs/autoapi/abacusai/categorical_range_violation/index.html
index 07641cfa..40560030 100644
--- a/docs/autoapi/abacusai/categorical_range_violation/index.html
+++ b/docs/autoapi/abacusai/categorical_range_violation/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/chat_message/index.html b/docs/autoapi/abacusai/chat_message/index.html
index 3d5c1bbf..50abd06f 100644
--- a/docs/autoapi/abacusai/chat_message/index.html
+++ b/docs/autoapi/abacusai/chat_message/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/chat_session/index.html b/docs/autoapi/abacusai/chat_session/index.html
index 7b26443c..24e444db 100644
--- a/docs/autoapi/abacusai/chat_session/index.html
+++ b/docs/autoapi/abacusai/chat_session/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/chatllm_computer/index.html b/docs/autoapi/abacusai/chatllm_computer/index.html
index bc315fa5..e59bcab6 100644
--- a/docs/autoapi/abacusai/chatllm_computer/index.html
+++ b/docs/autoapi/abacusai/chatllm_computer/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/chatllm_referral_invite/index.html b/docs/autoapi/abacusai/chatllm_referral_invite/index.html
index 5978b638..8226fdb1 100644
--- a/docs/autoapi/abacusai/chatllm_referral_invite/index.html
+++ b/docs/autoapi/abacusai/chatllm_referral_invite/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/client/index.html b/docs/autoapi/abacusai/client/index.html
index 303c812c..30bcbb31 100644
--- a/docs/autoapi/abacusai/client/index.html
+++ b/docs/autoapi/abacusai/client/index.html
@@ -283,6 +283,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
@@ -1015,7 +1016,7 @@ Module Contents
@@ -8357,7 +8358,7 @@ Module Contents
+
+-
+show_autocomplete = None
+
+
-
deprecated_keys
diff --git a/docs/autoapi/abacusai/code_bot/index.html b/docs/autoapi/abacusai/code_bot/index.html
index 739b0416..0621cf35 100644
--- a/docs/autoapi/abacusai/code_bot/index.html
+++ b/docs/autoapi/abacusai/code_bot/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/code_edit_response/index.html b/docs/autoapi/abacusai/code_edit_response/index.html
index 98cc2ea7..657752bb 100644
--- a/docs/autoapi/abacusai/code_edit_response/index.html
+++ b/docs/autoapi/abacusai/code_edit_response/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/code_source/index.html b/docs/autoapi/abacusai/code_source/index.html
index 4788e817..65ee5941 100644
--- a/docs/autoapi/abacusai/code_source/index.html
+++ b/docs/autoapi/abacusai/code_source/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/compute_point_info/index.html b/docs/autoapi/abacusai/compute_point_info/index.html
index e9a93f4d..6538193e 100644
--- a/docs/autoapi/abacusai/compute_point_info/index.html
+++ b/docs/autoapi/abacusai/compute_point_info/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/concatenation_config/index.html b/docs/autoapi/abacusai/concatenation_config/index.html
index 4fac3ca8..3f9d3578 100644
--- a/docs/autoapi/abacusai/concatenation_config/index.html
+++ b/docs/autoapi/abacusai/concatenation_config/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/cpu_gpu_memory_specs/index.html b/docs/autoapi/abacusai/cpu_gpu_memory_specs/index.html
index 10241102..b6c4b74c 100644
--- a/docs/autoapi/abacusai/cpu_gpu_memory_specs/index.html
+++ b/docs/autoapi/abacusai/cpu_gpu_memory_specs/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/cryptography/index.html b/docs/autoapi/abacusai/cryptography/index.html
index 14541731..4c15ae39 100644
--- a/docs/autoapi/abacusai/cryptography/index.html
+++ b/docs/autoapi/abacusai/cryptography/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/custom_chat_instructions/index.html b/docs/autoapi/abacusai/custom_chat_instructions/index.html
index a69891b1..07ae1448 100644
--- a/docs/autoapi/abacusai/custom_chat_instructions/index.html
+++ b/docs/autoapi/abacusai/custom_chat_instructions/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/custom_loss_function/index.html b/docs/autoapi/abacusai/custom_loss_function/index.html
index f3071aa3..ffd64e53 100644
--- a/docs/autoapi/abacusai/custom_loss_function/index.html
+++ b/docs/autoapi/abacusai/custom_loss_function/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/custom_metric/index.html b/docs/autoapi/abacusai/custom_metric/index.html
index 66b7e39e..6f19d904 100644
--- a/docs/autoapi/abacusai/custom_metric/index.html
+++ b/docs/autoapi/abacusai/custom_metric/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/custom_metric_version/index.html b/docs/autoapi/abacusai/custom_metric_version/index.html
index 8b261d02..ef41d43f 100644
--- a/docs/autoapi/abacusai/custom_metric_version/index.html
+++ b/docs/autoapi/abacusai/custom_metric_version/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/custom_train_function_info/index.html b/docs/autoapi/abacusai/custom_train_function_info/index.html
index 52eab5b6..de1a5e0c 100644
--- a/docs/autoapi/abacusai/custom_train_function_info/index.html
+++ b/docs/autoapi/abacusai/custom_train_function_info/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/data_consistency_duplication/index.html b/docs/autoapi/abacusai/data_consistency_duplication/index.html
index f69989eb..fd447197 100644
--- a/docs/autoapi/abacusai/data_consistency_duplication/index.html
+++ b/docs/autoapi/abacusai/data_consistency_duplication/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/data_metrics/index.html b/docs/autoapi/abacusai/data_metrics/index.html
index f9e8648e..92d3efb2 100644
--- a/docs/autoapi/abacusai/data_metrics/index.html
+++ b/docs/autoapi/abacusai/data_metrics/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/data_prep_logs/index.html b/docs/autoapi/abacusai/data_prep_logs/index.html
index c18b7574..f4fa8026 100644
--- a/docs/autoapi/abacusai/data_prep_logs/index.html
+++ b/docs/autoapi/abacusai/data_prep_logs/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/data_quality_results/index.html b/docs/autoapi/abacusai/data_quality_results/index.html
index 73cffcc2..164aad60 100644
--- a/docs/autoapi/abacusai/data_quality_results/index.html
+++ b/docs/autoapi/abacusai/data_quality_results/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/data_upload_result/index.html b/docs/autoapi/abacusai/data_upload_result/index.html
index 7198763f..9e2b2dd2 100644
--- a/docs/autoapi/abacusai/data_upload_result/index.html
+++ b/docs/autoapi/abacusai/data_upload_result/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/database_column_feature_mapping/index.html b/docs/autoapi/abacusai/database_column_feature_mapping/index.html
index 1b43ae24..f532cb1d 100644
--- a/docs/autoapi/abacusai/database_column_feature_mapping/index.html
+++ b/docs/autoapi/abacusai/database_column_feature_mapping/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/database_connector/index.html b/docs/autoapi/abacusai/database_connector/index.html
index 3e313651..4c99a721 100644
--- a/docs/autoapi/abacusai/database_connector/index.html
+++ b/docs/autoapi/abacusai/database_connector/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/database_connector_column/index.html b/docs/autoapi/abacusai/database_connector_column/index.html
index 1a53d70e..c258a619 100644
--- a/docs/autoapi/abacusai/database_connector_column/index.html
+++ b/docs/autoapi/abacusai/database_connector_column/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/database_connector_schema/index.html b/docs/autoapi/abacusai/database_connector_schema/index.html
index 0882005c..cd77faad 100644
--- a/docs/autoapi/abacusai/database_connector_schema/index.html
+++ b/docs/autoapi/abacusai/database_connector_schema/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/dataset/index.html b/docs/autoapi/abacusai/dataset/index.html
index 8d168d61..7321b3b1 100644
--- a/docs/autoapi/abacusai/dataset/index.html
+++ b/docs/autoapi/abacusai/dataset/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/dataset_column/index.html b/docs/autoapi/abacusai/dataset_column/index.html
index 7e39d759..cbfa8625 100644
--- a/docs/autoapi/abacusai/dataset_column/index.html
+++ b/docs/autoapi/abacusai/dataset_column/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/dataset_version/index.html b/docs/autoapi/abacusai/dataset_version/index.html
index f382b1c6..d7151eb5 100644
--- a/docs/autoapi/abacusai/dataset_version/index.html
+++ b/docs/autoapi/abacusai/dataset_version/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/dataset_version_logs/index.html b/docs/autoapi/abacusai/dataset_version_logs/index.html
index 24b6782f..955142eb 100644
--- a/docs/autoapi/abacusai/dataset_version_logs/index.html
+++ b/docs/autoapi/abacusai/dataset_version_logs/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/deployment/index.html b/docs/autoapi/abacusai/deployment/index.html
index 52aa4f5f..c0013d8d 100644
--- a/docs/autoapi/abacusai/deployment/index.html
+++ b/docs/autoapi/abacusai/deployment/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/deployment_auth_token/index.html b/docs/autoapi/abacusai/deployment_auth_token/index.html
index 77bef177..39204b34 100644
--- a/docs/autoapi/abacusai/deployment_auth_token/index.html
+++ b/docs/autoapi/abacusai/deployment_auth_token/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/deployment_conversation/index.html b/docs/autoapi/abacusai/deployment_conversation/index.html
index 961860f9..9d0fe3fc 100644
--- a/docs/autoapi/abacusai/deployment_conversation/index.html
+++ b/docs/autoapi/abacusai/deployment_conversation/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/deployment_conversation_event/index.html b/docs/autoapi/abacusai/deployment_conversation_event/index.html
index cdb9fa54..509c1089 100644
--- a/docs/autoapi/abacusai/deployment_conversation_event/index.html
+++ b/docs/autoapi/abacusai/deployment_conversation_event/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/deployment_conversation_export/index.html b/docs/autoapi/abacusai/deployment_conversation_export/index.html
index ea541be2..df45c2dc 100644
--- a/docs/autoapi/abacusai/deployment_conversation_export/index.html
+++ b/docs/autoapi/abacusai/deployment_conversation_export/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/deployment_statistics/index.html b/docs/autoapi/abacusai/deployment_statistics/index.html
index 90327a07..bad5577b 100644
--- a/docs/autoapi/abacusai/deployment_statistics/index.html
+++ b/docs/autoapi/abacusai/deployment_statistics/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/document_data/index.html b/docs/autoapi/abacusai/document_data/index.html
index 7bd53af9..f98ae4a6 100644
--- a/docs/autoapi/abacusai/document_data/index.html
+++ b/docs/autoapi/abacusai/document_data/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/document_retriever/index.html b/docs/autoapi/abacusai/document_retriever/index.html
index a5bcd9d9..8eeafffb 100644
--- a/docs/autoapi/abacusai/document_retriever/index.html
+++ b/docs/autoapi/abacusai/document_retriever/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/document_retriever_config/index.html b/docs/autoapi/abacusai/document_retriever_config/index.html
index 6fdaf1ec..b1df2b0a 100644
--- a/docs/autoapi/abacusai/document_retriever_config/index.html
+++ b/docs/autoapi/abacusai/document_retriever_config/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/document_retriever_lookup_result/index.html b/docs/autoapi/abacusai/document_retriever_lookup_result/index.html
index a5b0ddfa..9f8be81f 100644
--- a/docs/autoapi/abacusai/document_retriever_lookup_result/index.html
+++ b/docs/autoapi/abacusai/document_retriever_lookup_result/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/document_retriever_version/index.html b/docs/autoapi/abacusai/document_retriever_version/index.html
index b5b6340d..59004672 100644
--- a/docs/autoapi/abacusai/document_retriever_version/index.html
+++ b/docs/autoapi/abacusai/document_retriever_version/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/drift_distribution/index.html b/docs/autoapi/abacusai/drift_distribution/index.html
index 24ba90f5..4e06b27e 100644
--- a/docs/autoapi/abacusai/drift_distribution/index.html
+++ b/docs/autoapi/abacusai/drift_distribution/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/drift_distributions/index.html b/docs/autoapi/abacusai/drift_distributions/index.html
index a685f656..da2ad458 100644
--- a/docs/autoapi/abacusai/drift_distributions/index.html
+++ b/docs/autoapi/abacusai/drift_distributions/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/eda/index.html b/docs/autoapi/abacusai/eda/index.html
index d8d087db..0ba33397 100644
--- a/docs/autoapi/abacusai/eda/index.html
+++ b/docs/autoapi/abacusai/eda/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/eda_chart_description/index.html b/docs/autoapi/abacusai/eda_chart_description/index.html
index dd808319..0de6245f 100644
--- a/docs/autoapi/abacusai/eda_chart_description/index.html
+++ b/docs/autoapi/abacusai/eda_chart_description/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/eda_collinearity/index.html b/docs/autoapi/abacusai/eda_collinearity/index.html
index 3f823930..b3e687d2 100644
--- a/docs/autoapi/abacusai/eda_collinearity/index.html
+++ b/docs/autoapi/abacusai/eda_collinearity/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/eda_data_consistency/index.html b/docs/autoapi/abacusai/eda_data_consistency/index.html
index 9fe65edf..6ef9cbef 100644
--- a/docs/autoapi/abacusai/eda_data_consistency/index.html
+++ b/docs/autoapi/abacusai/eda_data_consistency/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/eda_feature_association/index.html b/docs/autoapi/abacusai/eda_feature_association/index.html
index 25e813fa..54647229 100644
--- a/docs/autoapi/abacusai/eda_feature_association/index.html
+++ b/docs/autoapi/abacusai/eda_feature_association/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/eda_feature_collinearity/index.html b/docs/autoapi/abacusai/eda_feature_collinearity/index.html
index 6f27e4ae..7b2406bd 100644
--- a/docs/autoapi/abacusai/eda_feature_collinearity/index.html
+++ b/docs/autoapi/abacusai/eda_feature_collinearity/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/eda_forecasting_analysis/index.html b/docs/autoapi/abacusai/eda_forecasting_analysis/index.html
index 6dc24fd6..f0e80cec 100644
--- a/docs/autoapi/abacusai/eda_forecasting_analysis/index.html
+++ b/docs/autoapi/abacusai/eda_forecasting_analysis/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/eda_version/index.html b/docs/autoapi/abacusai/eda_version/index.html
index 67c6f972..28056125 100644
--- a/docs/autoapi/abacusai/eda_version/index.html
+++ b/docs/autoapi/abacusai/eda_version/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/embedding_feature_drift_distribution/index.html b/docs/autoapi/abacusai/embedding_feature_drift_distribution/index.html
index dc070fa4..984e42c7 100644
--- a/docs/autoapi/abacusai/embedding_feature_drift_distribution/index.html
+++ b/docs/autoapi/abacusai/embedding_feature_drift_distribution/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/execute_feature_group_operation/index.html b/docs/autoapi/abacusai/execute_feature_group_operation/index.html
index 224945c6..dcc32b6c 100644
--- a/docs/autoapi/abacusai/execute_feature_group_operation/index.html
+++ b/docs/autoapi/abacusai/execute_feature_group_operation/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/external_application/index.html b/docs/autoapi/abacusai/external_application/index.html
index 1536545e..55d55961 100644
--- a/docs/autoapi/abacusai/external_application/index.html
+++ b/docs/autoapi/abacusai/external_application/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/external_invite/index.html b/docs/autoapi/abacusai/external_invite/index.html
index 4a7ebb7b..d8fa3992 100644
--- a/docs/autoapi/abacusai/external_invite/index.html
+++ b/docs/autoapi/abacusai/external_invite/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/extracted_fields/index.html b/docs/autoapi/abacusai/extracted_fields/index.html
index 7d930d88..9fd68a87 100644
--- a/docs/autoapi/abacusai/extracted_fields/index.html
+++ b/docs/autoapi/abacusai/extracted_fields/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature/index.html b/docs/autoapi/abacusai/feature/index.html
index 3ff9a2c0..731a82fd 100644
--- a/docs/autoapi/abacusai/feature/index.html
+++ b/docs/autoapi/abacusai/feature/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_distribution/index.html b/docs/autoapi/abacusai/feature_distribution/index.html
index 9764b6dd..913acf64 100644
--- a/docs/autoapi/abacusai/feature_distribution/index.html
+++ b/docs/autoapi/abacusai/feature_distribution/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_drift_record/index.html b/docs/autoapi/abacusai/feature_drift_record/index.html
index e42cf9fa..047cb737 100644
--- a/docs/autoapi/abacusai/feature_drift_record/index.html
+++ b/docs/autoapi/abacusai/feature_drift_record/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_drift_summary/index.html b/docs/autoapi/abacusai/feature_drift_summary/index.html
index ef76860f..491b34d5 100644
--- a/docs/autoapi/abacusai/feature_drift_summary/index.html
+++ b/docs/autoapi/abacusai/feature_drift_summary/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group/index.html b/docs/autoapi/abacusai/feature_group/index.html
index 7f812b2f..5a98edd9 100644
--- a/docs/autoapi/abacusai/feature_group/index.html
+++ b/docs/autoapi/abacusai/feature_group/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_document/index.html b/docs/autoapi/abacusai/feature_group_document/index.html
index f653915f..df464873 100644
--- a/docs/autoapi/abacusai/feature_group_document/index.html
+++ b/docs/autoapi/abacusai/feature_group_document/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_export/index.html b/docs/autoapi/abacusai/feature_group_export/index.html
index a89eeb60..7137430e 100644
--- a/docs/autoapi/abacusai/feature_group_export/index.html
+++ b/docs/autoapi/abacusai/feature_group_export/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_export_config/index.html b/docs/autoapi/abacusai/feature_group_export_config/index.html
index 53d311a2..8d2ec18f 100644
--- a/docs/autoapi/abacusai/feature_group_export_config/index.html
+++ b/docs/autoapi/abacusai/feature_group_export_config/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_export_download_url/index.html b/docs/autoapi/abacusai/feature_group_export_download_url/index.html
index 04c4d19c..35da6d8c 100644
--- a/docs/autoapi/abacusai/feature_group_export_download_url/index.html
+++ b/docs/autoapi/abacusai/feature_group_export_download_url/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_lineage/index.html b/docs/autoapi/abacusai/feature_group_lineage/index.html
index b228c3c2..6870fdbb 100644
--- a/docs/autoapi/abacusai/feature_group_lineage/index.html
+++ b/docs/autoapi/abacusai/feature_group_lineage/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_refresh_export_config/index.html b/docs/autoapi/abacusai/feature_group_refresh_export_config/index.html
index f1657b26..511dad33 100644
--- a/docs/autoapi/abacusai/feature_group_refresh_export_config/index.html
+++ b/docs/autoapi/abacusai/feature_group_refresh_export_config/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_row/index.html b/docs/autoapi/abacusai/feature_group_row/index.html
index c265ba82..178d21a2 100644
--- a/docs/autoapi/abacusai/feature_group_row/index.html
+++ b/docs/autoapi/abacusai/feature_group_row/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_row_process/index.html b/docs/autoapi/abacusai/feature_group_row_process/index.html
index 06d762ec..f807f1ca 100644
--- a/docs/autoapi/abacusai/feature_group_row_process/index.html
+++ b/docs/autoapi/abacusai/feature_group_row_process/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_row_process_logs/index.html b/docs/autoapi/abacusai/feature_group_row_process_logs/index.html
index 6403b3ac..e4fb41f8 100644
--- a/docs/autoapi/abacusai/feature_group_row_process_logs/index.html
+++ b/docs/autoapi/abacusai/feature_group_row_process_logs/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_row_process_summary/index.html b/docs/autoapi/abacusai/feature_group_row_process_summary/index.html
index 217e2e16..b5746e1a 100644
--- a/docs/autoapi/abacusai/feature_group_row_process_summary/index.html
+++ b/docs/autoapi/abacusai/feature_group_row_process_summary/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_template/index.html b/docs/autoapi/abacusai/feature_group_template/index.html
index c67a90ce..12bb58e9 100644
--- a/docs/autoapi/abacusai/feature_group_template/index.html
+++ b/docs/autoapi/abacusai/feature_group_template/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_template_variable_options/index.html b/docs/autoapi/abacusai/feature_group_template_variable_options/index.html
index dd48753e..ffacec8d 100644
--- a/docs/autoapi/abacusai/feature_group_template_variable_options/index.html
+++ b/docs/autoapi/abacusai/feature_group_template_variable_options/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_version/index.html b/docs/autoapi/abacusai/feature_group_version/index.html
index a47887cd..f397fc9e 100644
--- a/docs/autoapi/abacusai/feature_group_version/index.html
+++ b/docs/autoapi/abacusai/feature_group_version/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_group_version_logs/index.html b/docs/autoapi/abacusai/feature_group_version_logs/index.html
index 0a2cd5be..13016ad9 100644
--- a/docs/autoapi/abacusai/feature_group_version_logs/index.html
+++ b/docs/autoapi/abacusai/feature_group_version_logs/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_importance/index.html b/docs/autoapi/abacusai/feature_importance/index.html
index 0aa9e3cc..2bd02d6a 100644
--- a/docs/autoapi/abacusai/feature_importance/index.html
+++ b/docs/autoapi/abacusai/feature_importance/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_mapping/index.html b/docs/autoapi/abacusai/feature_mapping/index.html
index 67ad144f..6e0abef5 100644
--- a/docs/autoapi/abacusai/feature_mapping/index.html
+++ b/docs/autoapi/abacusai/feature_mapping/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_performance_analysis/index.html b/docs/autoapi/abacusai/feature_performance_analysis/index.html
index 968f352d..224649d9 100644
--- a/docs/autoapi/abacusai/feature_performance_analysis/index.html
+++ b/docs/autoapi/abacusai/feature_performance_analysis/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/feature_record/index.html b/docs/autoapi/abacusai/feature_record/index.html
index 7bcb9637..df0c5fa1 100644
--- a/docs/autoapi/abacusai/feature_record/index.html
+++ b/docs/autoapi/abacusai/feature_record/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/file_connector/index.html b/docs/autoapi/abacusai/file_connector/index.html
index b2b7b61b..c0024a51 100644
--- a/docs/autoapi/abacusai/file_connector/index.html
+++ b/docs/autoapi/abacusai/file_connector/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/file_connector_instructions/index.html b/docs/autoapi/abacusai/file_connector_instructions/index.html
index 0b66815a..d07be818 100644
--- a/docs/autoapi/abacusai/file_connector_instructions/index.html
+++ b/docs/autoapi/abacusai/file_connector_instructions/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/file_connector_verification/index.html b/docs/autoapi/abacusai/file_connector_verification/index.html
index bf48c24c..be3b18d3 100644
--- a/docs/autoapi/abacusai/file_connector_verification/index.html
+++ b/docs/autoapi/abacusai/file_connector_verification/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/finetuned_pretrained_model/index.html b/docs/autoapi/abacusai/finetuned_pretrained_model/index.html
index 10406b84..e8cd4335 100644
--- a/docs/autoapi/abacusai/finetuned_pretrained_model/index.html
+++ b/docs/autoapi/abacusai/finetuned_pretrained_model/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/forecasting_analysis_graph_data/index.html b/docs/autoapi/abacusai/forecasting_analysis_graph_data/index.html
index 9d8521a5..e08e5678 100644
--- a/docs/autoapi/abacusai/forecasting_analysis_graph_data/index.html
+++ b/docs/autoapi/abacusai/forecasting_analysis_graph_data/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/forecasting_monitor_item_analysis/index.html b/docs/autoapi/abacusai/forecasting_monitor_item_analysis/index.html
index 5732cb66..d0d5c082 100644
--- a/docs/autoapi/abacusai/forecasting_monitor_item_analysis/index.html
+++ b/docs/autoapi/abacusai/forecasting_monitor_item_analysis/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/forecasting_monitor_summary/index.html b/docs/autoapi/abacusai/forecasting_monitor_summary/index.html
index d56d31f5..f4b98e63 100644
--- a/docs/autoapi/abacusai/forecasting_monitor_summary/index.html
+++ b/docs/autoapi/abacusai/forecasting_monitor_summary/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/function_logs/index.html b/docs/autoapi/abacusai/function_logs/index.html
index 93e350a9..36645e7e 100644
--- a/docs/autoapi/abacusai/function_logs/index.html
+++ b/docs/autoapi/abacusai/function_logs/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/generated_pit_feature_config_option/index.html b/docs/autoapi/abacusai/generated_pit_feature_config_option/index.html
index 78344c5e..27df663e 100644
--- a/docs/autoapi/abacusai/generated_pit_feature_config_option/index.html
+++ b/docs/autoapi/abacusai/generated_pit_feature_config_option/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/global_context/index.html b/docs/autoapi/abacusai/global_context/index.html
index 2f91552a..b302eeac 100644
--- a/docs/autoapi/abacusai/global_context/index.html
+++ b/docs/autoapi/abacusai/global_context/index.html
@@ -281,6 +281,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/graph_dashboard/index.html b/docs/autoapi/abacusai/graph_dashboard/index.html
index 495633d6..1bf8b1f1 100644
--- a/docs/autoapi/abacusai/graph_dashboard/index.html
+++ b/docs/autoapi/abacusai/graph_dashboard/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/holdout_analysis/index.html b/docs/autoapi/abacusai/holdout_analysis/index.html
index d1f4f132..b51e3387 100644
--- a/docs/autoapi/abacusai/holdout_analysis/index.html
+++ b/docs/autoapi/abacusai/holdout_analysis/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/holdout_analysis_version/index.html b/docs/autoapi/abacusai/holdout_analysis_version/index.html
index 112a5fa1..e1fab9e5 100644
--- a/docs/autoapi/abacusai/holdout_analysis_version/index.html
+++ b/docs/autoapi/abacusai/holdout_analysis_version/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/hosted_model_token/index.html b/docs/autoapi/abacusai/hosted_model_token/index.html
index 221a1db7..7c84b7a2 100644
--- a/docs/autoapi/abacusai/hosted_model_token/index.html
+++ b/docs/autoapi/abacusai/hosted_model_token/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/image_gen_settings/index.html b/docs/autoapi/abacusai/image_gen_settings/index.html
index a2b801f1..5ece0d68 100644
--- a/docs/autoapi/abacusai/image_gen_settings/index.html
+++ b/docs/autoapi/abacusai/image_gen_settings/index.html
@@ -280,6 +280,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
diff --git a/docs/autoapi/abacusai/index.html b/docs/autoapi/abacusai/index.html
index b0b22201..e625dac1 100644
--- a/docs/autoapi/abacusai/index.html
+++ b/docs/autoapi/abacusai/index.html
@@ -276,6 +276,7 @@
abacusai.web_search_response
abacusai.web_search_result
abacusai.webhook
+abacusai.workflow_graph_node
abacusai.workflow_node_template
@@ -528,6 +529,7 @@
WorkflowNodeInputMapping.source_prop
WorkflowNodeInputMapping.is_required
WorkflowNodeInputMapping.description
+WorkflowNodeInputMapping.constant_value
WorkflowNodeInputMapping.__post_init__()
WorkflowNodeInputMapping.to_dict()
WorkflowNodeInputMapping.from_dict()
@@ -542,6 +544,7 @@
WorkflowNodeInputSchema.to_dict()
WorkflowNodeInputSchema.from_dict()
WorkflowNodeInputSchema.from_workflow_node()
+WorkflowNodeInputSchema.from_input_mappings()
WorkflowNodeOutputMapping
@@ -1447,6 +1451,8 @@
LLMName.ABACUS_SMAUG3
LLMName.ABACUS_DRACARYS
LLMName.QWEN_2_5_32B
+LLMName.QWEN_2_5_32B_BASE
+LLMName.QWEN_2_5_72B
LLMName.QWQ_32B
LLMName.GEMINI_1_5_FLASH
LLMName.XAI_GROK
@@ -1515,6 +1521,7 @@
WorkflowNodeInputType.USER_INPUT
WorkflowNodeInputType.WORKFLOW_VARIABLE
WorkflowNodeInputType.IGNORE
+WorkflowNodeInputType.CONSTANT
WorkflowNodeOutputType
@@ -6753,8 +6769,8 @@ Classes