dataiku-api-client 14.6.1__tar.gz → 14.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/HISTORY.txt +10 -0
- {dataiku_api_client-14.6.1/dataiku_api_client.egg-info → dataiku_api_client-14.7.0}/PKG-INFO +12 -2
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0/dataiku_api_client.egg-info}/PKG-INFO +12 -2
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/SOURCES.txt +1 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/admin.py +10 -1
- dataiku_api_client-14.7.0/dataikuapi/dss/cobuild.py +317 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm_tracing/__init__.py +1 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/messaging_channel.py +4 -4
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/ml.py +9 -8
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/project.py +107 -6
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dssclient.py +9 -8
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/artifact.py +5 -5
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern_client.py +0 -6
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/setup.py +1 -1
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/LICENSE.txt +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/MANIFEST.in +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/README +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/dependency_links.txt +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/requires.txt +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/top_level.txt +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin/auth.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin/service.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin_client.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_client.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/auth.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/base_client.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/agent.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/agent_review.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/agent_tool.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/analysis.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/apideployer.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/apiservice.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/app.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/businessapp.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/codestudio.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/continuousactivity.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/dashboard.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/data_collection.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/data_directories_footprint.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/data_quality.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/dataset.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/discussion.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/document_extractor.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/drift.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/enterprise_asset_library.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/evaluationcomparison.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/evaluationstore.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/feature_store.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/flow.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/future.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/insight.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/job.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/jupyternotebook.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/knowledgebank.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/labeling_task.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/embeddings.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/knowledge_bank.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/llm.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/tool.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/utils.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm_utils/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/local_model.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/macro.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/managedfolder.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/meaning.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/metrics.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/mlflow.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/modelcomparison.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/modelevaluationstore.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/notebook.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/plugin.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/project_standards.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/projectdeployer.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/projectfolder.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/projectlibrary.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/recipe.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/retrieval_augmented_llm.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/savedmodel.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/scenario.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/semantic_model.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/sqlnotebook.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/sqlquery.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/statistics.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/streaming_endpoint.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/tools/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/tools/codegen.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/tools/langchain.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/unifiedmonitoring.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/utils.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/webapp.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/wiki.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/workspace.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/artifact_repository.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/header_provider.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/utils.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/cloudaccounts.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/future.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/instances.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/instancesettingstemplates.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/loadbalancers.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/tenant.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/virtualnetworks.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fmclient.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin_blueprint_designer.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin_custom_pages_handler.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin_roles_permissions_handler.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/artifact_search.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/blueprint.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/custom_page.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/future.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/time_series.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/uploaded_file.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/users_container.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/iam/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/iam/settings.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/__init__.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/exceptions.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/group.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/node.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/profile.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/response.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/task.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/user.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad_client.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/utils.py +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/requirements.txt +0 -0
- {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/setup.cfg +0 -0
{dataiku_api_client-14.6.1/dataiku_api_client.egg-info → dataiku_api_client-14.7.0}/PKG-INFO
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dataiku-api-client
|
|
3
|
-
Version: 14.
|
|
3
|
+
Version: 14.7.0
|
|
4
4
|
Summary: Python API client for Dataiku APIs
|
|
5
5
|
Home-page: https://www.dataiku.com
|
|
6
|
-
Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.
|
|
6
|
+
Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.7.0
|
|
7
7
|
Author: Dataiku
|
|
8
8
|
Author-email: support@dataiku.com
|
|
9
9
|
License: Apache Software License
|
|
@@ -36,6 +36,16 @@ Changelog
|
|
|
36
36
|
==========
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
14.7.0 (2026-06-18)
|
|
40
|
+
-------------------
|
|
41
|
+
|
|
42
|
+
* Initial release for DSS 14.7.0
|
|
43
|
+
|
|
44
|
+
14.6.2 (2026-06-15)
|
|
45
|
+
-------------------
|
|
46
|
+
|
|
47
|
+
* Initial release for DSS 14.6.2
|
|
48
|
+
|
|
39
49
|
14.6.1 (2026-06-05)
|
|
40
50
|
-------------------
|
|
41
51
|
|
{dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0/dataiku_api_client.egg-info}/PKG-INFO
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dataiku-api-client
|
|
3
|
-
Version: 14.
|
|
3
|
+
Version: 14.7.0
|
|
4
4
|
Summary: Python API client for Dataiku APIs
|
|
5
5
|
Home-page: https://www.dataiku.com
|
|
6
|
-
Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.
|
|
6
|
+
Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.7.0
|
|
7
7
|
Author: Dataiku
|
|
8
8
|
Author-email: support@dataiku.com
|
|
9
9
|
License: Apache Software License
|
|
@@ -36,6 +36,16 @@ Changelog
|
|
|
36
36
|
==========
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
14.7.0 (2026-06-18)
|
|
40
|
+
-------------------
|
|
41
|
+
|
|
42
|
+
* Initial release for DSS 14.7.0
|
|
43
|
+
|
|
44
|
+
14.6.2 (2026-06-15)
|
|
45
|
+
-------------------
|
|
46
|
+
|
|
47
|
+
* Initial release for DSS 14.6.2
|
|
48
|
+
|
|
39
49
|
14.6.1 (2026-06-05)
|
|
40
50
|
-------------------
|
|
41
51
|
|
|
@@ -27,7 +27,7 @@ class DSSConnectionListItem(dict):
|
|
|
27
27
|
|
|
28
28
|
:rtype: :class:`DSSConnection`
|
|
29
29
|
"""
|
|
30
|
-
return DSSConnection(self.client, self
|
|
30
|
+
return DSSConnection(self.client, self.name)
|
|
31
31
|
|
|
32
32
|
@property
|
|
33
33
|
def name(self):
|
|
@@ -36,6 +36,8 @@ class DSSConnectionListItem(dict):
|
|
|
36
36
|
|
|
37
37
|
:rtype: string
|
|
38
38
|
"""
|
|
39
|
+
if "name" in self:
|
|
40
|
+
return self["name"]
|
|
39
41
|
return self["id"]
|
|
40
42
|
|
|
41
43
|
@property
|
|
@@ -46,6 +48,8 @@ class DSSConnectionListItem(dict):
|
|
|
46
48
|
:return: a DSS connection type, like PostgreSQL, EC2, Azure, ...
|
|
47
49
|
:rtype: string
|
|
48
50
|
"""
|
|
51
|
+
if "type" in self:
|
|
52
|
+
return self["type"]
|
|
49
53
|
return self["label"]
|
|
50
54
|
|
|
51
55
|
class DSSConnectionInfo(dict):
|
|
@@ -702,6 +706,11 @@ class DSSUser(object):
|
|
|
702
706
|
extra_headers={"X-DKU-ProxyUser": self.login}, client_certificate=self.client._session.cert)
|
|
703
707
|
client_as._session.verify = self.client._session.verify
|
|
704
708
|
return client_as
|
|
709
|
+
elif self.client.jwt_bearer_token is not None:
|
|
710
|
+
client_as = DSSClient(self.client.host, jwt_bearer_token = self.client.jwt_bearer_token,
|
|
711
|
+
extra_headers={"X-DKU-ProxyUser": self.login}, client_certificate=self.client._session.cert)
|
|
712
|
+
client_as._session.verify = self.client._session.verify
|
|
713
|
+
return client_as
|
|
705
714
|
else:
|
|
706
715
|
raise ValueError("Don't know how to proxy this client")
|
|
707
716
|
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
from dataikuapi.dss.dataset import DSSDataset
|
|
2
|
+
from dataikuapi.dss.evaluationstore import DSSEvaluationStore
|
|
3
|
+
from dataikuapi.dss.knowledgebank import DSSKnowledgeBank
|
|
4
|
+
from dataikuapi.dss.labeling_task import DSSLabelingTask
|
|
5
|
+
from dataikuapi.dss.managedfolder import DSSManagedFolder
|
|
6
|
+
from dataikuapi.dss.recipe import DSSRecipe
|
|
7
|
+
from dataikuapi.dss.savedmodel import DSSSavedModel
|
|
8
|
+
from dataikuapi.dss.streaming_endpoint import DSSStreamingEndpoint
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CobuildMessage(object):
|
|
12
|
+
def __init__(self, raw):
|
|
13
|
+
self._raw = raw
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def message(self):
|
|
17
|
+
"""
|
|
18
|
+
The text content of the response.
|
|
19
|
+
|
|
20
|
+
:rtype: str or None
|
|
21
|
+
"""
|
|
22
|
+
return self._raw.get("message")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class CobuildAssistantResponse(CobuildMessage):
|
|
26
|
+
"""
|
|
27
|
+
A response from the Cobuild AI assistant.
|
|
28
|
+
|
|
29
|
+
.. important::
|
|
30
|
+
Do not create this class directly, it is returned by :meth:`DSSCobuildConversation.send_message`
|
|
31
|
+
and :meth:`DSSCobuildConversation.answer_confirmation`.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
@property
|
|
35
|
+
def role(self):
|
|
36
|
+
"""
|
|
37
|
+
Role of the message sender ("user" or "assistant")
|
|
38
|
+
|
|
39
|
+
:rtype: str
|
|
40
|
+
"""
|
|
41
|
+
return "assistant"
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def type(self):
|
|
45
|
+
"""
|
|
46
|
+
Type of the response: ``"assistant_message"``, ``"delete_confirmation_request"``,
|
|
47
|
+
or ``"error"``.
|
|
48
|
+
|
|
49
|
+
- ``"assistant_message"``: the assistant has completed its turn; the conversation is idle.
|
|
50
|
+
- ``"delete_confirmation_request"``: the assistant is requesting confirmation before
|
|
51
|
+
deleting objects. Call :meth:`DSSCobuildConversation.answer_confirmation`
|
|
52
|
+
with a choice of ``"APPROVE"`` or ``"CANCEL"`` to continue.
|
|
53
|
+
- ``"error"``: an error occurred while processing the Cobuild turn. In the public API,
|
|
54
|
+
missing tool permissions are reported through this error response too.
|
|
55
|
+
|
|
56
|
+
:rtype: str
|
|
57
|
+
"""
|
|
58
|
+
return self._raw.get("type")
|
|
59
|
+
|
|
60
|
+
@property
|
|
61
|
+
def is_question(self):
|
|
62
|
+
"""
|
|
63
|
+
DEPRECATED ... DEPRECATED ... DEPRECATED ... DEPRECATED
|
|
64
|
+
Whether the assistant is asking the user a question. If ``True``, call
|
|
65
|
+
:meth:`DSSCobuildConversation.send_message` again with the answer to continue.
|
|
66
|
+
|
|
67
|
+
:rtype: bool
|
|
68
|
+
"""
|
|
69
|
+
return False
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def is_confirmation_request(self):
|
|
73
|
+
"""
|
|
74
|
+
Whether the assistant is requesting confirmation before deleting objects
|
|
75
|
+
or doing other operations requiring confirmation.
|
|
76
|
+
If ``True``, call :meth:`DSSCobuildConversation.answer_confirmation` with a choice of
|
|
77
|
+
``"APPROVE"`` or ``"CANCEL"`` to continue.
|
|
78
|
+
If the confirmation is about a deletion, inspect :attr:`objects_to_delete`
|
|
79
|
+
and :attr:`deletion_impacts` for details.
|
|
80
|
+
|
|
81
|
+
:rtype: bool
|
|
82
|
+
"""
|
|
83
|
+
return self.type == "delete_confirmation_request"
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def is_error(self):
|
|
87
|
+
"""
|
|
88
|
+
Whether the response represents an error.
|
|
89
|
+
|
|
90
|
+
:rtype: bool
|
|
91
|
+
"""
|
|
92
|
+
return self._raw.get("error", False)
|
|
93
|
+
|
|
94
|
+
@property
|
|
95
|
+
def objects_to_delete(self):
|
|
96
|
+
"""
|
|
97
|
+
For ``"delete_confirmation_request"`` responses: the list of objects that the assistant
|
|
98
|
+
is requesting permission to delete (or unshare). Each entry is a dict with fields
|
|
99
|
+
``projectKey``, ``type``, ``id``, and ``displayName``.
|
|
100
|
+
|
|
101
|
+
``None`` for other response types.
|
|
102
|
+
|
|
103
|
+
:rtype: list of dict or None
|
|
104
|
+
"""
|
|
105
|
+
return self._raw.get("objectsToDelete")
|
|
106
|
+
|
|
107
|
+
@property
|
|
108
|
+
def deletion_impacts(self):
|
|
109
|
+
"""
|
|
110
|
+
For ``"delete_confirmation_request"`` responses: a dict describing the cascading effects
|
|
111
|
+
of the requested deletion (recipes that would be deleted, datasets left unchanged, etc.).
|
|
112
|
+
|
|
113
|
+
``None`` for other response types.
|
|
114
|
+
|
|
115
|
+
:rtype: dict or None
|
|
116
|
+
"""
|
|
117
|
+
return self._raw.get("deletionImpacts")
|
|
118
|
+
|
|
119
|
+
def __repr__(self):
|
|
120
|
+
return "CobuildAssistantResponse(type=%r, message=%r)" % (self.type, self.message)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class CobuildUserMessage(CobuildMessage):
|
|
124
|
+
"""
|
|
125
|
+
A message sent to Cobuild AI assistant by the user.
|
|
126
|
+
|
|
127
|
+
.. important::
|
|
128
|
+
Do not create this class directly, it is automatically created when using :meth:`dataikuapi.dss.project.DSSProject.new_cobuild_conversation`,
|
|
129
|
+
:meth:`DSSCobuildConversation.send_message`, and
|
|
130
|
+
:meth:`DSSCobuildConversation.answer_confirmation`.
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
@property
|
|
134
|
+
def role(self):
|
|
135
|
+
"""
|
|
136
|
+
Role of the message sender ("user" or "assistant")
|
|
137
|
+
|
|
138
|
+
:rtype: str
|
|
139
|
+
"""
|
|
140
|
+
return "user"
|
|
141
|
+
|
|
142
|
+
@property
|
|
143
|
+
def type(self):
|
|
144
|
+
"""
|
|
145
|
+
Type of the message: ``"request"`` or ``"delete_confirmation_response"``.
|
|
146
|
+
|
|
147
|
+
- ``"request"``: a normal message sent to cobuild.
|
|
148
|
+
- ``"delete_confirmation_response"``: user response when cobuild requests confirmation before deleting objects
|
|
149
|
+
|
|
150
|
+
:rtype: str
|
|
151
|
+
"""
|
|
152
|
+
return self._raw.get("type", "request")
|
|
153
|
+
|
|
154
|
+
@property
|
|
155
|
+
def is_confirmation_response(self):
|
|
156
|
+
"""
|
|
157
|
+
Whether this message is the answer for assistant requesting confirmation before deleting objects
|
|
158
|
+
|
|
159
|
+
:rtype: bool
|
|
160
|
+
"""
|
|
161
|
+
return self.type == "delete_confirmation_response"
|
|
162
|
+
|
|
163
|
+
def __repr__(self):
|
|
164
|
+
return "CobuildUserMessage(type=%r, message=%r)" % (self.type, self.message)
|
|
165
|
+
|
|
166
|
+
def _DSS_objects_to_selected(project_key, objects):
|
|
167
|
+
return [_DSS_object_to_selected(project_key, object) for object in objects]
|
|
168
|
+
|
|
169
|
+
def _DSS_object_to_selected(project_key, object):
|
|
170
|
+
prefix = "" if project_key == object.project_key else object.project_key + "."
|
|
171
|
+
|
|
172
|
+
if isinstance(object, DSSDataset):
|
|
173
|
+
return { "type": "DATASET", "id": prefix + object.id}
|
|
174
|
+
if isinstance(object, DSSRecipe):
|
|
175
|
+
return { "type": "RECIPE", "id": prefix + object.id}
|
|
176
|
+
if isinstance(object, DSSManagedFolder):
|
|
177
|
+
return { "type": "MANAGED_FOLDER", "id": prefix + object.id}
|
|
178
|
+
if isinstance(object, DSSSavedModel):
|
|
179
|
+
return { "type": "SAVED_MODEL", "id": prefix + object.id}
|
|
180
|
+
if isinstance(object, DSSStreamingEndpoint):
|
|
181
|
+
return { "type": "STREAMING_ENDPOINT", "id": prefix + object.id}
|
|
182
|
+
if isinstance(object, DSSLabelingTask):
|
|
183
|
+
return { "type": "LABELING_TASK", "id": prefix + object.id}
|
|
184
|
+
if isinstance(object, DSSKnowledgeBank):
|
|
185
|
+
return { "type": "RETRIEVABLE_KNOWLEDGE", "id": prefix + object.id}
|
|
186
|
+
if isinstance(object, DSSEvaluationStore):
|
|
187
|
+
return { "type": "MODEL_EVALUATION_STORE", "id": prefix + object.id}
|
|
188
|
+
else:
|
|
189
|
+
raise ValueError("Unsupported object type")
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
class DSSCobuildConversation(object):
|
|
193
|
+
"""
|
|
194
|
+
A handle to a conversation with Cobuild AI assistant.
|
|
195
|
+
|
|
196
|
+
.. important::
|
|
197
|
+
Do not create this class directly, instead use
|
|
198
|
+
:meth:`dataikuapi.dss.project.DSSProject.new_cobuild_conversation`.
|
|
199
|
+
|
|
200
|
+
The :attr:`messages` property accumulates all exchanges made through this handle (user inputs
|
|
201
|
+
and assistant responses).
|
|
202
|
+
|
|
203
|
+
A typical interaction::
|
|
204
|
+
|
|
205
|
+
conv = project.new_cobuild_conversation()
|
|
206
|
+
response = conv.send_message("List the datasets in this project")
|
|
207
|
+
print(response.message)
|
|
208
|
+
|
|
209
|
+
conv.send_message("Now filter the Orders dataset to keep only orders with an amount > 1000")
|
|
210
|
+
print(conv.messages[-1].message)
|
|
211
|
+
|
|
212
|
+
When the assistant needs to delete objects, it first asks for confirmation::
|
|
213
|
+
|
|
214
|
+
response = conv.send_message("Delete the Orders dataset")
|
|
215
|
+
if response.is_confirmation_request:
|
|
216
|
+
print("Objects to delete:", response.objects_to_delete)
|
|
217
|
+
response = conv.answer_confirmation("APPROVE")
|
|
218
|
+
print(response.message)
|
|
219
|
+
|
|
220
|
+
If a tool requires edit permission, pass ``allow_edit_project=True`` to
|
|
221
|
+
:meth:`send_message` to allow Cobuild to create and edit objects for that message.
|
|
222
|
+
"""
|
|
223
|
+
|
|
224
|
+
def __init__(self, client, project_key, conversation_id, selected_objects=None):
|
|
225
|
+
self.client = client
|
|
226
|
+
self.project_key = project_key
|
|
227
|
+
self.conversation_id = conversation_id
|
|
228
|
+
self._messages = []
|
|
229
|
+
self._pending_confirmation_id = None
|
|
230
|
+
self._selected_objects = selected_objects
|
|
231
|
+
|
|
232
|
+
@property
|
|
233
|
+
def messages(self):
|
|
234
|
+
"""
|
|
235
|
+
All messages exchanged during this conversation, in order.
|
|
236
|
+
|
|
237
|
+
User message entries are :class:`CobuildUserMessage`.
|
|
238
|
+
|
|
239
|
+
Assistant message entries are :class:`CobuildAssistantResponse`.
|
|
240
|
+
|
|
241
|
+
:rtype: list of :class:`CobuildAssistantResponse` or :class:`CobuildUserMessage`
|
|
242
|
+
"""
|
|
243
|
+
return list(self._messages)
|
|
244
|
+
|
|
245
|
+
def send_message(self, message, selected_objects=None, allow_edit_project=False):
|
|
246
|
+
"""
|
|
247
|
+
Send a message to the assistant and wait for its response.
|
|
248
|
+
|
|
249
|
+
The message and assistant response are appended to :attr:`messages`.
|
|
250
|
+
|
|
251
|
+
:param str message: the message to send
|
|
252
|
+
:param selected_objects: object selection the assistant should focus on. It is reused for any subsequent message, unless overwritten
|
|
253
|
+
:type selected_objects: list[:class:`.DSSDataset`, :class:`.DSSRecipe`, :class:`.DSSLabelingTask`, :class:`.DSSManagedFolder`, :class:`.DSSSavedModel`, :class:`.DSSKnowledgeBank`, :class:`.DSSModelEvaluationStore` or :class:`.DSSStreamingEndpoint`]
|
|
254
|
+
:param bool allow_edit_project: whether to allow Cobuild to create and edit everything
|
|
255
|
+
needed in this project to follow this message. This permission applies only to this
|
|
256
|
+
message.
|
|
257
|
+
|
|
258
|
+
:returns: the assistant's response
|
|
259
|
+
:rtype: :class:`CobuildAssistantResponse`
|
|
260
|
+
"""
|
|
261
|
+
if selected_objects is not None:
|
|
262
|
+
self._selected_objects = _DSS_objects_to_selected(self.project_key, selected_objects)
|
|
263
|
+
|
|
264
|
+
self._messages.append(CobuildUserMessage({"type": "request", "message": message, "selected_objects": self._selected_objects}))
|
|
265
|
+
raw = self.client._perform_json(
|
|
266
|
+
"POST",
|
|
267
|
+
"/projects/%s/cobuild/conversations/%s/messages" % (self.project_key, self.conversation_id),
|
|
268
|
+
body={
|
|
269
|
+
"message": message,
|
|
270
|
+
"selectedObjects": self._selected_objects or [],
|
|
271
|
+
"allowEditProject": allow_edit_project,
|
|
272
|
+
},
|
|
273
|
+
)
|
|
274
|
+
response = CobuildAssistantResponse(raw)
|
|
275
|
+
self._pending_confirmation_id = raw["confirmationId"] if response.is_confirmation_request else None
|
|
276
|
+
self._messages.append(response)
|
|
277
|
+
return response
|
|
278
|
+
|
|
279
|
+
def answer_confirmation(self, choice, options=None):
|
|
280
|
+
"""
|
|
281
|
+
Answer a pending confirmation request and wait for the assistant's next response.
|
|
282
|
+
|
|
283
|
+
Call this after receiving a response with :attr:`~CobuildAssistantResponse.is_confirmation_request`
|
|
284
|
+
set to ``True``.
|
|
285
|
+
|
|
286
|
+
The choice and assistant response are appended to :attr:`messages`.
|
|
287
|
+
|
|
288
|
+
:param str choice: ``"APPROVE"`` to proceed with the operation, or ``"CANCEL"`` to abort it
|
|
289
|
+
:param list options: optional list of per-object deletion options (advanced use, for delete
|
|
290
|
+
confirmations only). Each entry is a dict with ``projectKey``, ``type``, ``id``, and an
|
|
291
|
+
``options`` dict containing ``dropData``, ``dropMetastoreTable``, and
|
|
292
|
+
``deleteOrphanInsights`` booleans. When omitted, all options default to ``False``
|
|
293
|
+
(data is not dropped, metastore tables are not dropped, orphan insights are not deleted).
|
|
294
|
+
|
|
295
|
+
:returns: the assistant's response after the confirmation
|
|
296
|
+
:rtype: :class:`CobuildAssistantResponse`
|
|
297
|
+
"""
|
|
298
|
+
if choice not in ("APPROVE", "CANCEL"):
|
|
299
|
+
raise ValueError("choice must be 'APPROVE' or 'CANCEL', got %r" % choice)
|
|
300
|
+
if self._pending_confirmation_id is None:
|
|
301
|
+
raise ValueError("No pending confirmation request. Call send_message first and check is_confirmation_request.")
|
|
302
|
+
|
|
303
|
+
confirmation_id = self._pending_confirmation_id
|
|
304
|
+
self._pending_confirmation_id = None
|
|
305
|
+
self._messages.append(CobuildUserMessage({"type": "delete_confirmation_response", "message": choice}))
|
|
306
|
+
body = {"choice": choice}
|
|
307
|
+
if options is not None:
|
|
308
|
+
body["options"] = options
|
|
309
|
+
raw = self.client._perform_json(
|
|
310
|
+
"POST",
|
|
311
|
+
"/projects/%s/cobuild/conversations/%s/confirmation/%s" % (self.project_key, self.conversation_id, confirmation_id),
|
|
312
|
+
body=body,
|
|
313
|
+
)
|
|
314
|
+
response = CobuildAssistantResponse(raw)
|
|
315
|
+
self._pending_confirmation_id = raw["confirmationId"] if response.is_confirmation_request else None
|
|
316
|
+
self._messages.append(response)
|
|
317
|
+
return response
|
{dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm_tracing/__init__.py
RENAMED
|
@@ -97,6 +97,7 @@ class SpanBuilder:
|
|
|
97
97
|
@staticmethod
|
|
98
98
|
def create_event(name):
|
|
99
99
|
sb = SpanBuilder(name)
|
|
100
|
+
sb.span["type"] = "event"
|
|
100
101
|
ts = int(time.time() * 1000)
|
|
101
102
|
sb.span["timestamp"] = datetime.datetime.fromtimestamp(ts / 1000, datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
|
|
102
103
|
return sb
|
|
@@ -285,9 +285,9 @@ class DSSMailMessagingChannel(DSSMessagingChannel):
|
|
|
285
285
|
|
|
286
286
|
channel = client.get_messaging_channel("other-mail-channel-id")
|
|
287
287
|
for file in paths:
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
288
|
+
with open(file) as f:
|
|
289
|
+
# Optionally include file type ("text/csv")
|
|
290
|
+
attachments.append([file, f.read(), "text/csv"])
|
|
291
291
|
channel.send("PROJECT_KEY", ["joe@dataiku.com"], "Subject", "Body in plain text", attachments=attachments, False)
|
|
292
292
|
|
|
293
293
|
:param project_key: project issuing the email. The user must have "Write content" permission on the specified project.
|
|
@@ -299,7 +299,7 @@ class DSSMailMessagingChannel(DSSMessagingChannel):
|
|
|
299
299
|
:param body: email body (in plain text or HTML format)
|
|
300
300
|
:type body: str
|
|
301
301
|
:param attachments: files to be attached to the mail, defaults to None
|
|
302
|
-
:type attachments: list[
|
|
302
|
+
:type attachments: list[list[str, bytes, str]]
|
|
303
303
|
:param plain_text: True to send email as plain text, False to send it as HTML. Defaults to False.
|
|
304
304
|
:type plain_text: bool
|
|
305
305
|
:param sender: sender email address. Use None to use the sender defined at the channel level.
|
|
@@ -3433,6 +3433,7 @@ class DSSMLAssertionCondition(object):
|
|
|
3433
3433
|
class DSSMLAssertionsMetrics(object):
|
|
3434
3434
|
"""
|
|
3435
3435
|
Object that represents the assertions metrics for all assertions on a trained model
|
|
3436
|
+
|
|
3436
3437
|
.. important::
|
|
3437
3438
|
Do not create this object directly, use :meth:`DSSTrainedPredictionModelDetails.get_assertions_metrics` instead
|
|
3438
3439
|
"""
|
|
@@ -4129,7 +4130,7 @@ class DSSTrainedPredictionModelDetails(DSSTrainedModelDetails):
|
|
|
4129
4130
|
|
|
4130
4131
|
class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetails):
|
|
4131
4132
|
"""
|
|
4132
|
-
Object to read details of a
|
|
4133
|
+
Object to read details of a time series forecasting model, for instance the per time series metrics
|
|
4133
4134
|
|
|
4134
4135
|
.. important::
|
|
4135
4136
|
Do not create this object directly, use :meth:`DSSMLTask.get_trained_model_details()` instead
|
|
@@ -4139,10 +4140,10 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
|
|
|
4139
4140
|
|
|
4140
4141
|
def compute_residuals(self, wait=True):
|
|
4141
4142
|
"""
|
|
4142
|
-
Launch computation of residuals for this trained
|
|
4143
|
+
Launch computation of residuals for this trained time series model.
|
|
4143
4144
|
|
|
4144
4145
|
:param wait: a flag to wait for the operation to complete (defaults to **True**)
|
|
4145
|
-
:returns: if wait is True, a dictionary containing the residuals per
|
|
4146
|
+
:returns: if wait is True, a dictionary containing the residuals per time series, else a future to wait on the result
|
|
4146
4147
|
:rtype: Union[:class:`dict`, :class:`dataikuapi.dss.future.DSSFuture`]
|
|
4147
4148
|
"""
|
|
4148
4149
|
if self.mltask is not None:
|
|
@@ -4166,7 +4167,7 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
|
|
|
4166
4167
|
"""
|
|
4167
4168
|
Retrieve a list of residuals for this trained time-series models
|
|
4168
4169
|
|
|
4169
|
-
:returns: A dictionary, which contains a residuals object per
|
|
4170
|
+
:returns: A dictionary, which contains a residuals object per time series
|
|
4170
4171
|
:rtype: dict
|
|
4171
4172
|
"""
|
|
4172
4173
|
if self.mltask is not None:
|
|
@@ -4184,7 +4185,7 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
|
|
|
4184
4185
|
|
|
4185
4186
|
def compute_permutation_importance(self, wait=True, n_iterations=None, per_identifier=None):
|
|
4186
4187
|
"""
|
|
4187
|
-
Launch computation
|
|
4188
|
+
Launch feature importance computation (measured using permutation importance) for this trained time series model.
|
|
4188
4189
|
|
|
4189
4190
|
:param wait: a flag to wait for the operation to complete (defaults to **True**)
|
|
4190
4191
|
:returns: if wait is True, a dictionary, else a future to wait on the result
|
|
@@ -4238,7 +4239,7 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
|
|
|
4238
4239
|
|
|
4239
4240
|
def get_per_timeseries_metrics(self):
|
|
4240
4241
|
"""
|
|
4241
|
-
Returns per
|
|
4242
|
+
Returns per time series performance metrics for this model.
|
|
4242
4243
|
|
|
4243
4244
|
:returns: a dict of performance metrics values
|
|
4244
4245
|
:rtype: dict
|
|
@@ -4257,9 +4258,9 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
|
|
|
4257
4258
|
|
|
4258
4259
|
def get_per_timeseries_evaluation_forecasts(self):
|
|
4259
4260
|
"""
|
|
4260
|
-
Returns per
|
|
4261
|
+
Returns per time series evaluation forecasts for this model.
|
|
4261
4262
|
|
|
4262
|
-
:returns: a dict of evaluation forecasts per
|
|
4263
|
+
:returns: a dict of evaluation forecasts per time series identifier
|
|
4263
4264
|
:rtype: dict
|
|
4264
4265
|
"""
|
|
4265
4266
|
if self.mltask is not None:
|