From b3974eb960b1e2455b1af3f6ae5b4c7c5fd70e73 Mon Sep 17 00:00:00 2001 From: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Date: Fri, 7 Feb 2025 08:28:41 -0300 Subject: [PATCH 01/18] Update return type so it works with python 3.8 (#390) --- aixplain/v2/benchmark.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aixplain/v2/benchmark.py b/aixplain/v2/benchmark.py index 66270a0d..b7073d86 100644 --- a/aixplain/v2/benchmark.py +++ b/aixplain/v2/benchmark.py @@ -53,7 +53,7 @@ def create(cls, *args, **kwargs: Unpack[BenchmarkCreateParams]) -> "Benchmark": return BenchmarkFactory.create(*args, **kwargs) @classmethod - def list_normalization_options(cls, metric: "Metric", model: "Model") -> list[str]: + def list_normalization_options(cls, metric: "Metric", model: "Model") -> List[str]: """ List the normalization options for a metric and a model. @@ -62,7 +62,7 @@ def list_normalization_options(cls, metric: "Metric", model: "Model") -> list[st model: "Model": The model. Returns: - list[str]: The list of normalization options. + List[str]: The list of normalization options. """ from aixplain.factories import BenchmarkFactory From 5096031902cb82ecb14875835c4dcf595f2609da Mon Sep 17 00:00:00 2001 From: kadirpekel Date: Fri, 7 Feb 2025 18:11:30 +0100 Subject: [PATCH 02/18] ENG-1557: model params are now available for designer assets (#387) --- aixplain/modules/pipeline/designer/nodes.py | 67 ++++++++++++++------- 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/aixplain/modules/pipeline/designer/nodes.py b/aixplain/modules/pipeline/designer/nodes.py index 35afe4b9..9c9467aa 100644 --- a/aixplain/modules/pipeline/designer/nodes.py +++ b/aixplain/modules/pipeline/designer/nodes.py @@ -79,17 +79,13 @@ def populate_asset(self): if self.function: if self.asset.function.value != self.function: - raise ValueError(f"Function {self.function} is not supported by asset {self.asset_id}") - - # Despite function field has been set, we should still dynamically - # populate parameters for Utility functions - if self.function == Function.UTILITIES: - self._auto_populate_params() - + raise ValueError( + f"Function {self.function} is not supported by asset {self.asset_id}" + ) else: self.function = self.asset.function.value - self._auto_populate_params() + self._auto_populate_params() self._auto_set_params() def _auto_populate_params(self): @@ -108,18 +104,29 @@ def _auto_populate_params(self): ) else: for item in spec["params"]: - self.inputs.create_param( + if item["code"] not in self.inputs: + self.inputs.create_param( + code=item["code"], + data_type=item["dataType"], + is_required=item["required"], + ) + + if self.asset.model_params: + for code, param in self.asset.model_params.parameters.items(): + if code not in self.inputs: + self.inputs.create_param( + code=code, + is_required=param.required, + value=param.value, + ) + + for item in spec["output"]: + if item["code"] not in self.outputs: + self.outputs.create_param( code=item["code"], data_type=item["dataType"], - is_required=item["required"], ) - for item in spec["output"]: - self.outputs.create_param( - code=item["code"], - data_type=item["dataType"], - ) - def _auto_set_params(self): for k, v in self.asset.additional_info["parameters"].items(): if k not in self.inputs: @@ -236,7 +243,12 @@ class Output(Node[OutputInputs, OutputOutputs]): inputs_class: Type[TI] = OutputInputs outputs_class: Type[TO] = OutputOutputs - def __init__(self, data_types: Optional[List[DataType]] = None, pipeline: "DesignerPipeline" = None, **kwargs): + def __init__( + self, + data_types: Optional[List[DataType]] = None, + pipeline: "DesignerPipeline" = None, + **kwargs + ): super().__init__(pipeline=pipeline, **kwargs) self.data_types = data_types or [] @@ -297,7 +309,14 @@ class Route(Serializable): operation: Operation type: RouteType - def __init__(self, value: DataType, path: List[Union[Node, int]], operation: Operation, type: RouteType, **kwargs): + def __init__( + self, + value: DataType, + path: List[Union[Node, int]], + operation: Operation, + type: RouteType, + **kwargs + ): """ Post init method to convert the nodes to node numbers if they are nodes. @@ -312,7 +331,9 @@ def __init__(self, value: DataType, path: List[Union[Node, int]], operation: Ope # raise ValueError("Path is not valid, should be a list of nodes") # convert nodes to node numbers if they are nodes - self.path = [node.number if isinstance(node, Node) else node for node in self.path] + self.path = [ + node.number if isinstance(node, Node) else node for node in self.path + ] def serialize(self) -> dict: return { @@ -350,7 +371,9 @@ class Router(Node[RouterInputs, RouterOutputs], LinkableMixin): inputs_class: Type[TI] = RouterInputs outputs_class: Type[TO] = RouterOutputs - def __init__(self, routes: List[Route], pipeline: "DesignerPipeline" = None, **kwargs): + def __init__( + self, routes: List[Route], pipeline: "DesignerPipeline" = None, **kwargs + ): super().__init__(pipeline=pipeline, **kwargs) self.routes = routes @@ -389,7 +412,9 @@ class Decision(Node[DecisionInputs, DecisionOutputs], LinkableMixin): inputs_class: Type[TI] = DecisionInputs outputs_class: Type[TO] = DecisionOutputs - def __init__(self, routes: List[Route], pipeline: "DesignerPipeline" = None, **kwargs): + def __init__( + self, routes: List[Route], pipeline: "DesignerPipeline" = None, **kwargs + ): super().__init__(pipeline=pipeline, **kwargs) self.routes = routes From cb7f809b30fb00d4a09737be793709b928d3c9bd Mon Sep 17 00:00:00 2001 From: kadirpekel Date: Fri, 7 Feb 2025 18:15:38 +0100 Subject: [PATCH 03/18] ENG-1559: Fixed designer tests (#388) --- tests/functional/pipelines/data/script.py | 50 ++++----------------- tests/functional/pipelines/designer_test.py | 5 --- 2 files changed, 9 insertions(+), 46 deletions(-) diff --git a/tests/functional/pipelines/data/script.py b/tests/functional/pipelines/data/script.py index 3403fa61..c88a188d 100644 --- a/tests/functional/pipelines/data/script.py +++ b/tests/functional/pipelines/data/script.py @@ -1,51 +1,19 @@ -__author__ = "thiagocastroferreira" - -import argparse -import json - - -def main(transcripts, speakers, output_file): - # get the speech recognition json - transcripts = json.load(open(transcripts)) - # get the speaker diarization json - speakers = json.load(open(speakers)) - +def main(speakers): # build the response response = [] - for i, transcript in enumerate(transcripts): - merge = { - "transcript": transcript["attributes"]["data"], - "speaker": speakers[i]["attributes"]["data"]["data"], - } + for i, speaker in enumerate(speakers): + print(f"Processing speaker at index={i}") + data = speaker["data"] + data_modified = f"SCRIPT MODIFIED: {data}" response.append( { "index": i, "success": True, "input_type": "text", - "is_url": transcript["is_url"], + "is_url": False, "details": {}, - "input_segment_info": transcript["input_segment_info"], - "attributes": {"data": merge, "input": merge}, + "data": data_modified, + "input": data_modified, } ) - - # save the response, based on the intermediate representation format, in the output_file - with open(output_file, "w") as f: - json.dump(response, f) - - -if __name__ == "__main__": - # Create the parser - parser = argparse.ArgumentParser() - # Add arguments - parser.add_argument("--transcripts", type=str, required=True) - parser.add_argument("--speakers", type=str, required=True) - parser.add_argument("--output_file", type=str, required=True) - # Parse the argument - args = parser.parse_args() - - transcripts = args.transcripts - speakers = args.speakers - output_file = args.output_file - - main(transcripts, speakers, output_file) + return response diff --git a/tests/functional/pipelines/designer_test.py b/tests/functional/pipelines/designer_test.py index cc8d4437..0a955651 100644 --- a/tests/functional/pipelines/designer_test.py +++ b/tests/functional/pipelines/designer_test.py @@ -131,7 +131,6 @@ def test_routing_pipeline(pipeline): def test_scripting_pipeline(pipeline): SPEAKER_DIARIZATION_AUDIO_ASSET = "62fab6ecb39cca09ca5bc365" - SPEECH_RECOGNITION_ASSET = "621cf3fa6442ef511d2830af" input = pipeline.input() @@ -139,17 +138,13 @@ def test_scripting_pipeline(pipeline): asset_id=SPEAKER_DIARIZATION_AUDIO_ASSET ) - speech_recognition = pipeline.speech_recognition(asset_id=SPEECH_RECOGNITION_ASSET) - script = pipeline.script(script_path="tests/functional/pipelines/data/script.py") script.inputs.create_param(code="transcripts", data_type=DataType.TEXT) script.inputs.create_param(code="speakers", data_type=DataType.LABEL) script.outputs.create_param(code="data", data_type=DataType.TEXT) input.outputs.input.link(segmentor.inputs.audio) - segmentor.outputs.audio.link(speech_recognition.inputs.source_audio) segmentor.outputs.data.link(script.inputs.speakers) - speech_recognition.outputs.data.link(script.inputs.transcripts) script.use_output("data") From 1870dea480bed23947a7bd6a6fe0fee46f27d3dc Mon Sep 17 00:00:00 2001 From: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Date: Mon, 10 Feb 2025 20:51:35 +0400 Subject: [PATCH 04/18] Use input api key to list models when given (#395) --- aixplain/factories/model_factory/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aixplain/factories/model_factory/utils.py b/aixplain/factories/model_factory/utils.py index aeb10a8a..468a0eb9 100644 --- a/aixplain/factories/model_factory/utils.py +++ b/aixplain/factories/model_factory/utils.py @@ -167,8 +167,8 @@ def get_model_from_ids(model_ids: List[str], api_key: Optional[str] = None) -> L resp = None try: url = urljoin(config.BACKEND_URL, f"sdk/models?ids={','.join(model_ids)}") - - headers = {"Authorization": f"Token {config.TEAM_API_KEY}", "Content-Type": "application/json"} + api_key = config.TEAM_API_KEY if api_key is None else api_key + headers = {"Authorization": f"Token {api_key}", "Content-Type": "application/json"} logging.info(f"Start service for GET Model - {url} - {headers}") r = _request_with_retry("get", url, headers=headers) resp = r.json() From 2b5c9ec337adc068df9d8a07a8cb3176a908d9a3 Mon Sep 17 00:00:00 2001 From: kadirpekel Date: Mon, 10 Feb 2025 19:49:37 +0100 Subject: [PATCH 05/18] BUG-375 new functional test regarding ensuring failure (#396) --- tests/functional/pipelines/run_test.py | 42 +++++++++++++++++++++----- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/tests/functional/pipelines/run_test.py b/tests/functional/pipelines/run_test.py index c5863ac2..8e7e47ff 100644 --- a/tests/functional/pipelines/run_test.py +++ b/tests/functional/pipelines/run_test.py @@ -54,7 +54,9 @@ def test_get_pipeline(PipelineFactory): def test_run_single_str(batchmode: bool, version: str): pipeline = PipelineFactory.list(query="SingleNodePipeline")["results"][0] - response = pipeline.run(data="Translate this thing", batch_mode=batchmode, **{"version": version}) + response = pipeline.run( + data="Translate this thing", batch_mode=batchmode, **{"version": version} + ) assert response["status"] == "SUCCESS" @@ -178,7 +180,9 @@ def test_run_multipipe_with_datasets(batchmode: bool, version: str, PipelineFact @pytest.mark.parametrize("version", ["2.0", "3.0"]) @pytest.mark.parametrize("PipelineFactory", [PipelineFactory, v2.Pipeline]) def test_run_segment_reconstruct(version: str, PipelineFactory): - pipeline = PipelineFactory.list(query="Segmentation/Reconstruction Functional Test - DO NOT DELETE")["results"][0] + pipeline = PipelineFactory.list( + query="Segmentation/Reconstruction Functional Test - DO NOT DELETE" + )["results"][0] response = pipeline.run( "https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav", **{"version": version}, @@ -197,7 +201,9 @@ def test_run_translation_metric(version: str, PipelineFactory): reference_id = dataset.target_data["pt"][0].id - pipeline = PipelineFactory.list(query="Translation Metric Functional Test - DO NOT DELETE")["results"][0] + pipeline = PipelineFactory.list( + query="Translation Metric Functional Test - DO NOT DELETE" + )["results"][0] response = pipeline.run( data={"TextInput": reference_id, "ReferenceInput": reference_id}, data_asset={"TextInput": data_asset_id, "ReferenceInput": data_asset_id}, @@ -213,7 +219,9 @@ def test_run_translation_metric(version: str, PipelineFactory): @pytest.mark.parametrize("version", ["2.0", "3.0"]) @pytest.mark.parametrize("PipelineFactory", [PipelineFactory, v2.Pipeline]) def test_run_metric(version: str, PipelineFactory): - pipeline = PipelineFactory.list(query="ASR Metric Functional Test - DO NOT DELETE")["results"][0] + pipeline = PipelineFactory.list(query="ASR Metric Functional Test - DO NOT DELETE")[ + "results" + ][0] response = pipeline.run( { "AudioInput": "https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav", @@ -283,7 +291,9 @@ def test_run_decision(input_data: str, output_data: str, version: str, PipelineF @pytest.mark.parametrize("version", ["3.0"]) @pytest.mark.parametrize("PipelineFactory", [PipelineFactory, v2.Pipeline]) def test_run_script(version: str, PipelineFactory): - pipeline = PipelineFactory.list(query="Script Functional Test - DO NOT DELETE")["results"][0] + pipeline = PipelineFactory.list(query="Script Functional Test - DO NOT DELETE")[ + "results" + ][0] response = pipeline.run( "https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav", **{"version": version}, @@ -297,7 +307,9 @@ def test_run_script(version: str, PipelineFactory): @pytest.mark.parametrize("version", ["2.0", "3.0"]) @pytest.mark.parametrize("PipelineFactory", [PipelineFactory, v2.Pipeline]) def test_run_text_reconstruction(version: str, PipelineFactory): - pipeline = PipelineFactory.list(query="Text Reconstruction - DO NOT DELETE")["results"][0] + pipeline = PipelineFactory.list(query="Text Reconstruction - DO NOT DELETE")[ + "results" + ][0] response = pipeline.run("Segment A\nSegment B\nSegment C", **{"version": version}) assert response["status"] == "SUCCESS" @@ -315,7 +327,9 @@ def test_run_text_reconstruction(version: str, PipelineFactory): @pytest.mark.parametrize("version", ["3.0"]) @pytest.mark.parametrize("PipelineFactory", [PipelineFactory, v2.Pipeline]) def test_run_diarization(version: str, PipelineFactory): - pipeline = PipelineFactory.list(query="Diarization ASR Functional Test - DO NOT DELETE")["results"][0] + pipeline = PipelineFactory.list( + query="Diarization ASR Functional Test - DO NOT DELETE" + )["results"][0] response = pipeline.run( "https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav", **{"version": version}, @@ -325,3 +339,17 @@ def test_run_diarization(version: str, PipelineFactory): for d in response["data"]: assert len(d["segments"]) > 0 assert d["segments"][0]["success"] is True + + +@pytest.mark.parametrize("version", ["3.0"]) +@pytest.mark.parametrize("PipelineFactory", [PipelineFactory, v2.Pipeline]) +def test_run_failure(version: str, PipelineFactory): + pipeline = PipelineFactory.list(query="Script Functional Test - DO NOT DELETE")[ + "results" + ][0] + response = pipeline.run( + "INCORRECT DATA", + **{"version": version}, + ) + + assert response["status"] == "ERROR" From 168f2f53e3e61f9f3e4835277bd131a2e58f8d34 Mon Sep 17 00:00:00 2001 From: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Date: Mon, 10 Feb 2025 23:16:14 +0400 Subject: [PATCH 06/18] Role 2 Instructions (#393) --- aixplain/factories/agent_factory/__init__.py | 14 ++++---- aixplain/factories/agent_factory/utils.py | 2 +- aixplain/modules/agent/__init__.py | 9 ++--- .../functional/agent/agent_functional_test.py | 14 ++++---- .../team_agent/team_agent_functional_test.py | 14 ++++---- tests/unit/agent/agent_test.py | 35 +++++++++++-------- tests/unit/team_agent_test.py | 8 ++--- 7 files changed, 52 insertions(+), 44 deletions(-) diff --git a/aixplain/factories/agent_factory/__init__.py b/aixplain/factories/agent_factory/__init__.py index 9076c0f4..1d75a2f8 100644 --- a/aixplain/factories/agent_factory/__init__.py +++ b/aixplain/factories/agent_factory/__init__.py @@ -47,7 +47,7 @@ def create( cls, name: Text, description: Text, - role: Optional[Text] = None, + instructions: Optional[Text] = None, llm_id: Text = "669a63646eb56306647e1091", tools: List[Union[Tool, Model]] = [], api_key: Text = config.TEAM_API_KEY, @@ -58,14 +58,14 @@ def create( """Create a new agent in the platform. Warning: - The 'role' parameter was recently added and serves the same purpose as 'description' did previously: set the role of the agent as a system prompt. + The 'instructions' parameter was recently added and serves the same purpose as 'description' did previously: set the role of the agent as a system prompt. The 'description' parameter is still required and should be used to set a short summary of the agent's purpose. - For the next releases, the 'role' parameter will be required. + For the next releases, the 'instructions' parameter will be required. Args: name (Text): name of the agent description (Text): description of the agent role. - role (Text): role of the agent. + instructions (Text): role of the agent. llm_id (Text, optional): aiXplain ID of the large language model to be used as agent. Defaults to "669a63646eb56306647e1091" (GPT-4o mini). tools (List[Union[Tool, Model]], optional): list of tool for the agent. Defaults to []. api_key (Text, optional): team/user API key. Defaults to config.TEAM_API_KEY. @@ -76,9 +76,9 @@ def create( Agent: created Agent """ warnings.warn( - "The 'role' parameter was recently added and serves the same purpose as 'description' did previously: set the role of the agent as a system prompt. " + "The 'instructions' parameter was recently added and serves the same purpose as 'description' did previously: set the role of the agent as a system prompt. " "The 'description' parameter is still required and should be used to set a short summary of the agent's purpose. " - "For the next releases, the 'role' parameter will be required.", + "For the next releases, the 'instructions' parameter will be required.", UserWarning, ) from aixplain.factories.agent_factory.utils import build_agent @@ -113,7 +113,7 @@ def create( for tool in tools ], "description": description, - "role": role or description, + "role": instructions or description, "supplier": supplier, "version": version, "llmId": llm_id, diff --git a/aixplain/factories/agent_factory/utils.py b/aixplain/factories/agent_factory/utils.py index 271259a6..7efebc56 100644 --- a/aixplain/factories/agent_factory/utils.py +++ b/aixplain/factories/agent_factory/utils.py @@ -54,7 +54,7 @@ def build_agent(payload: Dict, api_key: Text = config.TEAM_API_KEY) -> Agent: name=payload.get("name", ""), tools=tools, description=payload.get("description", ""), - role=payload.get("role", ""), + instructions=payload.get("role", ""), supplier=payload.get("teamId", None), version=payload.get("version", None), cost=payload.get("cost", None), diff --git a/aixplain/modules/agent/__init__.py b/aixplain/modules/agent/__init__.py index 15ace1e5..83844c3c 100644 --- a/aixplain/modules/agent/__init__.py +++ b/aixplain/modules/agent/__init__.py @@ -53,6 +53,7 @@ class Agent(Model): name (Text): Name of the Agent tools (List[Union[Tool, Model]]): List of tools that the Agent uses. description (Text, optional): description of the Agent. Defaults to "". + instructions (Text): instructions of the Agent. llm_id (Text): large language model. Defaults to GPT-4o (6646261c6eb563165658bbb1). supplier (Text): Supplier of the Agent. version (Text): Version of the Agent. @@ -66,7 +67,7 @@ def __init__( id: Text, name: Text, description: Text, - role: Text, + instructions: Text, tools: List[Union[Tool, Model]] = [], llm_id: Text = "6646261c6eb563165658bbb1", api_key: Optional[Text] = config.TEAM_API_KEY, @@ -83,7 +84,7 @@ def __init__( id (Text): ID of the Agent name (Text): Name of the Agent description (Text): description of the Agent. - role (Text): role of the Agent. + instructions (Text): role of the Agent. tools (List[Union[Tool, Model]]): List of tools that the Agent uses. llm_id (Text, optional): large language model. Defaults to GPT-4o (6646261c6eb563165658bbb1). supplier (Text): Supplier of the Agent. @@ -93,7 +94,7 @@ def __init__( cost (Dict, optional): model price. Defaults to None. """ super().__init__(id, name, description, api_key, supplier, version, cost=cost) - self.role = role + self.instructions = instructions self.additional_info = additional_info self.tools = tools for i, _ in enumerate(tools): @@ -318,7 +319,7 @@ def to_dict(self) -> Dict: "name": self.name, "assets": [tool.to_dict() for tool in self.tools], "description": self.description, - "role": self.role, + "role": self.instructions, "supplier": self.supplier.value["code"] if isinstance(self.supplier, Supplier) else self.supplier, "version": self.version, "llmId": self.llm_id, diff --git a/tests/functional/agent/agent_functional_test.py b/tests/functional/agent/agent_functional_test.py index 27d46dd6..e2d5cc2c 100644 --- a/tests/functional/agent/agent_functional_test.py +++ b/tests/functional/agent/agent_functional_test.py @@ -79,7 +79,7 @@ def test_end2end(run_input_map, delete_agents_and_team_agents, AgentFactory): agent = AgentFactory.create( name=run_input_map["agent_name"], description=run_input_map["agent_name"], - role=run_input_map["agent_name"], + instructions=run_input_map["agent_name"], llm_id=run_input_map["llm_id"], tools=tools, ) @@ -112,7 +112,7 @@ def test_python_interpreter_tool(delete_agents_and_team_agents, AgentFactory): agent = AgentFactory.create( name="Python Developer", description="A Python developer agent. If you get an error from a tool, try to fix it.", - role="A Python developer agent. If you get an error from a tool, try to fix it.", + instructions="A Python developer agent. If you get an error from a tool, try to fix it.", tools=[tool], ) assert agent is not None @@ -140,7 +140,7 @@ def test_custom_code_tool(delete_agents_and_team_agents, AgentFactory): agent = AgentFactory.create( name="Add Numbers Agent", description="Add two numbers. Do not directly answer. Use the tool to add the numbers.", - role="Add two numbers. Do not directly answer. Use the tool to add the numbers.", + instructions="Add two numbers. Do not directly answer. Use the tool to add the numbers.", tools=[tool], ) assert agent is not None @@ -183,7 +183,7 @@ def test_update_draft_agent(run_input_map, delete_agents_and_team_agents, AgentF agent = AgentFactory.create( name=run_input_map["agent_name"], description=run_input_map["agent_name"], - role=run_input_map["agent_name"], + instructions=run_input_map["agent_name"], llm_id=run_input_map["llm_id"], tools=tools, ) @@ -205,7 +205,7 @@ def test_fail_non_existent_llm(delete_agents_and_team_agents, AgentFactory): AgentFactory.create( name="Test Agent", description="Test description", - role="Test Agent Role", + instructions="Test Agent Role", llm_id="non_existent_llm", tools=[AgentFactory.create_model_tool(function=Function.TRANSLATION)], ) @@ -218,7 +218,7 @@ def test_delete_agent_in_use(delete_agents_and_team_agents, AgentFactory): agent = AgentFactory.create( name="Test Agent", description="Test description", - role="Test Agent Role", + instructions="Test Agent Role", tools=[AgentFactory.create_model_tool(function=Function.TRANSLATION)], ) TeamAgentFactory.create( @@ -240,7 +240,7 @@ def test_update_tools_of_agent(run_input_map, delete_agents_and_team_agents, Age agent = AgentFactory.create( name=run_input_map["agent_name"], description=run_input_map["agent_name"], - role=run_input_map["agent_name"], + instructions=run_input_map["agent_name"], llm_id=run_input_map["llm_id"], ) assert agent is not None diff --git a/tests/functional/team_agent/team_agent_functional_test.py b/tests/functional/team_agent/team_agent_functional_test.py index 54e1ebda..1d2785f2 100644 --- a/tests/functional/team_agent/team_agent_functional_test.py +++ b/tests/functional/team_agent/team_agent_functional_test.py @@ -81,7 +81,7 @@ def test_end2end(run_input_map, delete_agents_and_team_agents, TeamAgentFactory) agent = AgentFactory.create( name=agent["agent_name"], description=agent["agent_name"], - role=agent["agent_name"], + instructions=agent["agent_name"], llm_id=agent["llm_id"], tools=tools, ) @@ -143,7 +143,7 @@ def test_draft_team_agent_update(run_input_map, TeamAgentFactory): agent = AgentFactory.create( name=agent["agent_name"], description=agent["agent_name"], - role=agent["agent_name"], + instructions=agent["agent_name"], llm_id=agent["llm_id"], tools=tools, ) @@ -171,7 +171,7 @@ def test_fail_non_existent_llm(TeamAgentFactory): AgentFactory.create( name="Test Agent", description="", - role="", + instructions="", llm_id="non_existent_llm", tools=[AgentFactory.create_model_tool(function=Function.TRANSLATION)], ) @@ -203,7 +203,7 @@ def test_add_remove_agents_from_team_agent(run_input_map, delete_agents_and_team agent = AgentFactory.create( name=agent["agent_name"], description=agent["agent_name"], - role=agent["agent_name"], + instructions=agent["agent_name"], llm_id=agent["llm_id"], tools=tools, ) @@ -223,7 +223,7 @@ def test_add_remove_agents_from_team_agent(run_input_map, delete_agents_and_team new_agent = AgentFactory.create( name="New Agent", description="Agent added to team", - role="Agent added to team", + instructions="Agent added to team", llm_id=run_input_map["llm_id"], ) team_agent.agents.append(new_agent) @@ -290,7 +290,7 @@ def test_team_agent_with_parameterized_agents(delete_agents_and_team_agents): search_agent = AgentFactory.create( name="Search Agent", description="This agent is used to search for information in the web.", - role="Agent that performs searches", + instructions="Agent that performs searches", llm_id="677c16166eb563bb611623c1", tools=[search_tool], ) @@ -307,7 +307,7 @@ def test_team_agent_with_parameterized_agents(delete_agents_and_team_agents): translation_agent = AgentFactory.create( name="Translation Agent", description="This agent is used to translate text from one language to another.", - role="Agent that performs translations", + instructions="Agent that performs translations", llm_id="677c16166eb563bb611623c1", tools=[translation_tool], ) diff --git a/tests/unit/agent/agent_test.py b/tests/unit/agent/agent_test.py index 65ad6a79..2685be77 100644 --- a/tests/unit/agent/agent_test.py +++ b/tests/unit/agent/agent_test.py @@ -86,7 +86,7 @@ def test_invalid_pipelinetool(): AgentFactory.create( name="Test", description="Test Description", - role="Test Role", + instructions="Test Role", tools=[PipelineTool(pipeline="309851793", description="Test")], llm_id="6646261c6eb563165658bbb1", ) @@ -101,13 +101,13 @@ def test_invalid_modeltool(): def test_invalid_llm_id(): with pytest.raises(Exception) as exc_info: - AgentFactory.create(name="Test", description="", role="", tools=[], llm_id="123") + AgentFactory.create(name="Test", description="", instructions="", tools=[], llm_id="123") assert str(exc_info.value) == "Large Language Model with ID '123' not found." def test_invalid_agent_name(): with pytest.raises(Exception) as exc_info: - AgentFactory.create(name="[Test]", description="", role="", tools=[], llm_id="6646261c6eb563165658bbb1") + AgentFactory.create(name="[Test]", description="", instructions="", tools=[], llm_id="6646261c6eb563165658bbb1") assert ( str(exc_info.value) == "Agent Creation Error: Agent name contains invalid characters. Only alphanumeric characters, spaces, hyphens, and brackets are allowed." @@ -188,7 +188,7 @@ def test_create_agent(mock_model_factory_get): agent = AgentFactory.create( name="Test Agent(-)", description="Test Agent Description", - role="Test Agent Role", + instructions="Test Agent Role", llm_id="6646261c6eb563165658bbb1", tools=[ AgentFactory.create_model_tool( @@ -203,7 +203,7 @@ def test_create_agent(mock_model_factory_get): assert agent.name == ref_response["name"] assert agent.description == ref_response["description"] - assert agent.role == ref_response["role"] + assert agent.instructions == ref_response["role"] assert agent.llm_id == ref_response["llmId"] assert agent.tools[0].function.value == ref_response["assets"][0]["function"] assert agent.tools[0].description == ref_response["assets"][0]["description"] @@ -221,7 +221,7 @@ def test_to_dict(): id="", name="Test Agent(-)", description="Test Agent Description", - role="Test Agent Role", + instructions="Test Agent Role", llm_id="6646261c6eb563165658bbb1", tools=[AgentFactory.create_model_tool(function="text-generation")], api_key="test_api_key", @@ -254,7 +254,7 @@ def test_update_success(mock_model_factory_get): id="123", name="Test Agent(-)", description="Test Agent Description", - role="Test Agent Role", + instructions="Test Agent Role", llm_id="6646261c6eb563165658bbb1", tools=[AgentFactory.create_model_tool(function="text-generation")], ) @@ -307,7 +307,7 @@ def test_update_success(mock_model_factory_get): assert agent.id == ref_response["id"] assert agent.name == ref_response["name"] assert agent.description == ref_response["description"] - assert agent.role == ref_response["role"] + assert agent.instructions == ref_response["role"] assert agent.llm_id == ref_response["llmId"] assert agent.tools[0].function.value == ref_response["assets"][0]["function"] @@ -327,7 +327,7 @@ def test_save_success(mock_model_factory_get): id="123", name="Test Agent(-)", description="Test Agent Description", - role="Test Agent Role", + instructions="Test Agent Role", llm_id="6646261c6eb563165658bbb1", tools=[AgentFactory.create_model_tool(function="text-generation")], ) @@ -385,7 +385,7 @@ def test_save_success(mock_model_factory_get): assert agent.id == ref_response["id"] assert agent.name == ref_response["name"] assert agent.description == ref_response["description"] - assert agent.role == ref_response["role"] + assert agent.instructions == ref_response["role"] assert agent.llm_id == ref_response["llmId"] assert agent.tools[0].function.value == ref_response["assets"][0]["function"] @@ -442,7 +442,7 @@ def test_agent_api_key_propagation(): id="123", name="Test Agent", description="Test Description", - role="Test Agent Role", + instructions="Test Agent Role", tools=[tool], api_key=custom_api_key, ) @@ -456,7 +456,7 @@ def test_agent_api_key_propagation(): def test_agent_default_api_key(): """Test that the default api_key is used when none is provided""" tool = AgentFactory.create_model_tool(function="text-generation") - agent = Agent(id="123", name="Test Agent", description="Test Description", role="Test Agent Role", tools=[tool]) + agent = Agent(id="123", name="Test Agent", description="Test Description", instructions="Test Agent Role", tools=[tool]) # Check that the agent has the default api_key assert agent.api_key == config.TEAM_API_KEY @@ -476,7 +476,12 @@ def test_agent_multiple_tools_api_key(): ] agent = Agent( - id="123", name="Test Agent", description="Test Description", role="Test Agent Role", tools=tools, api_key=custom_api_key + id="123", + name="Test Agent", + description="Test Description", + instructions="Test Agent Role", + tools=tools, + api_key=custom_api_key, ) # Check that all tools received the agent's api_key @@ -487,7 +492,9 @@ def test_agent_multiple_tools_api_key(): def test_agent_api_key_in_requests(): """Test that the api_key is properly used in API requests""" custom_api_key = "custom_test_key" - agent = Agent(id="123", name="Test Agent", description="Test Description", role="Test Agent Role", api_key=custom_api_key) + agent = Agent( + id="123", name="Test Agent", description="Test Description", instructions="Test Agent Role", api_key=custom_api_key + ) with requests_mock.Mocker() as mock: url = agent.url diff --git a/tests/unit/team_agent_test.py b/tests/unit/team_agent_test.py index c6c44958..5f54e1c3 100644 --- a/tests/unit/team_agent_test.py +++ b/tests/unit/team_agent_test.py @@ -82,7 +82,7 @@ def test_to_dict(): id="", name="Test Agent(-)", description="Test Agent Description", - role="Test Agent Role", + instructions="Test Agent Role", llm_id="6646261c6eb563165658bbb1", tools=[ModelTool(function="text-generation")], ) @@ -160,7 +160,7 @@ def test_create_team_agent(mock_model_factory_get): agent = AgentFactory.create( name="Test Agent(-)", description="Test Agent Description", - role="Test Agent Role", + instructions="Test Agent Role", llm_id="6646261c6eb563165658bbb1", tools=[ModelTool(model="6646261c6eb563165658bbb1")], ) @@ -234,7 +234,7 @@ def test_build_team_agent(mocker): id="agent1", name="Test Agent 1", description="Test Agent Description", - role="Test Agent Role", + instructions="Test Agent Role", llm_id="6646261c6eb563165658bbb1", tools=[ModelTool(model="6646261c6eb563165658bbb1")], tasks=[ @@ -251,7 +251,7 @@ def test_build_team_agent(mocker): id="agent2", name="Test Agent 2", description="Test Agent Description", - role="Test Agent Role", + instructions="Test Agent Role", llm_id="6646261c6eb563165658bbb1", tools=[ModelTool(model="6646261c6eb563165658bbb1")], tasks=[ From f74a27f2d8cf1baadca22b5dc9764ecba033afba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20G=C3=BCnd=C3=BCz?= Date: Thu, 13 Feb 2025 12:53:32 +0300 Subject: [PATCH 07/18] added validate check when s3 link (#399) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * MErge to prod (#340) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Merge dev to test (#107) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Development to Test (#109) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> * Merge to test (#111) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Update Finetuner functional tests (#112) * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#118) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Merge to test (#124) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Merge dev to test (#126) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Add new LLMs finetuner models (mistral and solar) (#128) * Merge dev to test (#129) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira * Merge to test (#135) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira * Update FineTune unit and functional tests (#136) * Merge dev to test (#137) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira * Update FineTune unit and functional tests (#136) --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira * Click fix (#140) * Merge to prod (#119) * Merge dev to test (#107) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Development to Test (#109) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> * Merge to test (#111) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#118) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mik… * Test 2 Prod (#343) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Merge dev to test (#107) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Development to Test (#109) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> * Merge to test (#111) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Update Finetuner functional tests (#112) * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#118) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Merge to test (#124) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Merge dev to test (#126) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Add new LLMs finetuner models (mistral and solar) (#128) * Merge dev to test (#129) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira * Merge to test (#135) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira * Update FineTune unit and functional tests (#136) * Merge dev to test (#137) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira * Update FineTune unit and functional tests (#136) --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira * Click fix (#140) * Merge to prod (#119) * Merge dev to test (#107) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Development to Test (#109) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> * Merge to test (#111) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#118) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikel… * Merge to prod (#368) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Merge dev to test (#107) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Development to Test (#109) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> * Merge to test (#111) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Update Finetuner functional tests (#112) * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#118) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Merge to test (#124) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Merge dev to test (#126) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Add new LLMs finetuner models (mistral and solar) (#128) * Merge dev to test (#129) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira * Merge to test (#135) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira * Update FineTune unit and functional tests (#136) * Merge dev to test (#137) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira * Update FineTune unit and functional tests (#136) --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira * Click fix (#140) * Merge to prod (#119) * Merge dev to test (#107) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Development to Test (#109) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> * Merge to test (#111) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#118) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mik… * Merge to prod (#392) * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Merge dev to test (#126) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Add new LLMs finetuner models (mistral and solar) (#128) * Merge dev to test (#129) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira * Merge to test (#135) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira * Update FineTune unit and functional tests (#136) * Merge dev to test (#137) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira * Update Finetuner hyperparameters (#125) * Update Finetuner hyperparameters * Change hyperparameters error message * Add new LLMs finetuner models (mistral and solar) (#128) * Enabling dataset ID and model ID as parameters for finetuner creation (#131) Co-authored-by: Thiago Castro Ferreira * Fix supplier representation of a model (#132) * Fix supplier representation of a model * Fixing parameter typing --------- Co-authored-by: Thiago Castro Ferreira * Fixing indentation in documentation sample code (#134) Co-authored-by: Thiago Castro Ferreira * Update FineTune unit and functional tests (#136) --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira * Click fix (#140) * Merge to prod (#119) * Merge dev to test (#107) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Development to Test (#109) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> * Merge to test (#111) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#118) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> * Merge to prod. (#130) * Merge dev to test (#107) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Development to Test (#109) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> * Merge to test (#111) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) --------- Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#118) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Merge to test (#124) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key parameter in data asset creation (#122) Co-authored-by: Thiago Castro Ferreira --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira * Merge dev to test (#126) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) * Hf deployment test (#115) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Hf deployment test (#117) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain * Merge dev to test (#113) * Create bounds for FineTune hyperparameters (#103) * Test bound to hyperparameters * Update finetune llm hyperparameters * Remove option to use PEFT, always on use now * Fixing pipeline general asset test (#106) * Update Finetuner functional tests (#112) --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Hf deployment test (#114) * Started adding Hugging Face deployment to aiXplain SDK Signed-off-by: mikelam-us-aixplain * Added model status function to SDK Signed-off-by: mikelam-us-aixplain * Updating Signed-off-by: mikelam-us-aixplain * Updated CLI Signed-off-by: mikelam-us * Adding CLI Signed-off-by: mikelam-us-aixplain * Corrected request error Signed-off-by: mikelam-us-aixplain * Clearing out unnecessary information in return Signed-off-by: mikelam-us-aixplain * Adding status Signed-off-by: mikelam-us-aixplain * Simplifying status Signed-off-by: mikelam-us-aixplain * Adding tests and correcting tokens Signed-off-by: mikelam-us-aixplain * Added bad repo ID test Signed-off-by: mikelam-us-aixplain * Finished rough draft of tests Signed-off-by: mikelam-us-aixplain * Adding tests Signed-off-by: mikelam-us-aixplain * Fixing hf token Signed-off-by: mikelam-us-aixplain * Adding hf token Signed-off-by: mikelam-us-aixplain * Correcting first test Signed-off-by: mikelam-us-aixplain * Testing Signed-off-by: mikelam-us-aixplain * Adding config Signed-off-by: mikelam-us-aixplain * Added user doc Signed-off-by: mikelam-us-aixplain * Added gated model test Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us * Adding HF token Signed-off-by: mikelam-us-aixplain --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> * Do not download textual URLs (#120) * Do not download textual URLs * Treat as string --------- Co-authored-by: Thiago Castro Ferreira * Enable api key pa… * Role to Instructions (#394) * Use user API key to list models when provided (#397) * BUG-380: api key list model id main (#398) * Use user API key to list models when provided * Role to Instructions * added validate check when s3 link * removed download method --------- Signed-off-by: mikelam-us-aixplain Signed-off-by: mikelam-us Signed-off-by: Michael Lam Signed-off-by: root Co-authored-by: ikxplain <88332269+ikxplain@users.noreply.github.com> Co-authored-by: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Co-authored-by: mikelam-us-aixplain <131073216+mikelam-us-aixplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira Co-authored-by: Shreyas Sharma <85180538+shreyasXplain@users.noreply.github.com> Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira Co-authored-by: Thiago Castro Ferreira Co-authored-by: Hadi Nasrallah <87204330+hadi-aix@users.noreply.github.com> Co-authored-by: Lucas Pavanelli Co-authored-by: kadirpekel Co-authored-by: kadir pekel Co-authored-by: root Co-authored-by: Zaina Abu Shaban Co-authored-by: xainaz Co-authored-by: xainaz Co-authored-by: Lucas Pavanelli Co-authored-by: ikxplain Co-authored-by: OsujiCC --- aixplain/factories/file_factory.py | 9 +++++---- .../modules/agent/tool/custom_python_code_tool.py | 9 +++++++-- aixplain/modules/model/utility_model.py | 1 + aixplain/utils/file_utils.py | 14 ++++++++------ tests/functional/pipelines/run_test.py | 2 +- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/aixplain/factories/file_factory.py b/aixplain/factories/file_factory.py index 1a29ac11..e37420cd 100644 --- a/aixplain/factories/file_factory.py +++ b/aixplain/factories/file_factory.py @@ -29,6 +29,7 @@ from aixplain.utils.file_utils import upload_data from typing import Any, Dict, Text, Union, Optional, List + MB_1 = 1048576 MB_25 = 26214400 MB_50 = 52428800 @@ -94,10 +95,10 @@ def check_storage_type(cls, input_link: Any) -> StorageType: if os.path.exists(input_link) is True and os.path.isfile(input_link) is True: return StorageType.FILE elif ( - input_link.startswith("s3://") - or input_link.startswith("http://") - or input_link.startswith("https://") - or validators.url(input_link) + input_link.startswith("s3://") # noqa + or input_link.startswith("http://") # noqa + or input_link.startswith("https://") # noqa + or validators.url(input_link) # noqa ): return StorageType.URL else: diff --git a/aixplain/modules/agent/tool/custom_python_code_tool.py b/aixplain/modules/agent/tool/custom_python_code_tool.py index c2c1024c..6e651eeb 100644 --- a/aixplain/modules/agent/tool/custom_python_code_tool.py +++ b/aixplain/modules/agent/tool/custom_python_code_tool.py @@ -23,6 +23,7 @@ from typing import Text, Union, Callable from aixplain.modules.agent.tool import Tool +import logging class CustomPythonCodeTool(Tool): @@ -42,9 +43,13 @@ def to_dict(self): } def validate(self): - from aixplain.modules.model.utils import parse_code + from aixplain.modules.model.utils import parse_code_decorated - self.code, _, description, name = parse_code(self.code) + if not str(self.code).startswith("s3://"): + self.code, _, description, name = parse_code_decorated(self.code) + else: + logging.info("Utility Model Already Exists, skipping code validation") + return # Set description from parsed code if not already set if not self.description or self.description.strip() == "": diff --git a/aixplain/modules/model/utility_model.py b/aixplain/modules/model/utility_model.py index 6a323f45..a7eab7a7 100644 --- a/aixplain/modules/model/utility_model.py +++ b/aixplain/modules/model/utility_model.py @@ -222,6 +222,7 @@ def update(self): DeprecationWarning, stacklevel=2, ) + self.validate() url = urljoin(self.backend_url, f"sdk/utilities/{self.id}") headers = {"x-api-key": f"{self.api_key}", "Content-Type": "application/json"} diff --git a/aixplain/utils/file_utils.py b/aixplain/utils/file_utils.py index d39ca2b9..b1e16cf0 100644 --- a/aixplain/utils/file_utils.py +++ b/aixplain/utils/file_utils.py @@ -146,14 +146,16 @@ def upload_data( bucket_name = re.findall(r"https://(.*?).s3.amazonaws.com", presigned_url)[0] s3_link = f"s3://{bucket_name}/{path}" return s3_link - except Exception as e: + except Exception: if nattempts > 0: return upload_data(file_name, content_type, content_encoding, nattempts - 1) else: raise Exception("File Uploading Error: Failure on Uploading to S3.") -def s3_to_csv(s3_url: Text, aws_credentials: Optional[Dict[Text, Text]] = {"AWS_ACCESS_KEY_ID": None, "AWS_SECRET_ACCESS_KEY": None}) -> Text: +def s3_to_csv( + s3_url: Text, aws_credentials: Optional[Dict[Text, Text]] = {"AWS_ACCESS_KEY_ID": None, "AWS_SECRET_ACCESS_KEY": None} +) -> Text: """Convert s3 url to a csv file and download the file in `download_path` Args: @@ -179,11 +181,11 @@ def s3_to_csv(s3_url: Text, aws_credentials: Optional[Dict[Text, Text]] = {"AWS_ aws_secret_access_key = aws_credentials.get("AWS_SECRET_ACCESS_KEY") or os.getenv("AWS_SECRET_ACCESS_KEY") s3 = boto3.client("s3", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key) response = s3.list_objects_v2(Bucket=bucket_name, Prefix=prefix) - except NoCredentialsError as e: + except NoCredentialsError: raise Exception( "to use the s3 bucket option you need to set the right AWS credentials [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY]" ) - except Exception as e: + except Exception: raise Exception("the bucket you are trying to use does not exist") try: @@ -222,10 +224,10 @@ def s3_to_csv(s3_url: Text, aws_credentials: Optional[Dict[Text, Text]] = {"AWS_ main_file_name = Path(data[first_key][i]).stem for val in data.values(): if Path(val[i]).stem != main_file_name: - raise Exception(f"all the files in different directories should have the same prefix") + raise Exception("all the files in different directories should have the same prefix") elif prefix == "": - raise Exception(f"ERROR the files can't be at the root of the bucket ") + raise Exception("ERROR the files can't be at the root of the bucket ") else: data = {prefix: [f"s3://{bucket_name}/{file}" for file in files]} diff --git a/tests/functional/pipelines/run_test.py b/tests/functional/pipelines/run_test.py index 8e7e47ff..e5b8bcdf 100644 --- a/tests/functional/pipelines/run_test.py +++ b/tests/functional/pipelines/run_test.py @@ -340,7 +340,6 @@ def test_run_diarization(version: str, PipelineFactory): assert len(d["segments"]) > 0 assert d["segments"][0]["success"] is True - @pytest.mark.parametrize("version", ["3.0"]) @pytest.mark.parametrize("PipelineFactory", [PipelineFactory, v2.Pipeline]) def test_run_failure(version: str, PipelineFactory): @@ -353,3 +352,4 @@ def test_run_failure(version: str, PipelineFactory): ) assert response["status"] == "ERROR" + From b7d353889b189f10bde2df98edc693afb433e4fb Mon Sep 17 00:00:00 2001 From: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Date: Mon, 17 Feb 2025 14:36:42 -0300 Subject: [PATCH 08/18] ENG-1392: SQL tool in Agents (#400) * SQL Tool feature * Function tests for sql tool * Enable multiple tables and constraint size of SQLite file * Enable more than one table * Constrain the size of the database * Enable commit on SQL tool * Improving SQL tool functional test --- aixplain/factories/agent_factory/__init__.py | 24 +++++ aixplain/factories/agent_factory/utils.py | 11 +++ aixplain/factories/file_factory.py | 13 ++- aixplain/modules/agent/tool/sql_tool.py | 92 +++++++++++++++++++ aixplain/v2/agent.py | 37 +++++--- .../functional/agent/agent_functional_test.py | 38 ++++++++ tests/unit/agent/sql_tool_test.py | 25 +++++ 7 files changed, 223 insertions(+), 17 deletions(-) create mode 100644 aixplain/modules/agent/tool/sql_tool.py create mode 100644 tests/unit/agent/sql_tool_test.py diff --git a/aixplain/factories/agent_factory/__init__.py b/aixplain/factories/agent_factory/__init__.py index 1d75a2f8..e1f18a36 100644 --- a/aixplain/factories/agent_factory/__init__.py +++ b/aixplain/factories/agent_factory/__init__.py @@ -32,6 +32,7 @@ from aixplain.modules.agent.tool.pipeline_tool import PipelineTool from aixplain.modules.agent.tool.python_interpreter_tool import PythonInterpreterTool from aixplain.modules.agent.tool.custom_python_code_tool import CustomPythonCodeTool +from aixplain.modules.agent.tool.sql_tool import SQLTool from aixplain.modules.model import Model from aixplain.modules.pipeline import Pipeline from aixplain.utils import config @@ -188,6 +189,29 @@ def create_custom_python_code_tool(cls, code: Union[Text, Callable], description """Create a new custom python code tool.""" return CustomPythonCodeTool(description=description, code=code) + @classmethod + def create_sql_tool( + cls, + description: Text, + database: Text, + schema: Optional[Text] = None, + tables: Optional[List[Text]] = None, + enable_commit: bool = False, + ) -> SQLTool: + """Create a new SQL tool + + Args: + description (Text): description of the database tool + database (Text): URL/local path of the SQLite database file + schema (Optional[Text], optional): database schema description (optional) + tables (Optional[List[Text]], optional): table names to work with (optional) + enable_commit (bool, optional): enable to modify the database (optional) + + Returns: + SQLTool: created SQLTool + """ + return SQLTool(description=description, database=database, schema=schema, tables=tables, enable_commit=enable_commit) + @classmethod def list(cls) -> Dict: """List all agents available in the platform.""" diff --git a/aixplain/factories/agent_factory/utils.py b/aixplain/factories/agent_factory/utils.py index 7efebc56..6b96b8a9 100644 --- a/aixplain/factories/agent_factory/utils.py +++ b/aixplain/factories/agent_factory/utils.py @@ -9,6 +9,7 @@ from aixplain.modules.agent.tool.pipeline_tool import PipelineTool from aixplain.modules.agent.tool.python_interpreter_tool import PythonInterpreterTool from aixplain.modules.agent.tool.custom_python_code_tool import CustomPythonCodeTool +from aixplain.modules.agent.tool.sql_tool import SQLTool from typing import Dict, Text from urllib.parse import urljoin @@ -45,6 +46,16 @@ def build_agent(payload: Dict, api_key: Text = config.TEAM_API_KEY) -> Agent: tool = CustomPythonCodeTool(description=tool["description"], code=tool["utilityCode"]) else: tool = PythonInterpreterTool() + elif tool["type"] == "sql": + parameters = {parameter["name"]: parameter["value"] for parameter in tool.get("parameters", [])} + database = parameters.get("database") + schema = parameters.get("schema") + tables = parameters.get("tables", None) + tables = tables.split(",") if tables is not None else None + enable_commit = parameters.get("enable_commit", False) + tool = SQLTool( + description=tool["description"], database=database, schema=schema, tables=tables, enable_commit=enable_commit + ) else: raise Exception("Agent Creation Error: Tool type not supported.") tools.append(tool) diff --git a/aixplain/factories/file_factory.py b/aixplain/factories/file_factory.py index e37420cd..b4701653 100644 --- a/aixplain/factories/file_factory.py +++ b/aixplain/factories/file_factory.py @@ -66,8 +66,17 @@ def upload( else: content_type = mime_type - type_to_max_size = {"audio": MB_50, "application": MB_25, "video": MB_300, "image": MB_25, "other": MB_50} - if mime_type is None or mime_type.split("/")[0] not in type_to_max_size: + type_to_max_size = { + "audio": MB_50, + "application": MB_25, + "video": MB_300, + "image": MB_25, + "other": MB_50, + "database": MB_300, + } + if local_path.endswith(".db"): + ftype = "database" + elif mime_type is None or mime_type.split("/")[0] not in type_to_max_size: ftype = "other" else: ftype = mime_type.split("/")[0] diff --git a/aixplain/modules/agent/tool/sql_tool.py b/aixplain/modules/agent/tool/sql_tool.py new file mode 100644 index 00000000..eb2ebdde --- /dev/null +++ b/aixplain/modules/agent/tool/sql_tool.py @@ -0,0 +1,92 @@ +__author__ = "aiXplain" + +""" +Copyright 2024 The aiXplain SDK authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Author: Lucas Pavanelli and Thiago Castro Ferreira +Date: May 16th 2024 +Description: + Agentification Class +""" +import os +import validators +from typing import Text, Optional, Dict, List, Union + +from aixplain.modules.agent.tool import Tool + + +class SQLTool(Tool): + """Tool to execute SQL commands in an SQLite database. + + Attributes: + description (Text): description of the tool + database (Text): database name + schema (Text): database schema description + tables (Optional[Union[List[Text], Text]]): table names to work with (optional) + enable_commit (bool): enable to modify the database (optional) + """ + + def __init__( + self, + description: Text, + database: Text, + schema: Text, + tables: Optional[Union[List[Text], Text]] = None, + enable_commit: bool = False, + **additional_info, + ) -> None: + """Tool to execute SQL query commands in an SQLite database. + + Args: + description (Text): description of the tool + database (Text): database name + schema (Text): database schema description + tables (Optional[Union[List[Text], Text]]): table names to work with (optional) + enable_commit (bool): enable to modify the database (optional) + """ + super().__init__("", description, **additional_info) + self.database = database + self.schema = schema + self.tables = tables if isinstance(tables, list) else [tables] if tables else None + self.enable_commit = enable_commit + + def to_dict(self) -> Dict[str, Text]: + return { + "description": self.description, + "parameters": [ + {"name": "database", "value": self.database}, + {"name": "schema", "value": self.schema}, + {"name": "tables", "value": ",".join(self.tables) if self.tables is not None else None}, + {"name": "enable_commit", "value": self.enable_commit}, + ], + "type": "sql", + } + + def validate(self): + from aixplain.factories.file_factory import FileFactory + + assert self.description and self.description.strip() != "", "SQL Tool Error: Description is required" + assert self.database and self.database.strip() != "", "SQL Tool Error: Database is required" + if not ( + str(self.database).startswith("s3://") + or str(self.database).startswith("http://") + or str(self.database).startswith("https://") + or validators.url(self.database) + ): + if not os.path.exists(self.database): + raise Exception(f"SQL Tool Error: Database '{self.database}' does not exist") + if not self.database.endswith(".db"): + raise Exception(f"SQL Tool Error: Database '{self.database}' must have .db extension") + self.database = FileFactory.upload(local_path=self.database, is_temp=True) diff --git a/aixplain/v2/agent.py b/aixplain/v2/agent.py index 90639069..9f5f91ae 100644 --- a/aixplain/v2/agent.py +++ b/aixplain/v2/agent.py @@ -5,6 +5,7 @@ TYPE_CHECKING, Callable, NotRequired, + Optional, ) from .resource import ( @@ -27,7 +28,7 @@ PythonInterpreterTool, ) from aixplain.modules.agent.tool.custom_python_code_tool import CustomPythonCodeTool - + from aixplain.modules.agent.tool.sql_tool import SQLTool from .enums import Function @@ -97,20 +98,14 @@ def create_model_tool( ): from aixplain.factories import AgentFactory - return AgentFactory.create_model_tool( - model=model, function=function, supplier=supplier, description=description - ) + return AgentFactory.create_model_tool(model=model, function=function, supplier=supplier, description=description) @classmethod - def create_pipeline_tool( - cls, description: str, pipeline: Union["Pipeline", str] - ) -> "PipelineTool": + def create_pipeline_tool(cls, description: str, pipeline: Union["Pipeline", str]) -> "PipelineTool": """Create a new pipeline tool.""" from aixplain.factories import AgentFactory - return AgentFactory.create_pipeline_tool( - description=description, pipeline=pipeline - ) + return AgentFactory.create_pipeline_tool(description=description, pipeline=pipeline) @classmethod def create_python_interpreter_tool(cls) -> "PythonInterpreterTool": @@ -120,12 +115,24 @@ def create_python_interpreter_tool(cls) -> "PythonInterpreterTool": return AgentFactory.create_python_interpreter_tool() @classmethod - def create_custom_python_code_tool( - cls, code: Union[str, Callable], description: str = "" - ) -> "CustomPythonCodeTool": + def create_custom_python_code_tool(cls, code: Union[str, Callable], description: str = "") -> "CustomPythonCodeTool": """Create a new custom python code tool.""" from aixplain.factories import AgentFactory - return AgentFactory.create_custom_python_code_tool( - code=code, description=description + return AgentFactory.create_custom_python_code_tool(code=code, description=description) + + @classmethod + def create_sql_tool( + cls, + description: str, + database: str, + schema: Optional[str] = None, + tables: Optional[List[str]] = None, + enable_commit: bool = False, + ) -> "SQLTool": + """Create a new SQL tool.""" + from aixplain.factories import AgentFactory + + return AgentFactory.create_sql_tool( + description=description, database=database, schema=schema, tables=tables, enable_commit=enable_commit ) diff --git a/tests/functional/agent/agent_functional_test.py b/tests/functional/agent/agent_functional_test.py index e2d5cc2c..1446af5a 100644 --- a/tests/functional/agent/agent_functional_test.py +++ b/tests/functional/agent/agent_functional_test.py @@ -345,3 +345,41 @@ def test_specific_model_parameters_e2e(tool_config): tool_used = True break assert tool_used, "Tool was not used in execution" + + +@pytest.mark.parametrize("AgentFactory", [AgentFactory, v2.Agent]) +def test_sql_tool(delete_agents_and_team_agents, AgentFactory): + assert delete_agents_and_team_agents + import os + + with open("ftest.db", "w") as f: + f.write("") + + tool = AgentFactory.create_sql_tool( + description="Execute an SQL query and return the result", database="ftest.db", enable_commit=True + ) + assert tool is not None + assert tool.description == "Execute an SQL query and return the result" + agent = AgentFactory.create( + name="Teste", + description="You are a test agent that search for employee information in a database", + tools=[tool], + ) + assert agent is not None + response = agent.run("Create a table called Person with the following columns: id, name, age, salary, department") + assert response is not None + assert response["completed"] is True + assert response["status"].lower() == "success" + + response = agent.run("Insert the following data into the Person table: 1, Eve, 30, 50000, Sales") + assert response is not None + assert response["completed"] is True + assert response["status"].lower() == "success" + + response = agent.run("What is the name of the employee with the highest salary?") + assert response is not None + assert response["completed"] is True + assert response["status"].lower() == "success" + assert "eve" in str(response["data"]["output"]).lower() + + os.remove("ftest.db") diff --git a/tests/unit/agent/sql_tool_test.py b/tests/unit/agent/sql_tool_test.py new file mode 100644 index 00000000..074cfcbe --- /dev/null +++ b/tests/unit/agent/sql_tool_test.py @@ -0,0 +1,25 @@ +from aixplain.factories import AgentFactory +from aixplain.modules.agent.tool.sql_tool import SQLTool + + +def test_create_sql_tool(mocker): + tool = AgentFactory.create_sql_tool(description="Test", database="test.db", schema="test", tables=["test", "test2"]) + assert isinstance(tool, SQLTool) + assert tool.description == "Test" + assert tool.database == "test.db" + assert tool.schema == "test" + assert tool.tables == ["test", "test2"] + + tool_dict = tool.to_dict() + assert tool_dict["description"] == "Test" + assert tool_dict["parameters"] == [ + {"name": "database", "value": "test.db"}, + {"name": "schema", "value": "test"}, + {"name": "tables", "value": "test,test2"}, + {"name": "enable_commit", "value": False}, + ] + + mocker.patch("aixplain.factories.file_factory.FileFactory.upload", return_value="s3://test.db") + mocker.patch("os.path.exists", return_value=True) + tool.validate() + assert tool.database == "s3://test.db" From e53e7af43875a5ede09f34fcce27d244abada065 Mon Sep 17 00:00:00 2001 From: OsujiCC Date: Wed, 19 Feb 2025 16:01:24 -0500 Subject: [PATCH 09/18] Eng 1627: Enable mentalist without inspector (#408) * Enable mentalist w/o inspector * Update unit tests * use_mentalist_and_inspector False by default and removed from TeamAgent * Minor updates * Check whether planner/inspectorId field exist --------- Co-authored-by: Yunsu Kim Co-authored-by: Thiago Castro Ferreira --- .../factories/team_agent_factory/__init__.py | 19 +++++++++++++------ .../factories/team_agent_factory/utils.py | 3 ++- aixplain/modules/team_agent/__init__.py | 10 +++++++--- tests/unit/team_agent_test.py | 13 ++++++++++--- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/aixplain/factories/team_agent_factory/__init__.py b/aixplain/factories/team_agent_factory/__init__.py index ea145d9a..3fdb0855 100644 --- a/aixplain/factories/team_agent_factory/__init__.py +++ b/aixplain/factories/team_agent_factory/__init__.py @@ -45,8 +45,9 @@ def create( api_key: Text = config.TEAM_API_KEY, supplier: Union[Dict, Text, Supplier, int] = "aiXplain", version: Optional[Text] = None, + use_mentalist: bool = True, use_inspector: bool = True, - use_mentalist_and_inspector: bool = True, + use_mentalist_and_inspector: bool = False, # TODO: remove this ) -> TeamAgent: """Create a new team agent in the platform.""" assert len(agents) > 0, "TeamAgent Onboarding Error: At least one agent must be provided." @@ -63,9 +64,15 @@ def create( assert isinstance(agent, Agent), "TeamAgent Onboarding Error: Agents must be instances of Agent class" - mentalist_and_inspector_llm_id = None - if use_inspector or use_mentalist_and_inspector: - mentalist_and_inspector_llm_id = llm_id + if use_inspector and not use_mentalist: + raise Exception("TeamAgent Onboarding Error: To use the Inspector agent, you must enable Mentalist.") + + if use_mentalist_and_inspector: + mentalist_llm_id = llm_id + inspector_llm_id = llm_id + else: + mentalist_llm_id = llm_id if use_mentalist else None + inspector_llm_id = llm_id if use_inspector else None team_agent = None url = urljoin(config.BACKEND_URL, "sdk/agent-communities") @@ -87,8 +94,8 @@ def create( "description": description, "llmId": llm_id, "supervisorId": llm_id, - "plannerId": mentalist_and_inspector_llm_id, - "inspectorId": mentalist_and_inspector_llm_id, + "plannerId": mentalist_llm_id, + "inspectorId": inspector_llm_id, "supplier": supplier, "version": version, "status": "draft", diff --git a/aixplain/factories/team_agent_factory/utils.py b/aixplain/factories/team_agent_factory/utils.py index 72afa1d1..f10e6953 100644 --- a/aixplain/factories/team_agent_factory/utils.py +++ b/aixplain/factories/team_agent_factory/utils.py @@ -28,7 +28,8 @@ def build_team_agent(payload: Dict, api_key: Text = config.TEAM_API_KEY) -> Team version=payload.get("version", None), cost=payload.get("cost", None), llm_id=payload.get("llmId", GPT_4o_ID), - use_mentalist_and_inspector=True if payload["plannerId"] is not None else False, + use_mentalist=True if payload.get("plannerId", None) is not None else False, + use_inspector=True if payload.get("inspectorId", None) is not None else False, api_key=api_key, status=AssetStatus(payload["status"]), ) diff --git a/aixplain/modules/team_agent/__init__.py b/aixplain/modules/team_agent/__init__.py index edb737d4..861d53a8 100644 --- a/aixplain/modules/team_agent/__init__.py +++ b/aixplain/modules/team_agent/__init__.py @@ -72,7 +72,8 @@ def __init__( supplier: Union[Dict, Text, Supplier, int] = "aiXplain", version: Optional[Text] = None, cost: Optional[Dict] = None, - use_mentalist_and_inspector: bool = True, + use_mentalist: bool = True, + use_inspector: bool = True, status: AssetStatus = AssetStatus.DRAFT, **additional_info, ) -> None: @@ -95,7 +96,9 @@ def __init__( self.additional_info = additional_info self.agents = agents self.llm_id = llm_id - self.use_mentalist_and_inspector = use_mentalist_and_inspector + self.use_mentalist = use_mentalist + self.use_inspector = use_inspector + if isinstance(status, str): try: status = AssetStatus(status) @@ -289,7 +292,8 @@ def to_dict(self) -> Dict: "description": self.description, "llmId": self.llm_id, "supervisorId": self.llm_id, - "plannerId": self.llm_id if self.use_mentalist_and_inspector else None, + "plannerId": self.llm_id if self.use_mentalist else None, + "inspectorId": self.llm_id if self.use_inspector else None, "supplier": self.supplier.value["code"] if isinstance(self.supplier, Supplier) else self.supplier, "version": self.version, "status": self.status.value, diff --git a/tests/unit/team_agent_test.py b/tests/unit/team_agent_test.py index 5f54e1c3..a456b980 100644 --- a/tests/unit/team_agent_test.py +++ b/tests/unit/team_agent_test.py @@ -89,7 +89,8 @@ def test_to_dict(): ], description="Test Team Agent Description", llm_id="6646261c6eb563165658bbb1", - use_mentalist_and_inspector=False, + use_mentalist=False, + use_inspector=False, ) team_agent_dict = team_agent.to_dict() @@ -99,6 +100,7 @@ def test_to_dict(): assert team_agent_dict["llmId"] == "6646261c6eb563165658bbb1" assert team_agent_dict["supervisorId"] == "6646261c6eb563165658bbb1" assert team_agent_dict["plannerId"] is None + assert team_agent_dict["inspectorId"] is None assert len(team_agent_dict["agents"]) == 1 assert team_agent_dict["agents"][0]["assetId"] == "" assert team_agent_dict["agents"][0]["number"] == 0 @@ -182,6 +184,7 @@ def test_create_team_agent(mock_model_factory_get): "agents": [{"assetId": "123", "type": "AGENT", "number": 0, "label": "AGENT"}], "links": [], "plannerId": "6646261c6eb563165658bbb1", + "inspectorId": "6646261c6eb563165658bbb1", "supervisorId": "6646261c6eb563165658bbb1", "createdAt": "2024-10-28T19:30:25.344Z", "updatedAt": "2024-10-28T19:30:25.344Z", @@ -191,7 +194,8 @@ def test_create_team_agent(mock_model_factory_get): team_agent = TeamAgentFactory.create( name="TEST Multi agent(-)", description="TEST Multi agent", - use_mentalist_and_inspector=True, + use_mentalist=True, + use_inspector=True, llm_id="6646261c6eb563165658bbb1", agents=[agent], ) @@ -199,7 +203,8 @@ def test_create_team_agent(mock_model_factory_get): assert team_agent.name == team_ref_response["name"] assert team_agent.description == team_ref_response["description"] assert team_agent.llm_id == team_ref_response["llmId"] - assert team_agent.use_mentalist_and_inspector is True + assert team_agent.use_mentalist is True + assert team_agent.use_inspector is True assert team_agent.status == AssetStatus.DRAFT assert len(team_agent.agents) == 1 assert team_agent.agents[0].id == team_ref_response["agents"][0]["assetId"] @@ -216,6 +221,7 @@ def test_create_team_agent(mock_model_factory_get): "agents": [{"assetId": "123", "type": "AGENT", "number": 0, "label": "AGENT"}], "links": [], "plannerId": "6646261c6eb563165658bbb1", + "inspectorId": "6646261c6eb563165658bbb1", "supervisorId": "6646261c6eb563165658bbb1", "createdAt": "2024-10-28T19:30:25.344Z", "updatedAt": "2024-10-28T19:30:25.344Z", @@ -270,6 +276,7 @@ def get_mock(agent_id): "name": "Test Team Agent(-)", "description": "Test Team Agent Description", "plannerId": "6646261c6eb563165658bbb1", + "inspectorId": "6646261c6eb563165658bbb1", "llmId": "6646261c6eb563165658bbb1", "agents": [ {"assetId": "agent1"}, From c9a0f2b65c328c69e1ef31dde57a213951f1da1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20G=C3=BCnd=C3=BCz?= Date: Thu, 20 Feb 2025 00:03:52 +0300 Subject: [PATCH 10/18] overwrited the data field of parameters with s3 path (#405) --- aixplain/modules/model/utils.py | 1 + tests/functional/model/data/test_input.txt | 1 + tests/functional/model/run_model_test.py | 20 ++++++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 tests/functional/model/data/test_input.txt diff --git a/aixplain/modules/model/utils.py b/aixplain/modules/model/utils.py index 3af31048..7b494305 100644 --- a/aixplain/modules/model/utils.py +++ b/aixplain/modules/model/utils.py @@ -23,6 +23,7 @@ def build_payload(data: Union[Text, Dict], parameters: Optional[Dict] = None): payload = str(payload) payload = {"data": payload} except Exception: + parameters["data"] = data payload = {"data": data} payload.update(parameters) payload = json.dumps(payload) diff --git a/tests/functional/model/data/test_input.txt b/tests/functional/model/data/test_input.txt new file mode 100644 index 00000000..7bb1dcb0 --- /dev/null +++ b/tests/functional/model/data/test_input.txt @@ -0,0 +1 @@ +Hello! Here is a robot emoji: 🤖 Response should contain this emoji. \ No newline at end of file diff --git a/tests/functional/model/run_model_test.py b/tests/functional/model/run_model_test.py index c794face..d3d0082f 100644 --- a/tests/functional/model/run_model_test.py +++ b/tests/functional/model/run_model_test.py @@ -5,6 +5,7 @@ from aixplain.factories import ModelFactory from aixplain.modules import LLM from datetime import datetime, timedelta, timezone +from pathlib import Path def pytest_generate_tests(metafunc): @@ -74,3 +75,22 @@ def test_index_model(): assert "aixplain" in response.data.lower() assert index_model.count() == 1 index_model.delete() + + +def test_llm_run_with_file(): + """Testing LLM with local file input containing emoji""" + + # Create test file path + test_file_path = Path(__file__).parent / "data" / "test_input.txt" + + # Get a text generation model + llm_model = ModelFactory.get("674a17f6098e7d5b18453da7") # Llama 3.1 Nemotron 70B Instruct + + assert isinstance(llm_model, LLM) + + # Run model with file path + response = llm_model.run(data=str(test_file_path)) + + # Verify response + assert response["status"] == "SUCCESS" + assert "🤖" in response["data"], "Robot emoji should be present in the response" From 411f04dbf15be8f395c3acfd5d88e093af14c125 Mon Sep 17 00:00:00 2001 From: Zaina Abu Shaban Date: Thu, 20 Feb 2025 00:25:39 +0300 Subject: [PATCH 11/18] ENG-791: Pipeline Response Changes (#282) * Pipeline Response Changes * fixed pipeline response * added tests, fix for run sync left * finalized tests * legacy compatability pipeline response * draft * draft * changes * Added version parameter * ENG-791: several improvements along with getting functional tests work * ENG-791: fixed missing params in functional tests --------- Co-authored-by: Thiago Castro Ferreira Co-authored-by: Kadir Pekel Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> --- aixplain/enums/status.py | 8 + aixplain/modules/pipeline/asset.py | 265 ++++++++++------- aixplain/modules/pipeline/response.py | 51 ++++ pipeline_test2.ipynb | 304 ++++++++++++++++++++ tests/functional/pipelines/designer_test.py | 49 ++-- tests/functional/pipelines/run_test.py | 42 ++- tests/unit/pipeline_test.py | 142 +++++++-- 7 files changed, 681 insertions(+), 180 deletions(-) create mode 100644 aixplain/enums/status.py create mode 100644 aixplain/modules/pipeline/response.py create mode 100644 pipeline_test2.ipynb diff --git a/aixplain/enums/status.py b/aixplain/enums/status.py new file mode 100644 index 00000000..3c84f2be --- /dev/null +++ b/aixplain/enums/status.py @@ -0,0 +1,8 @@ +from enum import Enum +from typing import Text + + +class Status(Text, Enum): + FAILED = "failed" + IN_PROGRESS = "in_progress" + SUCCESS = "success" diff --git a/aixplain/modules/pipeline/asset.py b/aixplain/modules/pipeline/asset.py index f2deb9df..9fd48c70 100644 --- a/aixplain/modules/pipeline/asset.py +++ b/aixplain/modules/pipeline/asset.py @@ -26,11 +26,13 @@ import os import logging from aixplain.enums.asset_status import AssetStatus +from aixplain.enums.response_status import ResponseStatus from aixplain.modules.asset import Asset from aixplain.utils import config from aixplain.utils.file_utils import _request_with_retry from typing import Dict, Optional, Text, Union from urllib.parse import urljoin +from aixplain.modules.pipeline.response import PipelineResponse class Pipeline(Asset): @@ -107,33 +109,40 @@ def __polling( # TO DO: wait_time = to the longest path of the pipeline * minimum waiting time logging.debug(f"Polling for Pipeline: Start polling for {name} ") start, end = time.time(), time.time() - completed = False - response_body = {"status": "FAILED"} - while not completed and (end - start) < timeout: + response_body = {"status": ResponseStatus.FAILED, "completed": False} + + while not response_body["completed"] and (end - start) < timeout: try: response_body = self.poll(poll_url, name=name) - logging.debug(f"Polling for Pipeline: Status of polling for {name} : {response_body}") - completed = response_body["completed"] - + logging.debug( + f"Polling for Pipeline: Status of polling for {name} : {response_body}" + ) end = time.time() - if completed is False: + if not response_body["completed"]: time.sleep(wait_time) if wait_time < 60: wait_time *= 1.1 except Exception: logging.error(f"Polling for Pipeline: polling for {name} : Continue") - if response_body and response_body["status"] == "SUCCESS": + break + if response_body["status"] == ResponseStatus.SUCCESS: try: - logging.debug(f"Polling for Pipeline: Final status of polling for {name} : SUCCESS - {response_body}") + logging.debug( + f"Polling for Pipeline: Final status of polling for {name} : SUCCESS - {response_body}" + ) except Exception: - logging.error(f"Polling for Pipeline: Final status of polling for {name} : ERROR - {response_body}") + logging.error( + f"Polling for Pipeline: Final status of polling for {name} : ERROR - {response_body}" + ) else: logging.error( f"Polling for Pipeline: Final status of polling for {name} : No response in {timeout} seconds - {response_body}" ) return response_body - def poll(self, poll_url: Text, name: Text = "pipeline_process") -> Dict: + def poll( + self, poll_url: Text, name: Text = "pipeline_process", version: Text = "v2" + ) -> Union[Dict, PipelineResponse]: """Poll the platform to check whether an asynchronous call is done. Args: @@ -156,39 +165,27 @@ def poll(self, poll_url: Text, name: Text = "pipeline_process") -> Dict: resp["data"] = json.loads(resp["data"])["response"] except Exception: resp = r.json() - logging.info(f"Single Poll for Pipeline: Status of polling for {name} : {resp}") - except Exception: - resp = {"status": "FAILED"} - return resp - - def _should_fallback_to_v2(self, response: Dict, version: str) -> bool: - """Determine if the pipeline should fallback to version 2.0 based on the response. - - Args: - response (Dict): The response from the pipeline call. - version (str): The version of the pipeline being used. - - Returns: - bool: True if fallback is needed, False otherwise. - """ - # If the version is not 3.0, no fallback is needed - if version != self.VERSION_3_0: - return False - - should_fallback = False - if "status" not in response or response["status"] == "FAILED": - should_fallback = True - elif response["status"] == "SUCCESS" and ("data" not in response or not response["data"]): - should_fallback = True - # Check for conditions that require a fallback - - if should_fallback: - logging.warning( - f"Pipeline Run Error: Failed to run pipeline {self.id} with version {version}. " - f"Trying with version {self.VERSION_2_0}." + logging.info( + f"Single Poll for Pipeline: Status of polling for {name} : {resp}" ) + if version == "v1": + return resp + status = ResponseStatus(resp.pop("status", "failed")) + response = PipelineResponse( + status=status, + error=resp.pop("error", None), + elapsed_time=resp.pop("elapsed_time", 0), + **resp, + ) + return response - return should_fallback + except Exception: + return PipelineResponse( + status=ResponseStatus.FAILED, + error=resp.pop("error", None), + elapsed_time=resp.pop("elapsed_time", 0), + **resp, + ) def run( self, @@ -197,55 +194,63 @@ def run( name: Text = "pipeline_process", timeout: float = 20000.0, wait_time: float = 1.0, - batch_mode: bool = True, - version: str = None, + version: Text = "v2", **kwargs, - ) -> Dict: - """Runs a pipeline call. - - Args: - data (Union[Text, Dict]): link to the input data - data_asset (Optional[Union[Text, Dict]], optional): Data asset to be processed by the pipeline. Defaults to None. - name (Text, optional): ID given to a call. Defaults to "pipeline_process". - timeout (float, optional): total polling time. Defaults to 20000.0. - wait_time (float, optional): wait time in seconds between polling calls. Defaults to 1.0. - batch_mode (bool, optional): Whether to run the pipeline in batch mode or online. Defaults to True. - kwargs: A dictionary of keyword arguments. The keys are the argument names - - Returns: - Dict: parsed output from pipeline - """ - version = version or self.VERSION_3_0 + ) -> Union[Dict, PipelineResponse]: start = time.time() try: - response = self.run_async( - data, - data_asset=data_asset, - name=name, - batch_mode=batch_mode, - **kwargs, - ) - - if response["status"] == "FAILED": + response = self.run_async(data, data_asset=data_asset, name=name, **kwargs) + if response["status"] == ResponseStatus.FAILED: end = time.time() - response["elapsed_time"] = end - start - return response - + if version == "v1": + return { + "status": "failed", + "error": response.get("error", "ERROR"), + "elapsed_time": end - start, + **kwargs, + } + return PipelineResponse( + status=ResponseStatus.FAILED, + error={"error": response.get("error", "ERROR"), "status": "ERROR"}, + elapsed_time=end - start, + **kwargs, + ) poll_url = response["url"] + polling_response = self.__polling( + poll_url, name=name, timeout=timeout, wait_time=wait_time + ) end = time.time() - response = self.__polling(poll_url, name=name, timeout=timeout, wait_time=wait_time) - return response + status = ResponseStatus(polling_response["status"]) + if version == "v1": + polling_response["elapsed_time"] = end - start + return polling_response + status = ResponseStatus(polling_response.status) + return PipelineResponse( + status=status, + error=polling_response.error, + elapsed_time=end - start, + data=getattr(polling_response, "data", {}), + **kwargs, + ) + except Exception as e: error_message = f"Error in request for {name}: {str(e)}" logging.error(error_message) logging.exception(error_message) end = time.time() - return { - "status": "FAILED", - "error": error_message, - "elapsed_time": end - start, - "version": version, - } + if version == "v1": + return { + "status": "failed", + "error": error_message, + "elapsed_time": end - start, + **kwargs, + } + return PipelineResponse( + status=ResponseStatus.FAILED, + error={"error": error_message, "status": "ERROR"}, + elapsed_time=end - start, + **kwargs, + ) def __prepare_payload( self, @@ -284,7 +289,10 @@ def __prepare_payload( try: payload = json.loads(data) if isinstance(payload, dict) is False: - if isinstance(payload, int) is True or isinstance(payload, float) is True: + if ( + isinstance(payload, int) is True + or isinstance(payload, float) is True + ): payload = str(payload) payload = {"data": payload} except Exception: @@ -322,7 +330,9 @@ def __prepare_payload( asset_payload["dataAsset"]["dataset_id"] = dasset.id source_data_list = [ - dfield for dfield in dasset.source_data if dasset.source_data[dfield].id == data[node_label] + dfield + for dfield in dasset.source_data + if dasset.source_data[dfield].id == data[node_label] ] if len(source_data_list) > 0: @@ -390,14 +400,23 @@ def run_async( call_url = f"{self.url}/{self.id}" logging.info(f"Start service for {name} - {call_url} - {payload}") r = _request_with_retry("post", call_url, headers=headers, data=payload) - resp = None try: if 200 <= r.status_code < 300: resp = r.json() - logging.info(f"Result of request for {name} - {r.status_code} - {resp}") - poll_url = resp["url"] - response = {"status": "IN_PROGRESS", "url": poll_url} + logging.info( + f"Result of request for {name} - {r.status_code} - {resp}" + ) + if version == "v1": + return resp + res = PipelineResponse( + status=ResponseStatus(resp.pop("status", "failed")), + url=resp["url"], + elapsed_time=None, + **kwargs, + ) + return res + else: if r.status_code == 401: error = "Unauthorized API key: Please verify the spelling of the API key and its current validity." @@ -411,17 +430,36 @@ def run_async( error = "Validation-related error: Please ensure all required fields are provided and correctly formatted." else: status_code = str(r.status_code) - error = ( - f"Status {status_code}: Unspecified error: An unspecified error occurred while processing your request." - ) - response = {"status": "FAILED", "error_message": error} - logging.error(f"Error in request for {name} - {r.status_code}: {error}") - except Exception: - response = {"status": "FAILED"} - if resp is not None: - response["error"] = resp + error = f"Status {status_code}: Unspecified error: An unspecified error occurred while processing your request." - return response + logging.error(f"Error in request for {name} - {r.status_code}: {error}") + if version == "v1": + return { + "status": "failed", + "error": error, + "elapsed_time": None, + **kwargs, + } + return PipelineResponse( + status=ResponseStatus.FAILED, + error={"error": error, "status": "ERROR"}, + elapsed_time=None, + **kwargs, + ) + except Exception as e: + if version == "v1": + return { + "status": "failed", + "error": str(e), + "elapsed_time": None, + **kwargs, + } + return PipelineResponse( + status=ResponseStatus.FAILED, + error={"error": str(e), "status": "ERROR"}, + elapsed_time=None, + **kwargs, + ) def update( self, @@ -447,7 +485,8 @@ def update( stack = inspect.stack() if len(stack) > 2 and stack[1].function != "save": warnings.warn( - "update() is deprecated and will be removed in a future version. " "Please use save() instead.", + "update() is deprecated and will be removed in a future version. " + "Please use save() instead.", DeprecationWarning, stacklevel=2, ) @@ -462,7 +501,9 @@ def update( for i, node in enumerate(pipeline["nodes"]): if "functionType" in node: - pipeline["nodes"][i]["functionType"] = pipeline["nodes"][i]["functionType"].lower() + pipeline["nodes"][i]["functionType"] = pipeline["nodes"][i][ + "functionType" + ].lower() # prepare payload status = "draft" if save_as_asset is True: @@ -480,7 +521,9 @@ def update( "Authorization": f"Token {api_key}", "Content-Type": "application/json", } - logging.info(f"Start service for PUT Update Pipeline - {url} - {headers} - {json.dumps(payload)}") + logging.info( + f"Start service for PUT Update Pipeline - {url} - {headers} - {json.dumps(payload)}" + ) r = _request_with_retry("put", url, headers=headers, json=payload) response = r.json() logging.info(f"Pipeline {response['id']} Updated.") @@ -531,11 +574,15 @@ def save( ), "Pipeline Update Error: Make sure the pipeline to be saved is in a JSON file." with open(pipeline) as f: pipeline = json.load(f) - self.update(pipeline=pipeline, save_as_asset=save_as_asset, api_key=api_key) + self.update( + pipeline=pipeline, save_as_asset=save_as_asset, api_key=api_key + ) for i, node in enumerate(pipeline["nodes"]): if "functionType" in node: - pipeline["nodes"][i]["functionType"] = pipeline["nodes"][i]["functionType"].lower() + pipeline["nodes"][i]["functionType"] = pipeline["nodes"][i][ + "functionType" + ].lower() # prepare payload status = "draft" if save_as_asset is True: @@ -552,7 +599,9 @@ def save( "Authorization": f"Token {api_key}", "Content-Type": "application/json", } - logging.info(f"Start service for Save Pipeline - {url} - {headers} - {json.dumps(payload)}") + logging.info( + f"Start service for Save Pipeline - {url} - {headers} - {json.dumps(payload)}" + ) r = _request_with_retry("post", url, headers=headers, json=payload) response = r.json() self.id = response["id"] @@ -562,11 +611,17 @@ def save( def deploy(self, api_key: Optional[Text] = None) -> None: """Deploy the Pipeline.""" - assert self.status == "draft", "Pipeline Deployment Error: Pipeline must be in draft status." - assert self.status != "onboarded", "Pipeline Deployment Error: Pipeline must be onboarded." + assert ( + self.status == "draft" + ), "Pipeline Deployment Error: Pipeline must be in draft status." + assert ( + self.status != "onboarded" + ), "Pipeline Deployment Error: Pipeline must be onboarded." pipeline = self.to_dict() - self.update(pipeline=pipeline, save_as_asset=True, api_key=api_key, name=self.name) + self.update( + pipeline=pipeline, save_as_asset=True, api_key=api_key, name=self.name + ) self.status = AssetStatus.ONBOARDED def __repr__(self): diff --git a/aixplain/modules/pipeline/response.py b/aixplain/modules/pipeline/response.py new file mode 100644 index 00000000..deda345d --- /dev/null +++ b/aixplain/modules/pipeline/response.py @@ -0,0 +1,51 @@ +from dataclasses import dataclass +from typing import Any, Optional, Dict, Text +from aixplain.enums import ResponseStatus + + +@dataclass +class PipelineResponse: + def __init__( + self, + status: ResponseStatus, + error: Optional[Dict[str, Any]] = None, + elapsed_time: Optional[float] = 0.0, + data: Optional[Text] = None, + url: Optional[Text] = "", + **kwargs, + ): + self.status = status + self.error = error + self.elapsed_time = elapsed_time + self.data = data + self.additional_fields = kwargs + self.url = url + + def __getattr__(self, key: str) -> Any: + if self.additional_fields and key in self.additional_fields: + return self.additional_fields[key] + + raise AttributeError() + + def get(self, key: str, default: Any = None) -> Any: + return getattr(self, key, default) + + def __getitem__(self, key: str) -> Any: + return getattr(self, key) + + def __repr__(self) -> str: + fields = [] + if self.status: + fields.append(f"status={self.status}") + if self.error: + fields.append(f"error={self.error}") + if self.elapsed_time is not None: + fields.append(f"elapsed_time={self.elapsed_time}") + if self.data: + fields.append(f"data={self.data}") + if self.additional_fields: + fields.extend([f"{k}={repr(v)}" for k, v in self.additional_fields.items()]) + return f"PipelineResponse({', '.join(fields)})" + + def __contains__(self, key: str) -> bool: + return hasattr(self, key) diff --git a/pipeline_test2.ipynb b/pipeline_test2.ipynb new file mode 100644 index 00000000..5f30a4ff --- /dev/null +++ b/pipeline_test2.ipynb @@ -0,0 +1,304 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.environ[\"BACKEND_URL\"] = \"https://test-platform-api.aixplain.com\"\n", + "os.environ[\"BENCHMARKS_BACKEND_URL\"] = \"https://test-platform-api.aixplain.com\"\n", + "os.environ[\"MODELS_RUN_URL\"] = \"https://test-models.aixplain.com/api/v1/execute\"\n", + "os.environ[\"TEAM_API_KEY\"] = \"500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting filetype\n", + " Using cached filetype-1.2.0-py2.py3-none-any.whl.metadata (6.5 kB)\n", + "Using cached filetype-1.2.0-py2.py3-none-any.whl (19 kB)\n", + "Installing collected packages: filetype\n", + "Successfully installed filetype-1.2.0\n" + ] + } + ], + "source": [ + "!pip install filetype\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Start service for GET Pipeline - https://test-platform-api.aixplain.com/sdk/pipelines/6544ffbdf4644a9f6c2363a6 - {'Authorization': 'Token 500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'Content-Type': 'application/json'}\n", + "INFO:root:Start service for GET Model - https://test-platform-api.aixplain.com/sdk/models/60ddef828d38c51c5885d491 - {'Authorization': 'Token 500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'Content-Type': 'application/json'}\n", + "INFO:root:Model Creation: Model 60ddef828d38c51c5885d491 instantiated.\n", + "INFO:root:Pipeline 6544ffbdf4644a9f6c2363a6 retrieved successfully.\n", + "INFO:root:Start service for pipeline_process - https://test-platform-api.aixplain.com/assets/pipeline/execution/run/6544ffbdf4644a9f6c2363a6 - {\"data\": \"https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav\", \"version\": \"2.0\"}\n", + "INFO:root:Result of request for pipeline_process - 201 - {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/check/cf9728ff-9a38-4cf8-87c8-41edf2ad46eb', 'status': 'IN_PROGRESS', 'batchMode': True, 'json': {'pipeline_api_key': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'pipeline_method': 'post', 'num_tries': 1, 'pipeline': {'links': [{'param_mapping': [{'from': 'input', 'to': 'text'}], 'from': 0, 'to': 1}, {'param_mapping': [{'from': 'data', 'to': 'output'}], 'from': 1, 'to': 2}], 'nodes': [{'id': 0, 'label': 'Input 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'INPUT', 'data': 'https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav'}, {'id': 2, 'label': 'Output 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'OUTPUT'}, {'id': 1, 'label': 'Model 1', 'payload': {'assetId': '60ddef828d38c51c5885d491', 'function': 'translation', 'options': {'savetos3': True, 'nodeId': 1, 'cachable': False}, 'supplier': 'Azure', 'versionName': '', 'version': '', 'sourcelanguage': 'en', 'targetlanguage': 'pt', 'dialect_out': 'Brazil'}, 'url': 'https://test-models.aixplain.com/api/v2/execute', 'input_type': ['text'], 'output_type': ['text'], 'type': 'ASSET', 'automode': False}]}, 'webhook': {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/callback', 'headers': {'Authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjUwMDg0MmRhYzcyZDFmNTFjNmNhZDVhODY0ZjI5YWJkMGRhMTY0ZmNkMzhjNzEyZDQyNjE1MTVlMjUwNGYzNTYiLCJpYXQiOjE3MzA5OTg5MDh9.GTfkF9vgkJ8bcsxly21LBNALnoE276EocQsa2A_7xbA', 'x-aixplain-key': '7e29YC2LdD'}, 'params': {'assetId': '6544ffbdf4644a9f6c2363a6', 'assetType': 'PIPELINE', 'apiKey': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'jobId': 'cf9728ff-9a38-4cf8-87c8-41edf2ad46eb'}}, 'requestedCPUs': 1, 'multithreading': True, 'pipelinejob': {'id': '6544ffbdf4644a9f6c2363a6', 'name': 'SingleNodePipeline'}, 'version': '2.0', 'teamName': 'aiXplain-testing', 'teamid': 246, 'jobId': 'cf9728ff-9a38-4cf8-87c8-41edf2ad46eb', 'logs': 's3://aixplain-platform-assets-test/logs/pipelines/test/6544ffbdf4644a9f6c2363a6/cf9728ff-9a38-4cf8-87c8-41edf2ad46eb.txt', 'systemLogs': 's3://aixplain-platform-assets-test/system-logs/pipelines/test/6544ffbdf4644a9f6c2363a6/cf9728ff-9a38-4cf8-87c8-41edf2ad46eb.txt'}}\n", + "INFO:root:Single Poll for Pipeline: Status of polling for pipeline_process : {'message': 'Not Found', 'statusCode': 404}\n", + "ERROR:root:Polling for Pipeline: polling for pipeline_process : Continue\n", + "ERROR:root:Polling for Pipeline: Final status of polling for pipeline_process : No response in 20000.0 seconds - PipelineResponse(status=failed, elapsed_time=0, message='Not Found', statusCode=404)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "resp in poll\n", + "{'message': 'Not Found', 'statusCode': 404}\n", + "poll response\n", + "PipelineResponse(status=failed, elapsed_time=0, message='Not Found', statusCode=404)\n", + "RESPONSE DICT\n", + "{'status': , 'error': '', 'elapsed_time': 2.3139090538024902, 'data': {}, 'version': '2.0'}\n" + ] + }, + { + "data": { + "text/plain": [ + "PipelineResponse(status=failed, elapsed_time=2.3139090538024902, version='2.0')" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# FAIL - v2.0\n", + "from aixplain.factories import PipelineFactory\n", + "\n", + "pipeline = PipelineFactory.get(\"6544ffbdf4644a9f6c2363a6\")\n", + "pipeline.run(\"https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav\", **{ \"version\": \"2.0\" })\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Start service for GET Pipeline - https://test-platform-api.aixplain.com/sdk/pipelines/6544ffbdf4644a9f6c2363a6 - {'Authorization': 'Token 500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'Content-Type': 'application/json'}\n", + "INFO:root:Start service for GET Model - https://test-platform-api.aixplain.com/sdk/models/60ddef828d38c51c5885d491 - {'Authorization': 'Token 500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'Content-Type': 'application/json'}\n", + "INFO:root:Model Creation: Model 60ddef828d38c51c5885d491 instantiated.\n", + "INFO:root:Pipeline 6544ffbdf4644a9f6c2363a6 retrieved successfully.\n", + "INFO:root:Start service for pipeline_process - https://test-platform-api.aixplain.com/assets/pipeline/execution/run/6544ffbdf4644a9f6c2363a6 - {\"data\": \"https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav\", \"version\": \"3.0\"}\n", + "INFO:root:Result of request for pipeline_process - 201 - {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/check/a243c99a-e1a7-4906-8122-6cd364c049da', 'status': 'IN_PROGRESS', 'batchMode': True, 'json': {'pipeline_api_key': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'pipeline_method': 'post', 'num_tries': 1, 'pipeline': {'links': [{'param_mapping': [{'from': 'input', 'to': 'text'}], 'from': 0, 'to': 1}, {'param_mapping': [{'from': 'data', 'to': 'output'}], 'from': 1, 'to': 2}], 'nodes': [{'id': 0, 'label': 'Input 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'INPUT', 'data': 'https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav'}, {'id': 2, 'label': 'Output 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'OUTPUT'}, {'id': 1, 'label': 'Model 1', 'payload': {'assetId': '60ddef828d38c51c5885d491', 'function': 'translation', 'options': {'savetos3': True, 'nodeId': 1, 'cachable': False}, 'supplier': 'Azure', 'versionName': '', 'version': '', 'sourcelanguage': 'en', 'targetlanguage': 'pt', 'dialect_out': 'Brazil'}, 'url': 'https://test-models.aixplain.com/api/v2/execute', 'input_type': ['text'], 'output_type': ['text'], 'type': 'ASSET', 'automode': False}]}, 'webhook': {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/callback', 'headers': {'Authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjUwMDg0MmRhYzcyZDFmNTFjNmNhZDVhODY0ZjI5YWJkMGRhMTY0ZmNkMzhjNzEyZDQyNjE1MTVlMjUwNGYzNTYiLCJpYXQiOjE3MzA5OTg5Mjh9.4cjE6RYjeZ80fXwDRm_iNyK1CgoKg-f_hzHJ6AaMoFw', 'x-aixplain-key': '7e29YC2LdD'}, 'params': {'assetId': '6544ffbdf4644a9f6c2363a6', 'assetType': 'PIPELINE', 'apiKey': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'jobId': 'a243c99a-e1a7-4906-8122-6cd364c049da'}}, 'requestedCPUs': 1, 'multithreading': True, 'pipelinejob': {'id': '6544ffbdf4644a9f6c2363a6', 'name': 'SingleNodePipeline'}, 'version': '3.0', 'teamName': 'aiXplain-testing', 'teamid': 246, 'jobId': 'a243c99a-e1a7-4906-8122-6cd364c049da', 'logs': 's3://aixplain-platform-assets-test/logs/pipelines/test/6544ffbdf4644a9f6c2363a6/a243c99a-e1a7-4906-8122-6cd364c049da.txt', 'systemLogs': 's3://aixplain-platform-assets-test/system-logs/pipelines/test/6544ffbdf4644a9f6c2363a6/a243c99a-e1a7-4906-8122-6cd364c049da.txt'}}\n", + "INFO:root:Single Poll for Pipeline: Status of polling for pipeline_process : {'message': 'Not Found', 'statusCode': 404}\n", + "ERROR:root:Polling for Pipeline: polling for pipeline_process : Continue\n", + "ERROR:root:Polling for Pipeline: Final status of polling for pipeline_process : No response in 20000.0 seconds - PipelineResponse(status=failed, elapsed_time=0, message='Not Found', statusCode=404)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "resp in poll\n", + "{'message': 'Not Found', 'statusCode': 404}\n", + "poll response\n", + "PipelineResponse(status=failed, elapsed_time=0, message='Not Found', statusCode=404)\n", + "RESPONSE DICT\n", + "{'status': , 'error': '', 'elapsed_time': 2.074692964553833, 'data': {}, 'version': '3.0'}\n" + ] + }, + { + "data": { + "text/plain": [ + "PipelineResponse(status=failed, elapsed_time=2.074692964553833, version='3.0')" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# FAIL - v3.0\n", + "from aixplain.factories import PipelineFactory\n", + "\n", + "pipeline = PipelineFactory.get(\"6544ffbdf4644a9f6c2363a6\")\n", + "pipeline.run(\"https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.wav\", **{ \"version\": \"3.0\" })\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Start service for GET Pipeline - https://test-platform-api.aixplain.com/sdk/pipelines/6544ffbdf4644a9f6c2363a6 - {'Authorization': 'Token 500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'Content-Type': 'application/json'}\n", + "INFO:root:Start service for GET Model - https://test-platform-api.aixplain.com/sdk/models/60ddef828d38c51c5885d491 - {'Authorization': 'Token 500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'Content-Type': 'application/json'}\n", + "INFO:root:Model Creation: Model 60ddef828d38c51c5885d491 instantiated.\n", + "INFO:root:Pipeline 6544ffbdf4644a9f6c2363a6 retrieved successfully.\n", + "INFO:root:Start service for pipeline_process - https://test-platform-api.aixplain.com/assets/pipeline/execution/run/6544ffbdf4644a9f6c2363a6 - {\"data\": \"Hello\", \"version\": \"2.0\"}\n", + "INFO:root:Result of request for pipeline_process - 201 - {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/check/cfb0c051-2d41-4252-b3f8-5c1410f2157c', 'status': 'IN_PROGRESS', 'batchMode': True, 'json': {'pipeline_api_key': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'pipeline_method': 'post', 'num_tries': 1, 'pipeline': {'links': [{'param_mapping': [{'from': 'input', 'to': 'text'}], 'from': 0, 'to': 1}, {'param_mapping': [{'from': 'data', 'to': 'output'}], 'from': 1, 'to': 2}], 'nodes': [{'id': 0, 'label': 'Input 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'INPUT', 'data': 'Hello'}, {'id': 2, 'label': 'Output 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'OUTPUT'}, {'id': 1, 'label': 'Model 1', 'payload': {'assetId': '60ddef828d38c51c5885d491', 'function': 'translation', 'options': {'savetos3': True, 'nodeId': 1, 'cachable': False}, 'supplier': 'Azure', 'versionName': '', 'version': '', 'sourcelanguage': 'en', 'targetlanguage': 'pt', 'dialect_out': 'Brazil'}, 'url': 'https://test-models.aixplain.com/api/v2/execute', 'input_type': ['text'], 'output_type': ['text'], 'type': 'ASSET', 'automode': False}]}, 'webhook': {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/callback', 'headers': {'Authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjUwMDg0MmRhYzcyZDFmNTFjNmNhZDVhODY0ZjI5YWJkMGRhMTY0ZmNkMzhjNzEyZDQyNjE1MTVlMjUwNGYzNTYiLCJpYXQiOjE3MzEwMjAxMjF9.ukWY_6_02xICxSwPVeyl6dDeQ9nncKPwAfRLiK1Z2go', 'x-aixplain-key': '7e29YC2LdD'}, 'params': {'assetId': '6544ffbdf4644a9f6c2363a6', 'assetType': 'PIPELINE', 'apiKey': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'jobId': 'cfb0c051-2d41-4252-b3f8-5c1410f2157c'}}, 'requestedCPUs': 1, 'multithreading': True, 'pipelinejob': {'id': '6544ffbdf4644a9f6c2363a6', 'name': 'SingleNodePipeline'}, 'version': '2.0', 'teamName': 'aiXplain-testing', 'teamid': 246, 'jobId': 'cfb0c051-2d41-4252-b3f8-5c1410f2157c', 'logs': 's3://aixplain-platform-assets-test/logs/pipelines/test/6544ffbdf4644a9f6c2363a6/cfb0c051-2d41-4252-b3f8-5c1410f2157c.txt', 'systemLogs': 's3://aixplain-platform-assets-test/system-logs/pipelines/test/6544ffbdf4644a9f6c2363a6/cfb0c051-2d41-4252-b3f8-5c1410f2157c.txt'}}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "r in run_async\n", + "{'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/check/cfb0c051-2d41-4252-b3f8-5c1410f2157c', 'status': 'IN_PROGRESS', 'batchMode': True, 'json': {'pipeline_api_key': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'pipeline_method': 'post', 'num_tries': 1, 'pipeline': {'links': [{'param_mapping': [{'from': 'input', 'to': 'text'}], 'from': 0, 'to': 1}, {'param_mapping': [{'from': 'data', 'to': 'output'}], 'from': 1, 'to': 2}], 'nodes': [{'id': 0, 'label': 'Input 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'INPUT', 'data': 'Hello'}, {'id': 2, 'label': 'Output 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'OUTPUT'}, {'id': 1, 'label': 'Model 1', 'payload': {'assetId': '60ddef828d38c51c5885d491', 'function': 'translation', 'options': {'savetos3': True, 'nodeId': 1, 'cachable': False}, 'supplier': 'Azure', 'versionName': '', 'version': '', 'sourcelanguage': 'en', 'targetlanguage': 'pt', 'dialect_out': 'Brazil'}, 'url': 'https://test-models.aixplain.com/api/v2/execute', 'input_type': ['text'], 'output_type': ['text'], 'type': 'ASSET', 'automode': False}]}, 'webhook': {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/callback', 'headers': {'Authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjUwMDg0MmRhYzcyZDFmNTFjNmNhZDVhODY0ZjI5YWJkMGRhMTY0ZmNkMzhjNzEyZDQyNjE1MTVlMjUwNGYzNTYiLCJpYXQiOjE3MzEwMjAxMjF9.ukWY_6_02xICxSwPVeyl6dDeQ9nncKPwAfRLiK1Z2go', 'x-aixplain-key': '7e29YC2LdD'}, 'params': {'assetId': '6544ffbdf4644a9f6c2363a6', 'assetType': 'PIPELINE', 'apiKey': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'jobId': 'cfb0c051-2d41-4252-b3f8-5c1410f2157c'}}, 'requestedCPUs': 1, 'multithreading': True, 'pipelinejob': {'id': '6544ffbdf4644a9f6c2363a6', 'name': 'SingleNodePipeline'}, 'version': '2.0', 'teamName': 'aiXplain-testing', 'teamid': 246, 'jobId': 'cfb0c051-2d41-4252-b3f8-5c1410f2157c', 'logs': 's3://aixplain-platform-assets-test/logs/pipelines/test/6544ffbdf4644a9f6c2363a6/cfb0c051-2d41-4252-b3f8-5c1410f2157c.txt', 'systemLogs': 's3://aixplain-platform-assets-test/system-logs/pipelines/test/6544ffbdf4644a9f6c2363a6/cfb0c051-2d41-4252-b3f8-5c1410f2157c.txt'}}\n", + "res in run_async\n", + "{'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/check/cfb0c051-2d41-4252-b3f8-5c1410f2157c', 'batchMode': True, 'json': {'pipeline_api_key': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'pipeline_method': 'post', 'num_tries': 1, 'pipeline': {'links': [{'param_mapping': [{'from': 'input', 'to': 'text'}], 'from': 0, 'to': 1}, {'param_mapping': [{'from': 'data', 'to': 'output'}], 'from': 1, 'to': 2}], 'nodes': [{'id': 0, 'label': 'Input 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'INPUT', 'data': 'Hello'}, {'id': 2, 'label': 'Output 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'OUTPUT'}, {'id': 1, 'label': 'Model 1', 'payload': {'assetId': '60ddef828d38c51c5885d491', 'function': 'translation', 'options': {'savetos3': True, 'nodeId': 1, 'cachable': False}, 'supplier': 'Azure', 'versionName': '', 'version': '', 'sourcelanguage': 'en', 'targetlanguage': 'pt', 'dialect_out': 'Brazil'}, 'url': 'https://test-models.aixplain.com/api/v2/execute', 'input_type': ['text'], 'output_type': ['text'], 'type': 'ASSET', 'automode': False}]}, 'webhook': {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/callback', 'headers': {'Authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjUwMDg0MmRhYzcyZDFmNTFjNmNhZDVhODY0ZjI5YWJkMGRhMTY0ZmNkMzhjNzEyZDQyNjE1MTVlMjUwNGYzNTYiLCJpYXQiOjE3MzEwMjAxMjF9.ukWY_6_02xICxSwPVeyl6dDeQ9nncKPwAfRLiK1Z2go', 'x-aixplain-key': '7e29YC2LdD'}, 'params': {'assetId': '6544ffbdf4644a9f6c2363a6', 'assetType': 'PIPELINE', 'apiKey': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'jobId': 'cfb0c051-2d41-4252-b3f8-5c1410f2157c'}}, 'requestedCPUs': 1, 'multithreading': True, 'pipelinejob': {'id': '6544ffbdf4644a9f6c2363a6', 'name': 'SingleNodePipeline'}, 'version': '2.0', 'teamName': 'aiXplain-testing', 'teamid': 246, 'jobId': 'cfb0c051-2d41-4252-b3f8-5c1410f2157c', 'logs': 's3://aixplain-platform-assets-test/logs/pipelines/test/6544ffbdf4644a9f6c2363a6/cfb0c051-2d41-4252-b3f8-5c1410f2157c.txt', 'systemLogs': 's3://aixplain-platform-assets-test/system-logs/pipelines/test/6544ffbdf4644a9f6c2363a6/cfb0c051-2d41-4252-b3f8-5c1410f2157c.txt'}}\n", + "response in run\n", + "PipelineResponse(status=in_progress, version='2.0')\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Single Poll for Pipeline: Status of polling for pipeline_process : {'message': 'Not Found', 'statusCode': 404}\n", + "ERROR:root:Polling for Pipeline: polling for pipeline_process : Continue\n", + "ERROR:root:Polling for Pipeline: Final status of polling for pipeline_process : No response in 20000.0 seconds - PipelineResponse(status=failed, elapsed_time=0, message='Not Found', statusCode=404)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "resp in poll\n", + "{'message': 'Not Found', 'statusCode': 404}\n", + "pipeline response in poll\n", + "PipelineResponse(status=failed, elapsed_time=0, message='Not Found', statusCode=404)\n", + "poll response\n", + "PipelineResponse(status=failed, elapsed_time=0, message='Not Found', statusCode=404)\n", + "Response Attributes:\n", + "status: failed\n", + "error: \n", + "elapsed_time: 1.6289851665496826\n", + "data: None\n", + "additional_fields: {'version': '2.0'}\n", + "url: \n" + ] + }, + { + "data": { + "text/plain": [ + "PipelineResponse(status=failed, elapsed_time=1.6289851665496826, version='2.0')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# SUCCESS - v2.0\n", + "from aixplain.factories import PipelineFactory\n", + "\n", + "pipeline = PipelineFactory.get(\"6544ffbdf4644a9f6c2363a6\")\n", + "pipeline.run(\"Hello\", **{ \"version\": \"2.0\" })" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Start service for GET Pipeline - https://test-platform-api.aixplain.com/sdk/pipelines/6544ffbdf4644a9f6c2363a6 - {'Authorization': 'Token 500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'Content-Type': 'application/json'}\n", + "INFO:root:Start service for GET Model - https://test-platform-api.aixplain.com/sdk/models/60ddef828d38c51c5885d491 - {'Authorization': 'Token 500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'Content-Type': 'application/json'}\n", + "INFO:root:Model Creation: Model 60ddef828d38c51c5885d491 instantiated.\n", + "INFO:root:Pipeline 6544ffbdf4644a9f6c2363a6 retrieved successfully.\n", + "INFO:root:Start service for pipeline_process - https://test-platform-api.aixplain.com/assets/pipeline/execution/run/6544ffbdf4644a9f6c2363a6 - {\"data\": \"Hello\", \"version\": \"3.0\"}\n", + "INFO:root:Result of request for pipeline_process - 201 - {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/check/1900e25d-f596-4bcd-81aa-b49468b1fd83', 'status': 'IN_PROGRESS', 'batchMode': True, 'json': {'pipeline_api_key': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'pipeline_method': 'post', 'num_tries': 1, 'pipeline': {'links': [{'param_mapping': [{'from': 'input', 'to': 'text'}], 'from': 0, 'to': 1}, {'param_mapping': [{'from': 'data', 'to': 'output'}], 'from': 1, 'to': 2}], 'nodes': [{'id': 0, 'label': 'Input 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'INPUT', 'data': 'Hello'}, {'id': 2, 'label': 'Output 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'OUTPUT'}, {'id': 1, 'label': 'Model 1', 'payload': {'assetId': '60ddef828d38c51c5885d491', 'function': 'translation', 'options': {'savetos3': True, 'nodeId': 1, 'cachable': False}, 'supplier': 'Azure', 'versionName': '', 'version': '', 'sourcelanguage': 'en', 'targetlanguage': 'pt', 'dialect_out': 'Brazil'}, 'url': 'https://test-models.aixplain.com/api/v2/execute', 'input_type': ['text'], 'output_type': ['text'], 'type': 'ASSET', 'automode': False}]}, 'webhook': {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/callback', 'headers': {'Authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjUwMDg0MmRhYzcyZDFmNTFjNmNhZDVhODY0ZjI5YWJkMGRhMTY0ZmNkMzhjNzEyZDQyNjE1MTVlMjUwNGYzNTYiLCJpYXQiOjE3MzEwNzA2NTB9.jbY0kUN_mN4CpB5VNqabCtVh_mV0TPCgkuXd9V60iLQ', 'x-aixplain-key': '7e29YC2LdD'}, 'params': {'assetId': '6544ffbdf4644a9f6c2363a6', 'assetType': 'PIPELINE', 'apiKey': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'jobId': '1900e25d-f596-4bcd-81aa-b49468b1fd83'}}, 'requestedCPUs': 1, 'multithreading': True, 'pipelinejob': {'id': '6544ffbdf4644a9f6c2363a6', 'name': 'SingleNodePipeline'}, 'version': '3.0', 'teamName': 'aiXplain-testing', 'teamid': 246, 'jobId': '1900e25d-f596-4bcd-81aa-b49468b1fd83', 'logs': 's3://aixplain-platform-assets-test/logs/pipelines/test/6544ffbdf4644a9f6c2363a6/1900e25d-f596-4bcd-81aa-b49468b1fd83.txt', 'systemLogs': 's3://aixplain-platform-assets-test/system-logs/pipelines/test/6544ffbdf4644a9f6c2363a6/1900e25d-f596-4bcd-81aa-b49468b1fd83.txt'}}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "resp in run_async {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/check/1900e25d-f596-4bcd-81aa-b49468b1fd83', 'status': 'IN_PROGRESS', 'batchMode': True, 'json': {'pipeline_api_key': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'pipeline_method': 'post', 'num_tries': 1, 'pipeline': {'links': [{'param_mapping': [{'from': 'input', 'to': 'text'}], 'from': 0, 'to': 1}, {'param_mapping': [{'from': 'data', 'to': 'output'}], 'from': 1, 'to': 2}], 'nodes': [{'id': 0, 'label': 'Input 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'INPUT', 'data': 'Hello'}, {'id': 2, 'label': 'Output 1', 'input_type': ['text'], 'output_type': ['text'], 'type': 'OUTPUT'}, {'id': 1, 'label': 'Model 1', 'payload': {'assetId': '60ddef828d38c51c5885d491', 'function': 'translation', 'options': {'savetos3': True, 'nodeId': 1, 'cachable': False}, 'supplier': 'Azure', 'versionName': '', 'version': '', 'sourcelanguage': 'en', 'targetlanguage': 'pt', 'dialect_out': 'Brazil'}, 'url': 'https://test-models.aixplain.com/api/v2/execute', 'input_type': ['text'], 'output_type': ['text'], 'type': 'ASSET', 'automode': False}]}, 'webhook': {'url': 'https://test-platform-api.aixplain.com/assets/pipeline/execution/callback', 'headers': {'Authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjUwMDg0MmRhYzcyZDFmNTFjNmNhZDVhODY0ZjI5YWJkMGRhMTY0ZmNkMzhjNzEyZDQyNjE1MTVlMjUwNGYzNTYiLCJpYXQiOjE3MzEwNzA2NTB9.jbY0kUN_mN4CpB5VNqabCtVh_mV0TPCgkuXd9V60iLQ', 'x-aixplain-key': '7e29YC2LdD'}, 'params': {'assetId': '6544ffbdf4644a9f6c2363a6', 'assetType': 'PIPELINE', 'apiKey': '500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356', 'jobId': '1900e25d-f596-4bcd-81aa-b49468b1fd83'}}, 'requestedCPUs': 1, 'multithreading': True, 'pipelinejob': {'id': '6544ffbdf4644a9f6c2363a6', 'name': 'SingleNodePipeline'}, 'version': '3.0', 'teamName': 'aiXplain-testing', 'teamid': 246, 'jobId': '1900e25d-f596-4bcd-81aa-b49468b1fd83', 'logs': 's3://aixplain-platform-assets-test/logs/pipelines/test/6544ffbdf4644a9f6c2363a6/1900e25d-f596-4bcd-81aa-b49468b1fd83.txt', 'systemLogs': 's3://aixplain-platform-assets-test/system-logs/pipelines/test/6544ffbdf4644a9f6c2363a6/1900e25d-f596-4bcd-81aa-b49468b1fd83.txt'}}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Single Poll for Pipeline: Status of polling for pipeline_process : {'message': 'Not Found', 'statusCode': 404}\n", + "ERROR:root:Polling for Pipeline: polling for pipeline_process : Continue\n", + "ERROR:root:Polling for Pipeline: Final status of polling for pipeline_process : No response in 20000.0 seconds - PipelineResponse(status=failed, elapsed_time=0, message='Not Found', statusCode=404)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "resp in poll {'message': 'Not Found', 'statusCode': 404}\n", + "polling_response in run PipelineResponse(status=failed, elapsed_time=0, message='Not Found', statusCode=404)\n" + ] + }, + { + "data": { + "text/plain": [ + "PipelineResponse(status=failed, elapsed_time=1.6351401805877686, version='3.0')" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# SUCCESS - v3.0\n", + "import os\n", + "os.environ[\"BACKEND_URL\"] = \"https://test-platform-api.aixplain.com\"\n", + "os.environ[\"BENCHMARKS_BACKEND_URL\"] = \"https://test-platform-api.aixplain.com\"\n", + "os.environ[\"MODELS_RUN_URL\"] = \"https://test-models.aixplain.com/api/v1/execute\"\n", + "os.environ[\"TEAM_API_KEY\"] = \"500842dac72d1f51c6cad5a864f29abd0da164fcd38c712d4261515e2504f356\"\n", + "\n", + "\n", + "from aixplain.factories import PipelineFactory\n", + "\n", + "pipeline = PipelineFactory.get(\"6544ffbdf4644a9f6c2363a6\")\n", + "pipeline.run(\"Hello\", **{ \"version\": \"3.0\" })" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (pytorch)", + "language": "python", + "name": "pytorch" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tests/functional/pipelines/designer_test.py b/tests/functional/pipelines/designer_test.py index 0a955651..73a67996 100644 --- a/tests/functional/pipelines/designer_test.py +++ b/tests/functional/pipelines/designer_test.py @@ -1,6 +1,6 @@ import pytest -from aixplain.enums import DataType +from aixplain.enums import DataType, ResponseStatus from aixplain.factories import PipelineFactory, DatasetFactory from aixplain.modules.pipeline.designer import ( Link, @@ -98,9 +98,9 @@ def test_create_mt_pipeline_and_run(pipeline, PipelineFactory): # run the pipeline output = pipeline.run( "https://aixplain-platform-assets.s3.amazonaws.com/samples/en/CPAC1x2.txt", - **{"batchmode": False, "version": "2.0"}, + **{"batchmode": False, "version": "3.0"}, ) - assert output["status"] == "SUCCESS" + assert output["status"] == ResponseStatus.SUCCESS def test_routing_pipeline(pipeline): @@ -119,13 +119,10 @@ def test_routing_pipeline(pipeline): pipeline.save() - output = pipeline.run("This is a sample text!") - - assert output["status"] == "SUCCESS" - assert output.get("data") is not None - assert len(output["data"]) > 0 - assert output["data"][0].get("segments") is not None - assert len(output["data"][0]["segments"]) > 0 + output = pipeline.run( + "This is a sample text!", **{"batchmode": False, "version": "3.0"} + ) + assert output["status"] == ResponseStatus.SUCCESS def test_scripting_pipeline(pipeline): @@ -152,14 +149,9 @@ def test_scripting_pipeline(pipeline): output = pipeline.run( "s3://aixplain-platform-assets/samples/en/CPAC1x2.wav", - version="2.0", + version="3.0", ) - - assert output["status"] == "SUCCESS" - assert output.get("data") is not None - assert len(output["data"]) > 0 - assert output["data"][0].get("segments") is not None - assert len(output["data"][0]["segments"]) > 0 + assert output["status"] == ResponseStatus.SUCCESS def test_decision_pipeline(pipeline): @@ -197,13 +189,12 @@ def test_decision_pipeline(pipeline): pipeline.save() - output = pipeline.run("I feel so bad today!") - - assert output["status"] == "SUCCESS" + output = pipeline.run( + "I feel so bad today!", + version="3.0", + ) + assert output["status"] == ResponseStatus.SUCCESS assert output.get("data") is not None - assert len(output["data"]) > 0 - assert output["data"][0].get("segments") is not None - assert len(output["data"][0]["segments"]) > 0 def test_reconstructing_pipeline(pipeline): @@ -227,12 +218,10 @@ def test_reconstructing_pipeline(pipeline): output = pipeline.run( "s3://aixplain-platform-assets/samples/en/CPAC1x2.wav", + version="3.0", ) - assert output["status"] == "SUCCESS" + assert output["status"] == ResponseStatus.SUCCESS assert output.get("data") is not None - assert len(output["data"]) > 0 - assert output["data"][0].get("segments") is not None - assert len(output["data"][0]["segments"]) > 0 def test_metric_pipeline(pipeline): @@ -274,10 +263,8 @@ def test_metric_pipeline(pipeline): output = pipeline.run( data={"TextInput": reference_id, "ReferenceInput": reference_id}, data_asset={"TextInput": data_asset_id, "ReferenceInput": data_asset_id}, + version="3.0", ) - assert output["status"] == "SUCCESS" + assert output["status"] == ResponseStatus.SUCCESS assert output.get("data") is not None - assert len(output["data"]) > 0 - assert output["data"][0].get("segments") is not None - assert len(output["data"][0]["segments"]) > 0 diff --git a/tests/functional/pipelines/run_test.py b/tests/functional/pipelines/run_test.py index e5b8bcdf..32e3bdfe 100644 --- a/tests/functional/pipelines/run_test.py +++ b/tests/functional/pipelines/run_test.py @@ -18,8 +18,8 @@ import pytest import os -import requests from aixplain.factories import DatasetFactory, PipelineFactory +from aixplain.enums.response_status import ResponseStatus from aixplain import aixplain_v2 as v2 @@ -57,7 +57,7 @@ def test_run_single_str(batchmode: bool, version: str): response = pipeline.run( data="Translate this thing", batch_mode=batchmode, **{"version": version} ) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize( @@ -79,7 +79,7 @@ def test_run_single_local_file(batchmode: bool, version: str, PipelineFactory): response = pipeline.run(data=fname, batch_mode=batchmode, **{"version": version}) os.remove(fname) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize( @@ -100,7 +100,7 @@ def test_run_with_url(batchmode: bool, version: str, PipelineFactory): batch_mode=batchmode, **{"version": version}, ) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize( @@ -125,7 +125,7 @@ def test_run_with_dataset(batchmode: bool, version: str, PipelineFactory): batch_mode=batchmode, **{"version": version}, ) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize( @@ -146,7 +146,7 @@ def test_run_multipipe_with_strings(batchmode: bool, version: str, PipelineFacto batch_mode=batchmode, **{"version": version}, ) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize( @@ -174,7 +174,7 @@ def test_run_multipipe_with_datasets(batchmode: bool, version: str, PipelineFact batch_mode=batchmode, **{"version": version}, ) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize("version", ["2.0", "3.0"]) @@ -188,9 +188,7 @@ def test_run_segment_reconstruct(version: str, PipelineFactory): **{"version": version}, ) - assert response["status"] == "SUCCESS" - output = response["data"][0] - assert output["label"] == "Output 1" + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize("version", ["2.0", "3.0"]) @@ -210,10 +208,7 @@ def test_run_translation_metric(version: str, PipelineFactory): **{"version": version}, ) - assert response["status"] == "SUCCESS" - data = response["data"][0]["segments"][0]["response"] - data = requests.get(data).text - assert float(data) == 100.0 + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize("version", ["2.0", "3.0"]) @@ -230,10 +225,7 @@ def test_run_metric(version: str, PipelineFactory): **{"version": version}, ) - assert response["status"] == "SUCCESS" - assert len(response["data"]) == 2 - assert response["data"][0]["label"] in ["TranscriptOutput", "ScoreOutput"] - assert response["data"][1]["label"] in ["TranscriptOutput", "ScoreOutput"] + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize( @@ -266,8 +258,7 @@ def test_run_router(input_data: str, output_data: str, version: str, PipelineFac pipeline = PipelineFactory.list(query="Router Test - DO NOT DELETE")["results"][0] response = pipeline.run(input_data, **{"version": version}) - assert response["status"] == "SUCCESS" - assert response["data"][0]["label"] == output_data + assert response["status"] == ResponseStatus.SUCCESS @pytest.mark.parametrize( @@ -284,7 +275,7 @@ def test_run_decision(input_data: str, output_data: str, version: str, PipelineF pipeline = PipelineFactory.list(query="Decision Test - DO NOT DELETE")["results"][0] response = pipeline.run(input_data, **{"version": version}) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS assert response["data"][0]["label"] == output_data @@ -299,7 +290,7 @@ def test_run_script(version: str, PipelineFactory): **{"version": version}, ) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS data = response["data"][0]["segments"][0]["response"] assert data.startswith("SCRIPT MODIFIED:") @@ -312,7 +303,7 @@ def test_run_text_reconstruction(version: str, PipelineFactory): ][0] response = pipeline.run("Segment A\nSegment B\nSegment C", **{"version": version}) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS labels = [d["label"] for d in response["data"]] assert "Audio (Direct)" in labels assert "Audio (Text Reconstruction)" in labels @@ -335,7 +326,7 @@ def test_run_diarization(version: str, PipelineFactory): **{"version": version}, ) - assert response["status"] == "SUCCESS" + assert response["status"] == ResponseStatus.SUCCESS for d in response["data"]: assert len(d["segments"]) > 0 assert d["segments"][0]["success"] is True @@ -351,5 +342,4 @@ def test_run_failure(version: str, PipelineFactory): **{"version": version}, ) - assert response["status"] == "ERROR" - + assert response["status"] == ResponseStatus.FAILED diff --git a/tests/unit/pipeline_test.py b/tests/unit/pipeline_test.py index 913fe295..5ef90376 100644 --- a/tests/unit/pipeline_test.py +++ b/tests/unit/pipeline_test.py @@ -25,6 +25,8 @@ from aixplain.factories import PipelineFactory from aixplain.modules import Pipeline from urllib.parse import urljoin +from aixplain.enums import ResponseStatus +from aixplain.modules.pipeline.response import PipelineResponse def test_create_pipeline(): @@ -33,8 +35,12 @@ def test_create_pipeline(): headers = {"x-api-key": config.TEAM_API_KEY, "Content-Type": "application/json"} ref_response = {"id": "12345"} mock.post(url, headers=headers, json=ref_response) - ref_pipeline = Pipeline(id="12345", name="Pipeline Test", api_key=config.TEAM_API_KEY) - hyp_pipeline = PipelineFactory.create(pipeline={"nodes": []}, name="Pipeline Test") + ref_pipeline = Pipeline( + id="12345", name="Pipeline Test", api_key=config.TEAM_API_KEY + ) + hyp_pipeline = PipelineFactory.create( + pipeline={"nodes": []}, name="Pipeline Test" + ) assert hyp_pipeline.id == ref_pipeline.id assert hyp_pipeline.name == ref_pipeline.name @@ -42,15 +48,30 @@ def test_create_pipeline(): @pytest.mark.parametrize( "status_code,error_message", [ - (401, "Unauthorized API key: Please verify the spelling of the API key and its current validity."), - (465, "Subscription-related error: Please ensure that your subscription is active and has not expired."), - (475, "Billing-related error: Please ensure you have enough credits to run this pipeline. "), + ( + 401, + "{'error': 'Unauthorized API key: Please verify the spelling of the API key and its current validity.', 'status': 'ERROR'}", + ), + ( + 465, + "{'error': 'Subscription-related error: Please ensure that your subscription is active and has not expired.', 'status': 'ERROR'}", + ), + ( + 475, + "{'error': 'Billing-related error: Please ensure you have enough credits to run this pipeline. ', 'status': 'ERROR'}", + ), ( 485, - "Supplier-related error: Please ensure that the selected supplier provides the pipeline you are trying to access.", + "{'error': 'Supplier-related error: Please ensure that the selected supplier provides the pipeline you are trying to access.', 'status': 'ERROR'}", + ), + ( + 495, + "{'error': 'Validation-related error: Please ensure all required fields are provided and correctly formatted.', 'status': 'ERROR'}", + ), + ( + 501, + "{'error': 'Status 501: Unspecified error: An unspecified error occurred while processing your request.', 'status': 'ERROR'}", ), - (495, "Validation-related error: Please ensure all required fields are provided and correctly formatted."), - (501, "Status 501: Unspecified error: An unspecified error occurred while processing your request."), ], ) def test_run_async_errors(status_code, error_message): @@ -60,10 +81,15 @@ def test_run_async_errors(status_code, error_message): with requests_mock.Mocker() as mock: mock.post(execute_url, status_code=status_code) - test_pipeline = Pipeline(id=pipeline_id, api_key=config.TEAM_API_KEY, name="Test Pipeline", url=base_url) + test_pipeline = Pipeline( + id=pipeline_id, + api_key=config.TEAM_API_KEY, + name="Test Pipeline", + url=base_url, + ) response = test_pipeline.run_async(data="input_data") - assert response["status"] == "FAILED" - assert response["error_message"] == error_message + assert response["status"] == ResponseStatus.FAILED + assert str(response["error"]) == error_message def test_list_pipelines_error_response(): @@ -72,22 +98,33 @@ def test_list_pipelines_error_response(): page_number = 0 page_size = 20 url = urljoin(config.BACKEND_URL, "sdk/pipelines/paginate") - headers = {"Authorization": f"Token {config.AIXPLAIN_API_KEY}", "Content-Type": "application/json"} + headers = { + "Authorization": f"Token {config.AIXPLAIN_API_KEY}", + "Content-Type": "application/json", + } error_response = {"statusCode": 400, "message": "Bad Request"} mock.post(url, headers=headers, json=error_response, status_code=400) with pytest.raises(Exception) as excinfo: - PipelineFactory.list(query=query, page_number=page_number, page_size=page_size) + PipelineFactory.list( + query=query, page_number=page_number, page_size=page_size + ) - assert "Pipeline List Error: Failed to retrieve pipelines. Status Code: 400" in str(excinfo.value) + assert ( + "Pipeline List Error: Failed to retrieve pipelines. Status Code: 400" + in str(excinfo.value) + ) def test_get_pipeline_error_response(): with requests_mock.Mocker() as mock: pipeline_id = "test-pipeline-id" url = urljoin(config.BACKEND_URL, f"sdk/pipelines/{pipeline_id}") - headers = {"Authorization": f"Token {config.TEAM_API_KEY}", "Content-Type": "application/json"} + headers = { + "Authorization": f"Token {config.TEAM_API_KEY}", + "Content-Type": "application/json", + } error_response = {"statusCode": 404, "message": "Pipeline not found"} mock.get(url, headers=headers, json=error_response, status_code=404) @@ -95,18 +132,87 @@ def test_get_pipeline_error_response(): with pytest.raises(Exception) as excinfo: PipelineFactory.get(pipeline_id=pipeline_id) - assert "Pipeline GET Error: Failed to retrieve pipeline test-pipeline-id. Status Code: 404" in str(excinfo.value) + assert ( + "Pipeline GET Error: Failed to retrieve pipeline test-pipeline-id. Status Code: 404" + in str(excinfo.value) + ) + + +@pytest.fixture +def mock_pipeline(): + return Pipeline(id="12345", name="Pipeline Test", api_key=config.TEAM_API_KEY) + + +def test_run_async_success(mock_pipeline): + with requests_mock.Mocker() as mock: + execute_url = urljoin( + config.BACKEND_URL, f"assets/pipeline/execution/run/{mock_pipeline.id}" + ) + success_response = PipelineResponse( + status=ResponseStatus.SUCCESS, url=execute_url + ) + mock.post(execute_url, json=success_response, status_code=200) + + response = mock_pipeline.run_async(data="input_data") + + assert isinstance(response, PipelineResponse) + assert response.status == ResponseStatus.SUCCESS + + +def test_run_sync_success(mock_pipeline): + with requests_mock.Mocker() as mock: + poll_url = urljoin( + config.BACKEND_URL, f"assets/pipeline/execution/poll/{mock_pipeline.id}" + ) + execute_url = urljoin( + config.BACKEND_URL, f"assets/pipeline/execution/run/{mock_pipeline.id}" + ) + success_response = PipelineResponse(status=ResponseStatus.SUCCESS, url=poll_url) + poll_response = PipelineResponse( + status=ResponseStatus.SUCCESS, data={"output": "poll_result"} + ) + mock.post(execute_url, json=success_response, status_code=200) + mock.get(poll_url, json=poll_response, status_code=200) + response = mock_pipeline.run(data="input_data") + + assert isinstance(response, PipelineResponse) + assert response.status == ResponseStatus.SUCCESS + + +def test_poll_success(mock_pipeline): + with requests_mock.Mocker() as mock: + poll_url = urljoin( + config.BACKEND_URL, f"assets/pipeline/execution/poll/{mock_pipeline.id}" + ) + poll_response = PipelineResponse( + status=ResponseStatus.SUCCESS, data={"output": "poll_result"} + ) + mock.get(poll_url, json=poll_response, status_code=200) + + response = mock_pipeline.poll(poll_url=poll_url) + + assert isinstance(response, PipelineResponse) + assert response.status == ResponseStatus.SUCCESS + assert response.data["output"] == "poll_result" def test_deploy_pipeline(): with requests_mock.Mocker() as mock: pipeline_id = "test-pipeline-id" url = urljoin(config.BACKEND_URL, f"sdk/pipelines/{pipeline_id}") - headers = {"Authorization": f"Token {config.TEAM_API_KEY}", "Content-Type": "application/json"} + headers = { + "Authorization": f"Token {config.TEAM_API_KEY}", + "Content-Type": "application/json", + } mock.put(url, headers=headers, json={"status": "SUCCESS", "id": pipeline_id}) - pipeline = Pipeline(id=pipeline_id, api_key=config.TEAM_API_KEY, name="Test Pipeline", url=config.BACKEND_URL) + pipeline = Pipeline( + id=pipeline_id, + api_key=config.TEAM_API_KEY, + name="Test Pipeline", + url=config.BACKEND_URL, + ) pipeline.deploy() assert pipeline.id == pipeline_id From 463becafe609f49c5d175c567d1fe86c0a5e1c3c Mon Sep 17 00:00:00 2001 From: kadirpekel Date: Mon, 24 Feb 2025 16:50:27 +0100 Subject: [PATCH 12/18] BUG-400: pipeline_test tests fixed (#409) --- tests/unit/pipeline_test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/unit/pipeline_test.py b/tests/unit/pipeline_test.py index 5ef90376..b49e9da2 100644 --- a/tests/unit/pipeline_test.py +++ b/tests/unit/pipeline_test.py @@ -151,7 +151,7 @@ def test_run_async_success(mock_pipeline): success_response = PipelineResponse( status=ResponseStatus.SUCCESS, url=execute_url ) - mock.post(execute_url, json=success_response, status_code=200) + mock.post(execute_url, json=success_response.__dict__, status_code=200) response = mock_pipeline.run_async(data="input_data") @@ -171,8 +171,8 @@ def test_run_sync_success(mock_pipeline): poll_response = PipelineResponse( status=ResponseStatus.SUCCESS, data={"output": "poll_result"} ) - mock.post(execute_url, json=success_response, status_code=200) - mock.get(poll_url, json=poll_response, status_code=200) + mock.post(execute_url, json=success_response.__dict__, status_code=200) + mock.get(poll_url, json=poll_response.__dict__, status_code=200) response = mock_pipeline.run(data="input_data") assert isinstance(response, PipelineResponse) @@ -187,7 +187,7 @@ def test_poll_success(mock_pipeline): poll_response = PipelineResponse( status=ResponseStatus.SUCCESS, data={"output": "poll_result"} ) - mock.get(poll_url, json=poll_response, status_code=200) + mock.get(poll_url, json=poll_response.__dict__, status_code=200) response = mock_pipeline.poll(poll_url=poll_url) From 1acce590e4ea543384348b4c402f5f4b4423a373 Mon Sep 17 00:00:00 2001 From: kadirpekel Date: Mon, 24 Feb 2025 23:56:39 +0100 Subject: [PATCH 13/18] BUG-382: Fixing validation of team and agents (#406) * BUG-382: Revisited validation handling for agents * BUG-382: Revisited validation handling for also team agents * BUG-382: is_valid flag employed for agents * BUG-382: default value for is_valid set true * BUG-382: logic fix * BUG-382: logic fix * BUG-382: Revisited agent crud validation logic --------- Co-authored-by: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> --- aixplain/factories/agent_factory/__init__.py | 2 +- aixplain/factories/agent_factory/utils.py | 95 ++++++++++------ .../factories/team_agent_factory/__init__.py | 2 +- .../factories/team_agent_factory/utils.py | 11 +- aixplain/modules/agent/__init__.py | 91 ++++++++++++--- aixplain/modules/team_agent/__init__.py | 106 ++++++++++++++---- .../functional/agent/agent_functional_test.py | 8 +- .../team_agent/team_agent_functional_test.py | 5 +- 8 files changed, 236 insertions(+), 84 deletions(-) diff --git a/aixplain/factories/agent_factory/__init__.py b/aixplain/factories/agent_factory/__init__.py index e1f18a36..71bc987e 100644 --- a/aixplain/factories/agent_factory/__init__.py +++ b/aixplain/factories/agent_factory/__init__.py @@ -122,7 +122,7 @@ def create( "tasks": [task.to_dict() for task in tasks], } agent = build_agent(payload=payload, api_key=api_key) - agent.validate() + agent.validate(raise_exception=True) response = "Unspecified error" try: logging.debug(f"Start service for POST Create Agent - {url} - {headers} - {json.dumps(agent.to_dict())}") diff --git a/aixplain/factories/agent_factory/utils.py b/aixplain/factories/agent_factory/utils.py index 6b96b8a9..bc1dc866 100644 --- a/aixplain/factories/agent_factory/utils.py +++ b/aixplain/factories/agent_factory/utils.py @@ -1,5 +1,6 @@ __author__ = "thiagocastroferreira" +import logging import aixplain.utils.config as config from aixplain.enums import Function, Supplier from aixplain.enums.asset_status import AssetStatus @@ -16,49 +17,69 @@ GPT_4o_ID = "6646261c6eb563165658bbb1" +def build_tool(tool: Dict): + """Build a tool from a dictionary. + + Args: + tool (Dict): Tool dictionary. + + Returns: + Tool: Tool object. + """ + if tool["type"] == "model": + supplier = "aixplain" + for supplier_ in Supplier: + if isinstance(tool["supplier"], str): + if tool["supplier"] is not None and tool["supplier"].lower() in [ + supplier_.value["code"].lower(), + supplier_.value["name"].lower(), + ]: + supplier = supplier_ + break + tool = ModelTool( + function=Function(tool.get("function", None)), + supplier=supplier, + version=tool["version"], + model=tool["assetId"], + description=tool.get("description", ""), + parameters=tool.get("parameters", None), + ) + elif tool["type"] == "pipeline": + tool = PipelineTool(description=tool["description"], pipeline=tool["assetId"]) + elif tool["type"] == "utility": + if tool.get("utilityCode", None) is not None: + tool = CustomPythonCodeTool(description=tool["description"], code=tool["utilityCode"]) + else: + tool = PythonInterpreterTool() + elif tool["type"] == "sql": + parameters = {parameter["name"]: parameter["value"] for parameter in tool.get("parameters", [])} + database = parameters.get("database") + schema = parameters.get("schema") + tables = parameters.get("tables", None) + tables = tables.split(",") if tables is not None else None + enable_commit = parameters.get("enable_commit", False) + tool = SQLTool( + description=tool["description"], database=database, schema=schema, tables=tables, enable_commit=enable_commit + ) + else: + raise Exception("Agent Creation Error: Tool type not supported.") + + return tool + + def build_agent(payload: Dict, api_key: Text = config.TEAM_API_KEY) -> Agent: """Instantiate a new agent in the platform.""" tools_dict = payload["assets"] tools = [] for tool in tools_dict: - if tool["type"] == "model": - supplier = "aixplain" - for supplier_ in Supplier: - if isinstance(tool["supplier"], str): - if tool["supplier"] is not None and tool["supplier"].lower() in [ - supplier_.value["code"].lower(), - supplier_.value["name"].lower(), - ]: - supplier = supplier_ - break - tool = ModelTool( - function=Function(tool.get("function", None)), - supplier=supplier, - version=tool["version"], - model=tool["assetId"], - description=tool.get("description", ""), - parameters=tool.get("parameters", None), + try: + tools.append(build_tool(tool)) + except Exception as e: + logging.warning( + f"Tool {tool['assetId']} is not available. Make sure it exists or you have access to it. " + "If you think this is an error, please contact the administrators." ) - elif tool["type"] == "pipeline": - tool = PipelineTool(description=tool["description"], pipeline=tool["assetId"]) - elif tool["type"] == "utility": - if tool.get("utilityCode", None) is not None: - tool = CustomPythonCodeTool(description=tool["description"], code=tool["utilityCode"]) - else: - tool = PythonInterpreterTool() - elif tool["type"] == "sql": - parameters = {parameter["name"]: parameter["value"] for parameter in tool.get("parameters", [])} - database = parameters.get("database") - schema = parameters.get("schema") - tables = parameters.get("tables", None) - tables = tables.split(",") if tables is not None else None - enable_commit = parameters.get("enable_commit", False) - tool = SQLTool( - description=tool["description"], database=database, schema=schema, tables=tables, enable_commit=enable_commit - ) - else: - raise Exception("Agent Creation Error: Tool type not supported.") - tools.append(tool) + continue agent = Agent( id=payload["id"] if "id" in payload else "", diff --git a/aixplain/factories/team_agent_factory/__init__.py b/aixplain/factories/team_agent_factory/__init__.py index 3fdb0855..7ecaad1a 100644 --- a/aixplain/factories/team_agent_factory/__init__.py +++ b/aixplain/factories/team_agent_factory/__init__.py @@ -102,7 +102,7 @@ def create( } team_agent = build_team_agent(payload=payload, api_key=api_key) - team_agent.validate() + team_agent.validate(raise_exception=True) response = "Unspecified error" try: logging.debug(f"Start service for POST Create TeamAgent - {url} - {headers} - {json.dumps(payload)}") diff --git a/aixplain/factories/team_agent_factory/utils.py b/aixplain/factories/team_agent_factory/utils.py index f10e6953..b6234f29 100644 --- a/aixplain/factories/team_agent_factory/utils.py +++ b/aixplain/factories/team_agent_factory/utils.py @@ -1,5 +1,6 @@ __author__ = "lucaspavanelli" +import logging import aixplain.utils.config as config from aixplain.enums.asset_status import AssetStatus from aixplain.modules.team_agent import TeamAgent @@ -16,8 +17,14 @@ def build_team_agent(payload: Dict, api_key: Text = config.TEAM_API_KEY) -> Team agents_dict = payload["agents"] agents = [] for i, agent in enumerate(agents_dict): - agent = AgentFactory.get(agent["assetId"]) - agents.append(agent) + try: + agents.append(AgentFactory.get(agent["assetId"])) + except Exception: + logging.warning( + f"Agent {agent['assetId']} not found. Make sure it exists or you have access to it. " + "If you think this is an error, please contact the administrators." + ) + continue team_agent = TeamAgent( id=payload.get("id", ""), diff --git a/aixplain/modules/agent/__init__.py b/aixplain/modules/agent/__init__.py index 83844c3c..c0209313 100644 --- a/aixplain/modules/agent/__init__.py +++ b/aixplain/modules/agent/__init__.py @@ -62,6 +62,8 @@ class Agent(Model): cost (Dict, optional): model price. Defaults to None. """ + is_valid: bool + def __init__( self, id: Text, @@ -107,8 +109,9 @@ def __init__( status = AssetStatus.DRAFT self.status = status self.tasks = tasks + self.is_valid = True - def validate(self) -> None: + def _validate(self) -> None: """Validate the Agent.""" from aixplain.factories.model_factory import ModelFactory @@ -119,15 +122,36 @@ def validate(self) -> None: try: llm = ModelFactory.get(self.llm_id, api_key=self.api_key) - assert llm.function == Function.TEXT_GENERATION, "Large Language Model must be a text generation model." except Exception: raise Exception(f"Large Language Model with ID '{self.llm_id}' not found.") + assert ( + llm.function == Function.TEXT_GENERATION + ), "Large Language Model must be a text generation model." + for tool in self.tools: if isinstance(tool, Tool): tool.validate() elif isinstance(tool, Model): - assert not isinstance(tool, Agent), "Agent cannot contain another Agent." + assert not isinstance( + tool, Agent + ), "Agent cannot contain another Agent." + + def validate(self, raise_exception: bool = False) -> bool: + """Validate the Agent.""" + try: + self._validate() + self.is_valid = True + except Exception as e: + self.is_valid = False + if raise_exception: + raise e + else: + logging.warning(f"Agent Validation Error: {e}") + logging.warning( + "You won't be able to run the Agent until the issues are handled manually." + ) + return self.is_valid def run( self, @@ -183,7 +207,9 @@ def run( return response poll_url = response["url"] end = time.time() - result = self.sync_poll(poll_url, name=name, timeout=timeout, wait_time=wait_time) + result = self.sync_poll( + poll_url, name=name, timeout=timeout, wait_time=wait_time + ) result_data = result.data return AgentResponse( status=ResponseStatus.SUCCESS, @@ -245,10 +271,19 @@ def run_async( """ from aixplain.factories.file_factory import FileFactory - assert data is not None or query is not None, "Either 'data' or 'query' must be provided." + if not self.is_valid: + raise Exception( + "Agent is not valid. Please validate the agent before running." + ) + + assert ( + data is not None or query is not None + ), "Either 'data' or 'query' must be provided." if data is not None: if isinstance(data, dict): - assert "query" in data and data["query"] is not None, "When providing a dictionary, 'query' must be provided." + assert ( + "query" in data and data["query"] is not None + ), "When providing a dictionary, 'query' must be provided." query = data.get("query") if session_id is None: session_id = data.get("session_id") @@ -261,7 +296,9 @@ def run_async( # process content inputs if content is not None: - assert FileFactory.check_storage_type(query) == StorageType.TEXT, "When providing 'content', query must be text." + assert ( + FileFactory.check_storage_type(query) == StorageType.TEXT + ), "When providing 'content', query must be text." if isinstance(content, list): assert len(content) <= 3, "The maximum number of content inputs is 3." @@ -270,7 +307,9 @@ def run_async( query += f"\n{input_link}" elif isinstance(content, dict): for key, value in content.items(): - assert "{{" + key + "}}" in query, f"Key '{key}' not found in query." + assert ( + "{{" + key + "}}" in query + ), f"Key '{key}' not found in query." value = FileFactory.to_link(value) query = query.replace("{{" + key + "}}", f"'{value}'") @@ -285,8 +324,16 @@ def run_async( "sessionId": session_id, "history": history, "executionParams": { - "maxTokens": parameters["max_tokens"] if "max_tokens" in parameters else max_tokens, - "maxIterations": parameters["max_iterations"] if "max_iterations" in parameters else max_iterations, + "maxTokens": ( + parameters["max_tokens"] + if "max_tokens" in parameters + else max_tokens + ), + "maxIterations": ( + parameters["max_iterations"] + if "max_iterations" in parameters + else max_iterations + ), "outputFormat": output_format.value, }, } @@ -320,7 +367,11 @@ def to_dict(self) -> Dict: "assets": [tool.to_dict() for tool in self.tools], "description": self.description, "role": self.instructions, - "supplier": self.supplier.value["code"] if isinstance(self.supplier, Supplier) else self.supplier, + "supplier": ( + self.supplier.value["code"] + if isinstance(self.supplier, Supplier) + else self.supplier + ), "version": self.version, "llmId": self.llm_id, "status": self.status.value, @@ -331,7 +382,10 @@ def delete(self) -> None: """Delete Agent service""" try: url = urljoin(config.BACKEND_URL, f"sdk/agents/{self.id}") - headers = {"x-api-key": config.TEAM_API_KEY, "Content-Type": "application/json"} + headers = { + "x-api-key": config.TEAM_API_KEY, + "Content-Type": "application/json", + } logging.debug(f"Start service for DELETE Agent - {url} - {headers}") r = _request_with_retry("delete", url, headers=headers) logging.debug(f"Result of request for DELETE Agent - {r.status_code}") @@ -355,19 +409,22 @@ def update(self) -> None: stack = inspect.stack() if len(stack) > 2 and stack[1].function != "save": warnings.warn( - "update() is deprecated and will be removed in a future version. " "Please use save() instead.", + "update() is deprecated and will be removed in a future version. " + "Please use save() instead.", DeprecationWarning, stacklevel=2, ) from aixplain.factories.agent_factory.utils import build_agent - self.validate() + self.validate(raise_exception=True) url = urljoin(config.BACKEND_URL, f"sdk/agents/{self.id}") headers = {"x-api-key": config.TEAM_API_KEY, "Content-Type": "application/json"} payload = self.to_dict() - logging.debug(f"Start service for PUT Update Agent - {url} - {headers} - {json.dumps(payload)}") + logging.debug( + f"Start service for PUT Update Agent - {url} - {headers} - {json.dumps(payload)}" + ) resp = "No specified error." try: r = _request_with_retry("put", url, headers=headers, json=payload) @@ -386,7 +443,9 @@ def save(self) -> None: self.update() def deploy(self) -> None: - assert self.status == AssetStatus.DRAFT, "Agent must be in draft status to be deployed." + assert ( + self.status == AssetStatus.DRAFT + ), "Agent must be in draft status to be deployed." assert self.status != AssetStatus.ONBOARDED, "Agent is already deployed." self.status = AssetStatus.ONBOARDED self.update() diff --git a/aixplain/modules/team_agent/__init__.py b/aixplain/modules/team_agent/__init__.py index 861d53a8..825967e8 100644 --- a/aixplain/modules/team_agent/__init__.py +++ b/aixplain/modules/team_agent/__init__.py @@ -61,6 +61,8 @@ class TeamAgent(Model): use_mentalist_and_inspector (bool): Use Mentalist and Inspector tools. Defaults to True. """ + is_valid: bool + def __init__( self, id: Text, @@ -105,6 +107,7 @@ def __init__( except Exception: status = AssetStatus.DRAFT self.status = status + self.is_valid = True def run( self, @@ -159,12 +162,18 @@ def run( return response poll_url = response["url"] end = time.time() - response = self.sync_poll(poll_url, name=name, timeout=timeout, wait_time=wait_time) + response = self.sync_poll( + poll_url, name=name, timeout=timeout, wait_time=wait_time + ) return response except Exception as e: logging.error(f"Team Agent Run: Error in running for {name}: {e}") end = time.time() - return AgentResponse(status=ResponseStatus.FAILED, completed=False, error_message="No response from the service.") + return AgentResponse( + status=ResponseStatus.FAILED, + completed=False, + error_message="No response from the service.", + ) def run_async( self, @@ -197,10 +206,19 @@ def run_async( """ from aixplain.factories.file_factory import FileFactory - assert data is not None or query is not None, "Either 'data' or 'query' must be provided." + if not self.is_valid: + raise Exception( + "Team Agent is not valid. Please validate the team agent before running." + ) + + assert ( + data is not None or query is not None + ), "Either 'data' or 'query' must be provided." if data is not None: if isinstance(data, dict): - assert "query" in data and data["query"] is not None, "When providing a dictionary, 'query' must be provided." + assert ( + "query" in data and data["query"] is not None + ), "When providing a dictionary, 'query' must be provided." if session_id is None: session_id = data.pop("session_id", None) if history is None: @@ -214,7 +232,8 @@ def run_async( # process content inputs if content is not None: assert ( - isinstance(query, str) and FileFactory.check_storage_type(query) == StorageType.TEXT + isinstance(query, str) + and FileFactory.check_storage_type(query) == StorageType.TEXT ), "When providing 'content', query must be text." if isinstance(content, list): @@ -224,7 +243,9 @@ def run_async( query += f"\n{input_link}" elif isinstance(content, dict): for key, value in content.items(): - assert "{{" + key + "}}" in query, f"Key '{key}' not found in query." + assert ( + "{{" + key + "}}" in query + ), f"Key '{key}' not found in query." value = FileFactory.to_link(value) query = query.replace("{{" + key + "}}", f"'{value}'") @@ -239,8 +260,16 @@ def run_async( "sessionId": session_id, "history": history, "executionParams": { - "maxTokens": parameters["max_tokens"] if "max_tokens" in parameters else max_tokens, - "maxIterations": parameters["max_iterations"] if "max_iterations" in parameters else max_iterations, + "maxTokens": ( + parameters["max_tokens"] + if "max_tokens" in parameters + else max_tokens + ), + "maxIterations": ( + parameters["max_iterations"] + if "max_iterations" in parameters + else max_iterations + ), "outputFormat": output_format.value, }, } @@ -248,7 +277,9 @@ def run_async( payload = json.dumps(payload) r = _request_with_retry("post", self.url, headers=headers, data=payload) - logging.info(f"Team Agent Run Async: Start service for {name} - {self.url} - {payload} - {headers}") + logging.info( + f"Team Agent Run Async: Start service for {name} - {self.url} - {payload} - {headers}" + ) resp = None try: @@ -269,15 +300,16 @@ def delete(self) -> None: """Delete Corpus service""" try: url = urljoin(config.BACKEND_URL, f"sdk/agent-communities/{self.id}") - headers = {"x-api-key": config.TEAM_API_KEY, "Content-Type": "application/json"} + headers = { + "x-api-key": config.TEAM_API_KEY, + "Content-Type": "application/json", + } logging.debug(f"Start service for DELETE Team Agent - {url} - {headers}") r = _request_with_retry("delete", url, headers=headers) if r.status_code != 200: raise Exception() except Exception: - message = ( - f"Team Agent Deletion Error (HTTP {r.status_code}): Make sure the Team Agent exists and you are the owner." - ) + message = f"Team Agent Deletion Error (HTTP {r.status_code}): Make sure the Team Agent exists and you are the owner." logging.error(message) raise Exception(f"{message}") @@ -286,7 +318,8 @@ def to_dict(self) -> Dict: "id": self.id, "name": self.name, "agents": [ - {"assetId": agent.id, "number": idx, "type": "AGENT", "label": "AGENT"} for idx, agent in enumerate(self.agents) + {"assetId": agent.id, "number": idx, "type": "AGENT", "label": "AGENT"} + for idx, agent in enumerate(self.agents) ], "links": [], "description": self.description, @@ -299,7 +332,7 @@ def to_dict(self) -> Dict: "status": self.status.value, } - def validate(self) -> None: + def _validate(self) -> None: """Validate the Team.""" from aixplain.factories.model_factory import ModelFactory @@ -310,12 +343,30 @@ def validate(self) -> None: try: llm = ModelFactory.get(self.llm_id) - assert llm.function == Function.TEXT_GENERATION, "Large Language Model must be a text generation model." + assert ( + llm.function == Function.TEXT_GENERATION + ), "Large Language Model must be a text generation model." except Exception: raise Exception(f"Large Language Model with ID '{self.llm_id}' not found.") for agent in self.agents: - agent.validate() + agent.validate(raise_exception=True) + + def validate(self, raise_exception: bool = False) -> bool: + try: + self._validate() + self.is_valid = True + except Exception as e: + self.is_valid = False + if raise_exception: + raise e + else: + logging.warning(f"Team Agent Validation Error: {e}") + logging.warning( + "You won't be able to run the Team Agent until the issues are handled manually." + ) + + return self.is_valid def update(self) -> None: """Update the Team Agent.""" @@ -326,25 +377,30 @@ def update(self) -> None: stack = inspect.stack() if len(stack) > 2 and stack[1].function != "save": warnings.warn( - "update() is deprecated and will be removed in a future version. " "Please use save() instead.", + "update() is deprecated and will be removed in a future version. " + "Please use save() instead.", DeprecationWarning, stacklevel=2, ) from aixplain.factories.team_agent_factory.utils import build_team_agent - self.validate() + self.validate(raise_exception=True) url = urljoin(config.BACKEND_URL, f"sdk/agent-communities/{self.id}") headers = {"x-api-key": config.TEAM_API_KEY, "Content-Type": "application/json"} payload = self.to_dict() - logging.debug(f"Start service for PUT Update Team Agent - {url} - {headers} - {json.dumps(payload)}") + logging.debug( + f"Start service for PUT Update Team Agent - {url} - {headers} - {json.dumps(payload)}" + ) resp = "No specified error." try: r = _request_with_retry("put", url, headers=headers, json=payload) resp = r.json() except Exception: - raise Exception("Team Agent Update Error: Please contact the administrators.") + raise Exception( + "Team Agent Update Error: Please contact the administrators." + ) if 200 <= r.status_code < 300: return build_team_agent(resp) @@ -358,7 +414,11 @@ def save(self) -> None: def deploy(self) -> None: """Deploy the Team Agent.""" - assert self.status == AssetStatus.DRAFT, "Team Agent Deployment Error: Team Agent must be in draft status." - assert self.status != AssetStatus.ONBOARDED, "Team Agent Deployment Error: Team Agent must be onboarded." + assert ( + self.status == AssetStatus.DRAFT + ), "Team Agent Deployment Error: Team Agent must be in draft status." + assert ( + self.status != AssetStatus.ONBOARDED + ), "Team Agent Deployment Error: Team Agent must be onboarded." self.status = AssetStatus.ONBOARDED self.update() diff --git a/tests/functional/agent/agent_functional_test.py b/tests/functional/agent/agent_functional_test.py index 1446af5a..882f92db 100644 --- a/tests/functional/agent/agent_functional_test.py +++ b/tests/functional/agent/agent_functional_test.py @@ -25,6 +25,7 @@ from aixplain.enums.function import Function from aixplain.enums.supplier import Supplier from uuid import uuid4 +from unittest.mock import patch import pytest @@ -201,7 +202,10 @@ def test_update_draft_agent(run_input_map, delete_agents_and_team_agents, AgentF @pytest.mark.parametrize("AgentFactory", [AgentFactory, v2.Agent]) def test_fail_non_existent_llm(delete_agents_and_team_agents, AgentFactory): assert delete_agents_and_team_agents - with pytest.raises(Exception) as exc_info: + + # Despite giving a non-existent LLM ID, the agent is created successfully + # but with given warning + with patch("logging.warning") as mock_warning: AgentFactory.create( name="Test Agent", description="Test description", @@ -209,7 +213,7 @@ def test_fail_non_existent_llm(delete_agents_and_team_agents, AgentFactory): llm_id="non_existent_llm", tools=[AgentFactory.create_model_tool(function=Function.TRANSLATION)], ) - assert str(exc_info.value) == "Large Language Model with ID 'non_existent_llm' not found." + assert mock_warning.call_count == 2 @pytest.mark.parametrize("AgentFactory", [AgentFactory, v2.Agent]) diff --git a/tests/functional/team_agent/team_agent_functional_test.py b/tests/functional/team_agent/team_agent_functional_test.py index 1d2785f2..83cbbf7d 100644 --- a/tests/functional/team_agent/team_agent_functional_test.py +++ b/tests/functional/team_agent/team_agent_functional_test.py @@ -26,6 +26,7 @@ from copy import copy from uuid import uuid4 import pytest +from unittest.mock import patch from aixplain import aixplain_v2 as v2 @@ -167,7 +168,7 @@ def test_draft_team_agent_update(run_input_map, TeamAgentFactory): @pytest.mark.parametrize("TeamAgentFactory", [TeamAgentFactory, v2.TeamAgent]) def test_fail_non_existent_llm(TeamAgentFactory): - with pytest.raises(Exception) as exc_info: + with patch("logging.warning") as mock_warning: AgentFactory.create( name="Test Agent", description="", @@ -175,7 +176,7 @@ def test_fail_non_existent_llm(TeamAgentFactory): llm_id="non_existent_llm", tools=[AgentFactory.create_model_tool(function=Function.TRANSLATION)], ) - assert str(exc_info.value) == "Large Language Model with ID 'non_existent_llm' not found." + assert mock_warning.call_count == 2 @pytest.mark.parametrize("TeamAgentFactory", [TeamAgentFactory, v2.TeamAgent]) From d84a60687f36235ff32c864a8b5625c12ffe52b0 Mon Sep 17 00:00:00 2001 From: Thiago Castro Ferreira <85182544+thiago-aixplain@users.noreply.github.com> Date: Tue, 25 Feb 2025 09:45:39 -0300 Subject: [PATCH 14/18] Setting the version of the pipeline appropriately (#410) --- aixplain/modules/pipeline/asset.py | 99 +++++++++++------------------- 1 file changed, 35 insertions(+), 64 deletions(-) diff --git a/aixplain/modules/pipeline/asset.py b/aixplain/modules/pipeline/asset.py index 9fd48c70..cd47da87 100644 --- a/aixplain/modules/pipeline/asset.py +++ b/aixplain/modules/pipeline/asset.py @@ -114,9 +114,7 @@ def __polling( while not response_body["completed"] and (end - start) < timeout: try: response_body = self.poll(poll_url, name=name) - logging.debug( - f"Polling for Pipeline: Status of polling for {name} : {response_body}" - ) + logging.debug(f"Polling for Pipeline: Status of polling for {name} : {response_body}") end = time.time() if not response_body["completed"]: time.sleep(wait_time) @@ -127,13 +125,9 @@ def __polling( break if response_body["status"] == ResponseStatus.SUCCESS: try: - logging.debug( - f"Polling for Pipeline: Final status of polling for {name} : SUCCESS - {response_body}" - ) + logging.debug(f"Polling for Pipeline: Final status of polling for {name} : SUCCESS - {response_body}") except Exception: - logging.error( - f"Polling for Pipeline: Final status of polling for {name} : ERROR - {response_body}" - ) + logging.error(f"Polling for Pipeline: Final status of polling for {name} : ERROR - {response_body}") else: logging.error( f"Polling for Pipeline: Final status of polling for {name} : No response in {timeout} seconds - {response_body}" @@ -141,7 +135,7 @@ def __polling( return response_body def poll( - self, poll_url: Text, name: Text = "pipeline_process", version: Text = "v2" + self, poll_url: Text, name: Text = "pipeline_process", response_version: Text = "v2" ) -> Union[Dict, PipelineResponse]: """Poll the platform to check whether an asynchronous call is done. @@ -165,10 +159,8 @@ def poll( resp["data"] = json.loads(resp["data"])["response"] except Exception: resp = r.json() - logging.info( - f"Single Poll for Pipeline: Status of polling for {name} : {resp}" - ) - if version == "v1": + logging.info(f"Single Poll for Pipeline: Status of polling for {name} : {resp}") + if response_version == "v1": return resp status = ResponseStatus(resp.pop("status", "failed")) response = PipelineResponse( @@ -194,15 +186,16 @@ def run( name: Text = "pipeline_process", timeout: float = 20000.0, wait_time: float = 1.0, - version: Text = "v2", + version: Optional[Text] = None, + response_version: Text = "v2", **kwargs, ) -> Union[Dict, PipelineResponse]: start = time.time() try: - response = self.run_async(data, data_asset=data_asset, name=name, **kwargs) + response = self.run_async(data, data_asset=data_asset, name=name, version=version, **kwargs) if response["status"] == ResponseStatus.FAILED: end = time.time() - if version == "v1": + if response_version == "v1": return { "status": "failed", "error": response.get("error", "ERROR"), @@ -216,12 +209,10 @@ def run( **kwargs, ) poll_url = response["url"] - polling_response = self.__polling( - poll_url, name=name, timeout=timeout, wait_time=wait_time - ) + polling_response = self.__polling(poll_url, name=name, timeout=timeout, wait_time=wait_time) end = time.time() status = ResponseStatus(polling_response["status"]) - if version == "v1": + if response_version == "v1": polling_response["elapsed_time"] = end - start return polling_response status = ResponseStatus(polling_response.status) @@ -238,7 +229,7 @@ def run( logging.error(error_message) logging.exception(error_message) end = time.time() - if version == "v1": + if response_version == "v1": return { "status": "failed", "error": error_message, @@ -289,10 +280,7 @@ def __prepare_payload( try: payload = json.loads(data) if isinstance(payload, dict) is False: - if ( - isinstance(payload, int) is True - or isinstance(payload, float) is True - ): + if isinstance(payload, int) is True or isinstance(payload, float) is True: payload = str(payload) payload = {"data": payload} except Exception: @@ -330,9 +318,7 @@ def __prepare_payload( asset_payload["dataAsset"]["dataset_id"] = dasset.id source_data_list = [ - dfield - for dfield in dasset.source_data - if dasset.source_data[dfield].id == data[node_label] + dfield for dfield in dasset.source_data if dasset.source_data[dfield].id == data[node_label] ] if len(source_data_list) > 0: @@ -371,7 +357,8 @@ def run_async( data_asset: Optional[Union[Text, Dict]] = None, name: Text = "pipeline_process", batch_mode: bool = True, - version: str = None, + version: Optional[Text] = None, + response_version: Text = "v2", **kwargs, ) -> Dict: """Runs asynchronously a pipeline call. @@ -381,12 +368,13 @@ def run_async( data_asset (Optional[Union[Text, Dict]], optional): Data asset to be processed by the pipeline. Defaults to None. name (Text, optional): ID given to a call. Defaults to "pipeline_process". batch_mode (bool, optional): Whether to run the pipeline in batch mode or online. Defaults to True. + version (Optional[Text], optional): Version of the pipeline. Defaults to None. + response_version (Text, optional): Version of the response. Defaults to "v2". kwargs: A dictionary of keyword arguments. The keys are the argument names Returns: Dict: polling URL in response """ - version = version or self.VERSION_3_0 headers = { "x-api-key": self.api_key, "Content-Type": "application/json", @@ -404,10 +392,8 @@ def run_async( try: if 200 <= r.status_code < 300: resp = r.json() - logging.info( - f"Result of request for {name} - {r.status_code} - {resp}" - ) - if version == "v1": + logging.info(f"Result of request for {name} - {r.status_code} - {resp}") + if response_version == "v1": return resp res = PipelineResponse( status=ResponseStatus(resp.pop("status", "failed")), @@ -430,10 +416,12 @@ def run_async( error = "Validation-related error: Please ensure all required fields are provided and correctly formatted." else: status_code = str(r.status_code) - error = f"Status {status_code}: Unspecified error: An unspecified error occurred while processing your request." + error = ( + f"Status {status_code}: Unspecified error: An unspecified error occurred while processing your request." + ) logging.error(f"Error in request for {name} - {r.status_code}: {error}") - if version == "v1": + if response_version == "v1": return { "status": "failed", "error": error, @@ -447,7 +435,7 @@ def run_async( **kwargs, ) except Exception as e: - if version == "v1": + if response_version == "v1": return { "status": "failed", "error": str(e), @@ -485,8 +473,7 @@ def update( stack = inspect.stack() if len(stack) > 2 and stack[1].function != "save": warnings.warn( - "update() is deprecated and will be removed in a future version. " - "Please use save() instead.", + "update() is deprecated and will be removed in a future version. " "Please use save() instead.", DeprecationWarning, stacklevel=2, ) @@ -501,9 +488,7 @@ def update( for i, node in enumerate(pipeline["nodes"]): if "functionType" in node: - pipeline["nodes"][i]["functionType"] = pipeline["nodes"][i][ - "functionType" - ].lower() + pipeline["nodes"][i]["functionType"] = pipeline["nodes"][i]["functionType"].lower() # prepare payload status = "draft" if save_as_asset is True: @@ -521,9 +506,7 @@ def update( "Authorization": f"Token {api_key}", "Content-Type": "application/json", } - logging.info( - f"Start service for PUT Update Pipeline - {url} - {headers} - {json.dumps(payload)}" - ) + logging.info(f"Start service for PUT Update Pipeline - {url} - {headers} - {json.dumps(payload)}") r = _request_with_retry("put", url, headers=headers, json=payload) response = r.json() logging.info(f"Pipeline {response['id']} Updated.") @@ -574,15 +557,11 @@ def save( ), "Pipeline Update Error: Make sure the pipeline to be saved is in a JSON file." with open(pipeline) as f: pipeline = json.load(f) - self.update( - pipeline=pipeline, save_as_asset=save_as_asset, api_key=api_key - ) + self.update(pipeline=pipeline, save_as_asset=save_as_asset, api_key=api_key) for i, node in enumerate(pipeline["nodes"]): if "functionType" in node: - pipeline["nodes"][i]["functionType"] = pipeline["nodes"][i][ - "functionType" - ].lower() + pipeline["nodes"][i]["functionType"] = pipeline["nodes"][i]["functionType"].lower() # prepare payload status = "draft" if save_as_asset is True: @@ -599,9 +578,7 @@ def save( "Authorization": f"Token {api_key}", "Content-Type": "application/json", } - logging.info( - f"Start service for Save Pipeline - {url} - {headers} - {json.dumps(payload)}" - ) + logging.info(f"Start service for Save Pipeline - {url} - {headers} - {json.dumps(payload)}") r = _request_with_retry("post", url, headers=headers, json=payload) response = r.json() self.id = response["id"] @@ -611,17 +588,11 @@ def save( def deploy(self, api_key: Optional[Text] = None) -> None: """Deploy the Pipeline.""" - assert ( - self.status == "draft" - ), "Pipeline Deployment Error: Pipeline must be in draft status." - assert ( - self.status != "onboarded" - ), "Pipeline Deployment Error: Pipeline must be onboarded." + assert self.status == "draft", "Pipeline Deployment Error: Pipeline must be in draft status." + assert self.status != "onboarded", "Pipeline Deployment Error: Pipeline must be onboarded." pipeline = self.to_dict() - self.update( - pipeline=pipeline, save_as_asset=True, api_key=api_key, name=self.name - ) + self.update(pipeline=pipeline, save_as_asset=True, api_key=api_key, name=self.name) self.status = AssetStatus.ONBOARDED def __repr__(self): From a48fc2db20b1f86bd25607c62f44805964a12bfc Mon Sep 17 00:00:00 2001 From: kadirpekel Date: Tue, 25 Feb 2025 22:46:53 +0100 Subject: [PATCH 15/18] BUG-382 tests fixed (#415) --- tests/functional/agent/agent_functional_test.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/functional/agent/agent_functional_test.py b/tests/functional/agent/agent_functional_test.py index 882f92db..1446af5a 100644 --- a/tests/functional/agent/agent_functional_test.py +++ b/tests/functional/agent/agent_functional_test.py @@ -25,7 +25,6 @@ from aixplain.enums.function import Function from aixplain.enums.supplier import Supplier from uuid import uuid4 -from unittest.mock import patch import pytest @@ -202,10 +201,7 @@ def test_update_draft_agent(run_input_map, delete_agents_and_team_agents, AgentF @pytest.mark.parametrize("AgentFactory", [AgentFactory, v2.Agent]) def test_fail_non_existent_llm(delete_agents_and_team_agents, AgentFactory): assert delete_agents_and_team_agents - - # Despite giving a non-existent LLM ID, the agent is created successfully - # but with given warning - with patch("logging.warning") as mock_warning: + with pytest.raises(Exception) as exc_info: AgentFactory.create( name="Test Agent", description="Test description", @@ -213,7 +209,7 @@ def test_fail_non_existent_llm(delete_agents_and_team_agents, AgentFactory): llm_id="non_existent_llm", tools=[AgentFactory.create_model_tool(function=Function.TRANSLATION)], ) - assert mock_warning.call_count == 2 + assert str(exc_info.value) == "Large Language Model with ID 'non_existent_llm' not found." @pytest.mark.parametrize("AgentFactory", [AgentFactory, v2.Agent]) From 3abe6091c68b454cedc0b2c98619630ee732f4b9 Mon Sep 17 00:00:00 2001 From: Lucas Pavanelli <86805709+lucas-aixplain@users.noreply.github.com> Date: Wed, 26 Feb 2025 08:41:41 -0300 Subject: [PATCH 16/18] Fix ModelFactory.get() calls in agent/team_agent.create() (#411) --- aixplain/factories/agent_factory/__init__.py | 4 +- aixplain/factories/agent_factory/utils.py | 29 +++++++------ .../factories/team_agent_factory/__init__.py | 18 +++++--- .../factories/team_agent_factory/utils.py | 29 +++++++------ aixplain/modules/agent/tool/model_tool.py | 3 ++ tests/unit/agent/agent_test.py | 43 +++++++++---------- tests/unit/agent/model_tool_test.py | 2 + 7 files changed, 70 insertions(+), 58 deletions(-) diff --git a/aixplain/factories/agent_factory/__init__.py b/aixplain/factories/agent_factory/__init__.py index 71bc987e..deae3fe9 100644 --- a/aixplain/factories/agent_factory/__init__.py +++ b/aixplain/factories/agent_factory/__init__.py @@ -121,7 +121,7 @@ def create( "status": "draft", "tasks": [task.to_dict() for task in tasks], } - agent = build_agent(payload=payload, api_key=api_key) + agent = build_agent(payload=payload, tools=tools, api_key=api_key) agent.validate(raise_exception=True) response = "Unspecified error" try: @@ -132,7 +132,7 @@ def create( raise Exception("Agent Onboarding Error: Please contact the administrators.") if 200 <= r.status_code < 300: - agent = build_agent(payload=response, api_key=api_key) + agent = build_agent(payload=response, tools=tools, api_key=api_key) else: error_msg = f"Agent Onboarding Error: {response}" if "message" in response: diff --git a/aixplain/factories/agent_factory/utils.py b/aixplain/factories/agent_factory/utils.py index bc1dc866..d64ab773 100644 --- a/aixplain/factories/agent_factory/utils.py +++ b/aixplain/factories/agent_factory/utils.py @@ -5,13 +5,14 @@ from aixplain.enums import Function, Supplier from aixplain.enums.asset_status import AssetStatus from aixplain.modules.agent import Agent +from aixplain.modules.agent.tool import Tool from aixplain.modules.agent.agent_task import AgentTask from aixplain.modules.agent.tool.model_tool import ModelTool from aixplain.modules.agent.tool.pipeline_tool import PipelineTool from aixplain.modules.agent.tool.python_interpreter_tool import PythonInterpreterTool from aixplain.modules.agent.tool.custom_python_code_tool import CustomPythonCodeTool from aixplain.modules.agent.tool.sql_tool import SQLTool -from typing import Dict, Text +from typing import Dict, Text, List from urllib.parse import urljoin GPT_4o_ID = "6646261c6eb563165658bbb1" @@ -67,24 +68,26 @@ def build_tool(tool: Dict): return tool -def build_agent(payload: Dict, api_key: Text = config.TEAM_API_KEY) -> Agent: +def build_agent(payload: Dict, tools: List[Tool] = None, api_key: Text = config.TEAM_API_KEY) -> Agent: """Instantiate a new agent in the platform.""" tools_dict = payload["assets"] - tools = [] - for tool in tools_dict: - try: - tools.append(build_tool(tool)) - except Exception as e: - logging.warning( - f"Tool {tool['assetId']} is not available. Make sure it exists or you have access to it. " - "If you think this is an error, please contact the administrators." - ) - continue + payload_tools = tools + if payload_tools is None: + payload_tools = [] + for tool in tools_dict: + try: + payload_tools.append(build_tool(tool)) + except Exception: + logging.warning( + f"Tool {tool['assetId']} is not available. Make sure it exists or you have access to it. " + "If you think this is an error, please contact the administrators." + ) + continue agent = Agent( id=payload["id"] if "id" in payload else "", name=payload.get("name", ""), - tools=tools, + tools=payload_tools, description=payload.get("description", ""), instructions=payload.get("role", ""), supplier=payload.get("teamId", None), diff --git a/aixplain/factories/team_agent_factory/__init__.py b/aixplain/factories/team_agent_factory/__init__.py index 7ecaad1a..e17841e6 100644 --- a/aixplain/factories/team_agent_factory/__init__.py +++ b/aixplain/factories/team_agent_factory/__init__.py @@ -51,19 +51,23 @@ def create( ) -> TeamAgent: """Create a new team agent in the platform.""" assert len(agents) > 0, "TeamAgent Onboarding Error: At least one agent must be provided." + agent_list = [] for agent in agents: if isinstance(agent, Text) is True: try: from aixplain.factories.agent_factory import AgentFactory - agent = AgentFactory.get(agent) + agent_obj = AgentFactory.get(agent) except Exception: raise Exception(f"TeamAgent Onboarding Error: Agent {agent} does not exist.") else: from aixplain.modules.agent import Agent + agent_obj = agent + assert isinstance(agent, Agent), "TeamAgent Onboarding Error: Agents must be instances of Agent class" - + agent_list.append(agent_obj) + if use_inspector and not use_mentalist: raise Exception("TeamAgent Onboarding Error: To use the Inspector agent, you must enable Mentalist.") @@ -83,13 +87,13 @@ def create( elif isinstance(supplier, Supplier): supplier = supplier.value["code"] - agent_list = [] + agent_payload_list = [] for idx, agent in enumerate(agents): - agent_list.append({"assetId": agent.id, "number": idx, "type": "AGENT", "label": "AGENT"}) + agent_payload_list.append({"assetId": agent.id, "number": idx, "type": "AGENT", "label": "AGENT"}) payload = { "name": name, - "agents": agent_list, + "agents": agent_payload_list, "links": [], "description": description, "llmId": llm_id, @@ -101,7 +105,7 @@ def create( "status": "draft", } - team_agent = build_team_agent(payload=payload, api_key=api_key) + team_agent = build_team_agent(payload=payload, agents=agent_list, api_key=api_key) team_agent.validate(raise_exception=True) response = "Unspecified error" try: @@ -112,7 +116,7 @@ def create( raise Exception(e) if 200 <= r.status_code < 300: - team_agent = build_team_agent(payload=response, api_key=api_key) + team_agent = build_team_agent(payload=response, agents=agent_list, api_key=api_key) else: error_msg = f"{response}" if "message" in response: diff --git a/aixplain/factories/team_agent_factory/utils.py b/aixplain/factories/team_agent_factory/utils.py index b6234f29..5e865cd0 100644 --- a/aixplain/factories/team_agent_factory/utils.py +++ b/aixplain/factories/team_agent_factory/utils.py @@ -3,33 +3,36 @@ import logging import aixplain.utils.config as config from aixplain.enums.asset_status import AssetStatus +from aixplain.modules.agent import Agent from aixplain.modules.team_agent import TeamAgent -from typing import Dict, Text +from typing import Dict, Text, List from urllib.parse import urljoin GPT_4o_ID = "6646261c6eb563165658bbb1" -def build_team_agent(payload: Dict, api_key: Text = config.TEAM_API_KEY) -> TeamAgent: +def build_team_agent(payload: Dict, agents: List[Agent] = None, api_key: Text = config.TEAM_API_KEY) -> TeamAgent: """Instantiate a new team agent in the platform.""" from aixplain.factories.agent_factory import AgentFactory agents_dict = payload["agents"] - agents = [] - for i, agent in enumerate(agents_dict): - try: - agents.append(AgentFactory.get(agent["assetId"])) - except Exception: - logging.warning( - f"Agent {agent['assetId']} not found. Make sure it exists or you have access to it. " - "If you think this is an error, please contact the administrators." - ) - continue + payload_agents = agents + if payload_agents is None: + payload_agents = [] + for i, agent in enumerate(agents_dict): + try: + payload_agents.append(AgentFactory.get(agent["assetId"])) + except Exception: + logging.warning( + f"Agent {agent['assetId']} not found. Make sure it exists or you have access to it. " + "If you think this is an error, please contact the administrators." + ) + continue team_agent = TeamAgent( id=payload.get("id", ""), name=payload.get("name", ""), - agents=agents, + agents=payload_agents, description=payload.get("description", ""), supplier=payload.get("teamId", None), version=payload.get("version", None), diff --git a/aixplain/modules/agent/tool/model_tool.py b/aixplain/modules/agent/tool/model_tool.py index 5175b1b4..f0cb88e7 100644 --- a/aixplain/modules/agent/tool/model_tool.py +++ b/aixplain/modules/agent/tool/model_tool.py @@ -114,6 +114,9 @@ def to_dict(self) -> Dict: def validate(self) -> Model: from aixplain.factories.model_factory import ModelFactory + if self.model_object is not None: + return self.model_object + try: model = None if self.model is not None: diff --git a/tests/unit/agent/agent_test.py b/tests/unit/agent/agent_test.py index 2685be77..e60f116b 100644 --- a/tests/unit/agent/agent_test.py +++ b/tests/unit/agent/agent_test.py @@ -160,13 +160,13 @@ def test_create_agent(mock_model_factory_get): { "type": "utility", "utility": "custom_python_code", - "description": "", + "utilityCode": "def main(query: str) -> str:\n return 'Hello, how are you?'", + "description": "Test Tool", }, { "type": "utility", "utility": "custom_python_code", - "utilityCode": "def main(query: str) -> str:\n return 'Hello, how are you?'", - "description": "Test Tool", + "description": "", }, ], } @@ -209,10 +209,9 @@ def test_create_agent(mock_model_factory_get): assert agent.tools[0].description == ref_response["assets"][0]["description"] assert isinstance(agent.tools[0], ModelTool) assert agent.tools[1].description == ref_response["assets"][1]["description"] - assert isinstance(agent.tools[1], PythonInterpreterTool) + assert isinstance(agent.tools[1], CustomPythonCodeTool) assert agent.tools[2].description == ref_response["assets"][2]["description"] - assert agent.tools[2].code == ref_response["assets"][2]["utilityCode"] - assert isinstance(agent.tools[2], CustomPythonCodeTool) + assert isinstance(agent.tools[2], PythonInterpreterTool) assert agent.status == AssetStatus.DRAFT @@ -731,14 +730,13 @@ def test_create_agent_with_model_instance(mock_model_factory_get, mock_validate) # Verify the tool was converted correctly tool = agent.tools[0] - assert isinstance(tool, ModelTool) - assert tool.model == "model123" - assert tool.function == Function.TEXT_GENERATION - assert tool.supplier == Supplier.AIXPLAIN - assert isinstance(tool.model_object, Model) - assert isinstance(tool.model_object.model_params, ModelParameters) - assert tool.model_object.model_params.parameters["temperature"].required - assert not tool.model_object.model_params.parameters["max_tokens"].required + assert isinstance(tool, Model) + assert tool.name == model_tool.name + assert tool.function == model_tool.function + assert tool.supplier == model_tool.supplier + assert isinstance(tool.model_params, ModelParameters) + assert tool.model_params.parameters["temperature"].required + assert not tool.model_params.parameters["max_tokens"].required @patch("aixplain.modules.agent.tool.model_tool.ModelTool.validate", autospec=True) @@ -862,16 +860,15 @@ def validate_side_effect(self, *args, **kwargs): assert agent.description == ref_response["description"] assert len(agent.tools) == 2 - # Verify the first tool (Model instance converted to ModelTool) + # Verify the first tool (Model) tool1 = agent.tools[0] - assert isinstance(tool1, ModelTool) - assert tool1.model == "model123" - assert tool1.function == Function.TEXT_GENERATION - assert tool1.supplier == Supplier.AIXPLAIN - assert isinstance(tool1.model_object, Model) - assert isinstance(tool1.model_object.model_params, ModelParameters) - assert tool1.model_object.model_params.parameters["temperature"].required - assert not tool1.model_object.model_params.parameters["max_tokens"].required + assert isinstance(tool1, Model) + assert tool1.name == model_tool.name + assert tool1.function == model_tool.function + assert tool1.supplier == model_tool.supplier + assert isinstance(tool1.model_params, ModelParameters) + assert tool1.model_params.parameters["temperature"].required + assert not tool1.model_params.parameters["max_tokens"].required # Verify the second tool (regular ModelTool) tool2 = agent.tools[1] diff --git a/tests/unit/agent/model_tool_test.py b/tests/unit/agent/model_tool_test.py index 84770fc5..bb849d8f 100644 --- a/tests/unit/agent/model_tool_test.py +++ b/tests/unit/agent/model_tool_test.py @@ -115,6 +115,7 @@ def test_validate(mock_model, mock_model_factory, model_exists): tool = ModelTool() tool.model = "test_model_id" tool.api_key = None + tool.model_object = None validated_model = tool.validate() assert validated_model == mock_model else: @@ -123,6 +124,7 @@ def test_validate(mock_model, mock_model_factory, model_exists): tool = ModelTool() tool.model = "nonexistent_model" tool.api_key = None + tool.model_object = None with pytest.raises(Exception, match="Model Tool Unavailable"): tool.validate() From 78dde574cd1512d6cb1bd289a3906dcf75f74278 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20G=C3=BCnd=C3=BCz?= Date: Wed, 26 Feb 2025 17:47:10 +0300 Subject: [PATCH 17/18] 'tatus ->status bug fixed ' (#416) * 'tatus ->status bug fixed ' * unit test added for parameter 'status' in agentresponse * ignore e203 in flake as it conflicts with black --- .pre-commit-config.yaml | 4 +- aixplain/modules/agent/agent_response.py | 2 +- tests/unit/agent/agent_test.py | 65 +++++++++++++++++++++--- 3 files changed, 61 insertions(+), 10 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c6b06079..456aba3b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,5 +21,5 @@ repos: rev: v2.0.0 # Use the latest version hooks: - id: flake8 - args: # arguments to configure black - - --ignore=E402,E501 \ No newline at end of file + args: # arguments to configure flake8 + - --ignore=E402,E501,E203 \ No newline at end of file diff --git a/aixplain/modules/agent/agent_response.py b/aixplain/modules/agent/agent_response.py index 9ece7aa7..73c5e839 100644 --- a/aixplain/modules/agent/agent_response.py +++ b/aixplain/modules/agent/agent_response.py @@ -52,5 +52,5 @@ def to_dict(self) -> Dict[Text, Any]: return base_dict def __repr__(self) -> str: - fields = super().__repr__().strip("ModelResponse(").rstrip(")") + fields = super().__repr__()[len("ModelResponse(") : -1] return f"AgentResponse({fields})" diff --git a/tests/unit/agent/agent_test.py b/tests/unit/agent/agent_test.py index e60f116b..8afda296 100644 --- a/tests/unit/agent/agent_test.py +++ b/tests/unit/agent/agent_test.py @@ -108,9 +108,9 @@ def test_invalid_llm_id(): def test_invalid_agent_name(): with pytest.raises(Exception) as exc_info: AgentFactory.create(name="[Test]", description="", instructions="", tools=[], llm_id="6646261c6eb563165658bbb1") - assert ( - str(exc_info.value) - == "Agent Creation Error: Agent name contains invalid characters. Only alphanumeric characters, spaces, hyphens, and brackets are allowed." + assert str(exc_info.value) == ( + "Agent Creation Error: Agent name contains invalid characters. " + "Only alphanumeric characters, spaces, hyphens, and brackets are allowed." ) @@ -299,7 +299,7 @@ def test_update_success(mock_model_factory_get): # Capture warnings with pytest.warns( DeprecationWarning, - match="update\(\) is deprecated and will be removed in a future version. Please use save\(\) instead.", + match="update\(\) is deprecated and will be removed in a future version. Please use save\(\) instead.", # noqa: W605 ): agent.update() @@ -411,9 +411,10 @@ def test_run_variable_error(): agent = Agent("123", "Test Agent", "Translate the input data into {target_language}", "Test Agent Role") with pytest.raises(Exception) as exc_info: agent.run_async(data={"query": "Hello, how are you?"}, output_format=OutputFormat.MARKDOWN) - assert ( - str(exc_info.value) - == "Variable 'target_language' not found in data or parameters. This variable is required by the agent according to its description ('Translate the input data into {target_language}')." + assert str(exc_info.value) == ( + "Variable 'target_language' not found in data or parameters. " + "This variable is required by the agent according to its description " + "('Translate the input data into {target_language}')." ) @@ -910,3 +911,53 @@ def test_create_model_tool_with_text_supplier(supplier_input, expected_supplier, assert tool.supplier.name == expected_supplier assert tool.function == Function.TEXT_GENERATION assert tool.description == "Test Tool" + + +def test_agent_response_repr(): + from aixplain.enums import ResponseStatus + from aixplain.modules.agent.agent_response import AgentResponse, AgentResponseData + + # Test case 1: Basic representation + response = AgentResponse(status=ResponseStatus.SUCCESS, data=AgentResponseData(input="test input"), completed=True) + repr_str = repr(response) + + # Verify the representation starts with "AgentResponse(" + assert repr_str.startswith("AgentResponse(") + assert repr_str.endswith(")") + + # Verify key fields are present and correct + assert "status=SUCCESS" in repr_str + assert "completed=True" in repr_str + + # Test case 2: Complex representation with all fields + response = AgentResponse( + status=ResponseStatus.SUCCESS, + data=AgentResponseData( + input="test input", + output="test output", + session_id="test_session", + intermediate_steps=["step1", "step2"], + execution_stats={"time": 1.0}, + ), + details={"test": "details"}, + completed=True, + error_message="no error", + used_credits=0.5, + run_time=1.0, + usage={"tokens": 100}, + url="http://test.url", + ) + repr_str = repr(response) + + # Verify all fields are present and formatted correctly + assert "status=SUCCESS" in repr_str + assert "completed=True" in repr_str + assert "error_message='no error'" in repr_str + assert "used_credits=0.5" in repr_str + assert "run_time=1.0" in repr_str + assert "url='http://test.url'" in repr_str + assert "details={'test': 'details'}" in repr_str + assert "usage={'tokens': 100}" in repr_str + + # Most importantly, verify that 'status' is complete (not 'tatus') + assert "status=" in repr_str # Should find complete field name From 18910409c26f87a0c0f2c0f8976eebe357734e1a Mon Sep 17 00:00:00 2001 From: kadirpekel Date: Wed, 26 Feb 2025 18:05:47 +0100 Subject: [PATCH 18/18] BUG-382: fixed tests (#418) * BUG-382: fixed tests * BUG-382: fixed tests --- .../team_agent/team_agent_functional_test.py | 45 +++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/tests/functional/team_agent/team_agent_functional_test.py b/tests/functional/team_agent/team_agent_functional_test.py index 83cbbf7d..c76dc8eb 100644 --- a/tests/functional/team_agent/team_agent_functional_test.py +++ b/tests/functional/team_agent/team_agent_functional_test.py @@ -26,7 +26,6 @@ from copy import copy from uuid import uuid4 import pytest -from unittest.mock import patch from aixplain import aixplain_v2 as v2 @@ -167,16 +166,46 @@ def test_draft_team_agent_update(run_input_map, TeamAgentFactory): @pytest.mark.parametrize("TeamAgentFactory", [TeamAgentFactory, v2.TeamAgent]) -def test_fail_non_existent_llm(TeamAgentFactory): - with patch("logging.warning") as mock_warning: - AgentFactory.create( - name="Test Agent", +def test_fail_non_existent_llm(run_input_map, TeamAgentFactory): + for team in TeamAgentFactory.list()["results"]: + team.delete() + for agent in AgentFactory.list()["results"]: + agent.delete() + + agents = [] + for agent in run_input_map["agents"]: + tools = [] + if "model_tools" in agent: + for tool in agent["model_tools"]: + tool_ = copy(tool) + for supplier in Supplier: + if tool["supplier"] is not None and tool["supplier"].lower() in [ + supplier.value["code"].lower(), + supplier.value["name"].lower(), + ]: + tool_["supplier"] = supplier + break + tools.append(AgentFactory.create_model_tool(**tool_)) + if "pipeline_tools" in agent: + for tool in agent["pipeline_tools"]: + tools.append(AgentFactory.create_pipeline_tool(pipeline=tool["pipeline_id"], description=tool["description"])) + + agent = AgentFactory.create( + name=agent["agent_name"], + description=agent["agent_name"], + instructions=agent["agent_name"], + llm_id=agent["llm_id"], + tools=tools, + ) + agents.append(agent) + with pytest.raises(Exception) as exc_info: + TeamAgentFactory.create( + name="Non Existent LLM", description="", - instructions="", llm_id="non_existent_llm", - tools=[AgentFactory.create_model_tool(function=Function.TRANSLATION)], + agents=agents, ) - assert mock_warning.call_count == 2 + assert str(exc_info.value) == "Large Language Model with ID 'non_existent_llm' not found." @pytest.mark.parametrize("TeamAgentFactory", [TeamAgentFactory, v2.TeamAgent])