dataiku-api-client 14.7.2__tar.gz → 14.7.4__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.7.2 → dataiku_api_client-14.7.4}/HISTORY.txt +10 -0
- {dataiku_api_client-14.7.2/dataiku_api_client.egg-info → dataiku_api_client-14.7.4}/PKG-INFO +12 -2
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4/dataiku_api_client.egg-info}/PKG-INFO +12 -2
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataiku_api_client.egg-info/SOURCES.txt +1 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/agent_tool.py +5 -2
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/cobuild.py +7 -1
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/langchain/embeddings.py +11 -2
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/llm.py +154 -16
- dataiku_api_client-14.7.4/dataikuapi/dss/mira.py +226 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dssclient.py +29 -3
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/setup.py +1 -1
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/LICENSE.txt +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/MANIFEST.in +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/README +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataiku_api_client.egg-info/dependency_links.txt +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataiku_api_client.egg-info/requires.txt +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataiku_api_client.egg-info/top_level.txt +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/apinode_admin/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/apinode_admin/auth.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/apinode_admin/service.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/apinode_admin_client.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/apinode_client.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/auth.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/base_client.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/admin.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/agent.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/agent_review.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/analysis.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/apideployer.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/apiservice.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/app.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/businessapp.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/codestudio.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/continuousactivity.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/dashboard.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/data_collection.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/data_directories_footprint.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/data_quality.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/dataset.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/discussion.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/document_extractor.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/drift.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/enterprise_asset_library.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/evaluationcomparison.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/evaluationstore.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/feature_store.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/flow.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/future.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/insight.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/job.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/jupyternotebook.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/knowledgebank.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/labeling_task.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/langchain/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/langchain/knowledge_bank.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/langchain/llm.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/langchain/tool.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/langchain/utils.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/llm_tracing/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/llm_utils/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/local_model.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/macro.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/managedfolder.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/meaning.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/messaging_channel.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/metrics.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/ml.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/mlflow.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/modelcomparison.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/modelevaluationstore.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/notebook.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/plugin.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/project.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/project_standards.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/projectdeployer.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/projectfolder.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/projectlibrary.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/recipe.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/retrieval_augmented_llm.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/savedmodel.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/scenario.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/semantic_model.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/sqlnotebook.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/sqlquery.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/statistics.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/streaming_endpoint.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/tools/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/tools/codegen.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/tools/langchain.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/unifiedmonitoring.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/utils.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/webapp.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/wiki.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/workspace.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss_plugin_mlflow/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss_plugin_mlflow/artifact_repository.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss_plugin_mlflow/header_provider.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss_plugin_mlflow/utils.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/fm/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/fm/cloudaccounts.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/fm/future.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/fm/instances.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/fm/instancesettingstemplates.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/fm/loadbalancers.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/fm/tenant.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/fm/virtualnetworks.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/fmclient.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/admin.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/admin_blueprint_designer.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/admin_custom_pages_handler.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/admin_roles_permissions_handler.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/artifact.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/artifact_search.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/blueprint.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/custom_page.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/future.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/time_series.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/uploaded_file.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern/users_container.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/govern_client.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/iam/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/iam/settings.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/launchpad/__init__.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/launchpad/exceptions.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/launchpad/group.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/launchpad/node.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/launchpad/profile.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/launchpad/response.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/launchpad/task.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/launchpad/user.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/launchpad_client.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/utils.py +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/requirements.txt +0 -0
- {dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/setup.cfg +0 -0
{dataiku_api_client-14.7.2/dataiku_api_client.egg-info → dataiku_api_client-14.7.4}/PKG-INFO
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dataiku-api-client
|
|
3
|
-
Version: 14.7.
|
|
3
|
+
Version: 14.7.4
|
|
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.7.
|
|
6
|
+
Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.7.4
|
|
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.4 (2026-09-14)
|
|
40
|
+
-------------------
|
|
41
|
+
|
|
42
|
+
* Initial release for DSS 14.7.4
|
|
43
|
+
|
|
44
|
+
14.7.3 (2026-08-03)
|
|
45
|
+
-------------------
|
|
46
|
+
|
|
47
|
+
* Initial release for DSS 14.7.3
|
|
48
|
+
|
|
39
49
|
14.7.2 (2026-07-13)
|
|
40
50
|
-------------------
|
|
41
51
|
|
{dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4/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.7.
|
|
3
|
+
Version: 14.7.4
|
|
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.7.
|
|
6
|
+
Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.7.4
|
|
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.4 (2026-09-14)
|
|
40
|
+
-------------------
|
|
41
|
+
|
|
42
|
+
* Initial release for DSS 14.7.4
|
|
43
|
+
|
|
44
|
+
14.7.3 (2026-08-03)
|
|
45
|
+
-------------------
|
|
46
|
+
|
|
47
|
+
* Initial release for DSS 14.7.3
|
|
48
|
+
|
|
39
49
|
14.7.2 (2026-07-13)
|
|
40
50
|
-------------------
|
|
41
51
|
|
|
@@ -64,7 +64,7 @@ class DSSAgentTool(object):
|
|
|
64
64
|
"""
|
|
65
65
|
return self.tool_id
|
|
66
66
|
|
|
67
|
-
def get_descriptor(self):
|
|
67
|
+
def get_descriptor(self, context=None):
|
|
68
68
|
"""
|
|
69
69
|
Get the descriptor of the tool
|
|
70
70
|
|
|
@@ -73,7 +73,10 @@ class DSSAgentTool(object):
|
|
|
73
73
|
"""
|
|
74
74
|
|
|
75
75
|
if self._descriptor is None:
|
|
76
|
-
|
|
76
|
+
if context is None:
|
|
77
|
+
self._descriptor = self.client._perform_json("GET", "/projects/%s/agents/tools/%s/descriptor" % (self.project_key, self.tool_id))
|
|
78
|
+
else:
|
|
79
|
+
self._descriptor = self.client._perform_json("POST", "/projects/%s/agents/tools/%s/descriptor" % (self.project_key, self.tool_id), body={"context": context})
|
|
77
80
|
return self._descriptor
|
|
78
81
|
|
|
79
82
|
def get_settings(self):
|
|
@@ -435,7 +435,7 @@ class DSSCobuildConversation(object):
|
|
|
435
435
|
self._messages.append(response)
|
|
436
436
|
return response
|
|
437
437
|
|
|
438
|
-
def answer_question(self, answers=None, rejected=False, used_custom_answer=False):
|
|
438
|
+
def answer_question(self, answers=None, rejected=False, used_custom_answer=False, selected_objects=None):
|
|
439
439
|
"""
|
|
440
440
|
Answer a pending question request and wait for the assistant's next response.
|
|
441
441
|
|
|
@@ -448,6 +448,9 @@ class DSSCobuildConversation(object):
|
|
|
448
448
|
``rejected=True``. Defaults to ``[]``.
|
|
449
449
|
:param bool rejected: whether to decline answering the question
|
|
450
450
|
:param bool used_custom_answer: whether one of the answers came from the custom free-text input
|
|
451
|
+
:param selected_objects: object selection the assistant should focus on. It is reused for
|
|
452
|
+
subsequent messages and question answers, unless overwritten
|
|
453
|
+
:type selected_objects: list[:class:`.DSSDataset`, :class:`.DSSRecipe`, :class:`.DSSLabelingTask`, :class:`.DSSManagedFolder`, :class:`.DSSSavedModel`, :class:`.DSSKnowledgeBank`, :class:`.DSSModelEvaluationStore` or :class:`.DSSStreamingEndpoint`]
|
|
451
454
|
|
|
452
455
|
:returns: the assistant's response after the question answer
|
|
453
456
|
:rtype: :class:`CobuildAssistantResponse`
|
|
@@ -458,6 +461,8 @@ class DSSCobuildConversation(object):
|
|
|
458
461
|
raise ValueError("answers must be a list of strings")
|
|
459
462
|
if self._pending_question_id is None:
|
|
460
463
|
raise ValueError("No pending question request. Call send_message first and check is_question_request.")
|
|
464
|
+
if selected_objects is not None:
|
|
465
|
+
self._selected_objects = _DSS_objects_to_selected(self.project_key, selected_objects)
|
|
461
466
|
|
|
462
467
|
question_id = self._pending_question_id
|
|
463
468
|
self._pending_question_id = None
|
|
@@ -472,6 +477,7 @@ class DSSCobuildConversation(object):
|
|
|
472
477
|
"rejected": rejected,
|
|
473
478
|
"answers": answers,
|
|
474
479
|
"usedCustomAnswer": used_custom_answer,
|
|
480
|
+
"selectedObjects": self._selected_objects or [],
|
|
475
481
|
},
|
|
476
482
|
)
|
|
477
483
|
response = CobuildAssistantResponse(raw)
|
{dataiku_api_client-14.7.2 → dataiku_api_client-14.7.4}/dataikuapi/dss/langchain/embeddings.py
RENAMED
|
@@ -2,16 +2,25 @@
|
|
|
2
2
|
import asyncio
|
|
3
3
|
import concurrent
|
|
4
4
|
import logging
|
|
5
|
-
import threading
|
|
5
|
+
import threading
|
|
6
|
+
import itertools
|
|
6
7
|
|
|
7
8
|
from typing import Callable, List, Any, Union
|
|
8
9
|
|
|
9
10
|
import pydantic
|
|
11
|
+
|
|
12
|
+
_thread_pool_executor_counter = itertools.count().__next__
|
|
13
|
+
|
|
14
|
+
def next_thread_pool_executor_prefix(prefix):
|
|
15
|
+
return "{}-{}".format(prefix, _thread_pool_executor_counter())
|
|
16
|
+
|
|
10
17
|
try:
|
|
11
18
|
from langchain_core.embeddings.embeddings import Embeddings
|
|
12
19
|
except ModuleNotFoundError:
|
|
13
20
|
from langchain.embeddings.base import Embeddings
|
|
14
21
|
from langchain_core.callbacks import BaseCallbackHandler, LLMManagerMixin
|
|
22
|
+
|
|
23
|
+
|
|
15
24
|
from dataikuapi.dss.llm_tracing import new_trace, SpanBuilder
|
|
16
25
|
|
|
17
26
|
from dataikuapi.dss.langchain.utils import must_use_deprecated_pydantic_config
|
|
@@ -121,7 +130,7 @@ class DKUEmbeddings(LockedDownBaseModel, Embeddings):
|
|
|
121
130
|
|
|
122
131
|
async def aembed_documents(self, texts: List[str]) -> List[List[float]]:
|
|
123
132
|
loop = asyncio.get_event_loop()
|
|
124
|
-
with concurrent.futures.ThreadPoolExecutor() as executor:
|
|
133
|
+
with concurrent.futures.ThreadPoolExecutor(thread_name_prefix=next_thread_pool_executor_prefix("DKUEmbeddingsAsyncExecutor")) as executor:
|
|
125
134
|
result = await loop.run_in_executor(executor, self.embed_documents, texts)
|
|
126
135
|
return result
|
|
127
136
|
|
|
@@ -199,6 +199,8 @@ class DSSLLMEmbeddingsQuery(object):
|
|
|
199
199
|
def new_guardrail(self, type):
|
|
200
200
|
"""
|
|
201
201
|
Start adding a guardrail to the request. You need to configure the returned object, and call add() to actually add it
|
|
202
|
+
|
|
203
|
+
:rtype: :class:`DSSLLMRequestGuardrailBuilder`
|
|
202
204
|
"""
|
|
203
205
|
return DSSLLMRequestGuardrailBuilder(self, type)
|
|
204
206
|
|
|
@@ -420,15 +422,27 @@ class SettingsMixin(object):
|
|
|
420
422
|
|
|
421
423
|
|
|
422
424
|
class DSSLLMRequestGuardrailBuilder(object):
|
|
425
|
+
"""
|
|
426
|
+
.. important::
|
|
427
|
+
Do not create this class directly, use :meth:`dataikuapi.dss.llm.DSSLLMCompletionQuery.new_guardrail`,
|
|
428
|
+
:meth:`dataikuapi.dss.llm.DSSLLMCompletionsQuery.new_guardrail`, :meth:`dataikuapi.dss.llm.DSSLLMEmbeddingsQuery.new_guardrail` or
|
|
429
|
+
:meth:`dataikuapi.dss.llm.DSSLLMImageGenerationQuery.new_guardrail`.
|
|
430
|
+
"""
|
|
431
|
+
|
|
423
432
|
def __init__(self, request, type):
|
|
424
433
|
self.request = request
|
|
425
|
-
self.guardrail = {
|
|
434
|
+
self.guardrail = {"type" : type, "enabled": True, "params" : {}}
|
|
426
435
|
|
|
427
436
|
@property
|
|
428
437
|
def params(self):
|
|
438
|
+
"""
|
|
439
|
+
:return: The parameters of this guardrail
|
|
440
|
+
:rtype: dict
|
|
441
|
+
"""
|
|
429
442
|
return self.guardrail["params"]
|
|
430
443
|
|
|
431
444
|
def add(self):
|
|
445
|
+
"""Add this guardrail to the completion query"""
|
|
432
446
|
if self.request._guardrails is None:
|
|
433
447
|
self.request._guardrails = {"guardrails" : []}
|
|
434
448
|
self.request._guardrails["guardrails"].append(self.guardrail)
|
|
@@ -537,6 +551,8 @@ class DSSLLMCompletionQuery(DSSLLMCompletionsQuerySingleQuery, SettingsMixin):
|
|
|
537
551
|
def new_guardrail(self, type):
|
|
538
552
|
"""
|
|
539
553
|
Start adding a guardrail to the request. You need to configure the returned object, and call add() to actually add it
|
|
554
|
+
|
|
555
|
+
:rtype: :class:`DSSLLMRequestGuardrailBuilder`
|
|
540
556
|
"""
|
|
541
557
|
return DSSLLMRequestGuardrailBuilder(self, type)
|
|
542
558
|
|
|
@@ -638,6 +654,8 @@ class DSSLLMCompletionsQuery(SettingsMixin):
|
|
|
638
654
|
def new_guardrail(self, type):
|
|
639
655
|
"""
|
|
640
656
|
Start adding a guardrail to the request. You need to configure the returned object, and call add() to actually add it
|
|
657
|
+
|
|
658
|
+
:rtype: :class:`DSSLLMRequestGuardrailBuilder`
|
|
641
659
|
"""
|
|
642
660
|
return DSSLLMRequestGuardrailBuilder(self, type)
|
|
643
661
|
|
|
@@ -664,7 +682,7 @@ class DSSLLMCompletionsQuery(SettingsMixin):
|
|
|
664
682
|
return DSSLLMCompletionsResponse(ret["responses"], response_parser=self._response_parser)
|
|
665
683
|
|
|
666
684
|
|
|
667
|
-
class
|
|
685
|
+
class _DSSLLMCompletionQueryMultipartBuilder(object):
|
|
668
686
|
def __init__(self):
|
|
669
687
|
self.parts = []
|
|
670
688
|
|
|
@@ -681,6 +699,8 @@ class DSSLLMCompletionQueryMultipartBuilder(object):
|
|
|
681
699
|
def with_text(self, text):
|
|
682
700
|
"""
|
|
683
701
|
Add a text part to the multipart message
|
|
702
|
+
|
|
703
|
+
:param str text: The text to add
|
|
684
704
|
"""
|
|
685
705
|
self.parts.append({"type": "TEXT", "text": text})
|
|
686
706
|
return self
|
|
@@ -692,7 +712,7 @@ class DSSLLMCompletionQueryMultipartBuilder(object):
|
|
|
692
712
|
:param Union[str, bytes] image: The image
|
|
693
713
|
:param str mime_type: None for default
|
|
694
714
|
"""
|
|
695
|
-
img_b64 =
|
|
715
|
+
img_b64 = _DSSLLMCompletionQueryMultipartBuilder._encode_image(image)
|
|
696
716
|
|
|
697
717
|
part = {
|
|
698
718
|
"type": "IMAGE_INLINE",
|
|
@@ -713,7 +733,7 @@ class DSSLLMCompletionQueryMultipartBuilder(object):
|
|
|
713
733
|
:param Union[str, bytes] image: The image
|
|
714
734
|
:param str mime_type: None for default
|
|
715
735
|
"""
|
|
716
|
-
img_b64 =
|
|
736
|
+
img_b64 = _DSSLLMCompletionQueryMultipartBuilder._encode_image(image)
|
|
717
737
|
|
|
718
738
|
image_part = {
|
|
719
739
|
"type": "IMAGE_INLINE",
|
|
@@ -736,14 +756,13 @@ class DSSLLMCompletionQueryMultipartBuilder(object):
|
|
|
736
756
|
"""
|
|
737
757
|
Add an image url part to the multipart message
|
|
738
758
|
|
|
739
|
-
:param image:
|
|
759
|
+
:param str image: the image url
|
|
740
760
|
"""
|
|
741
|
-
|
|
742
761
|
self.parts.append({"type": "IMAGE_URI", "imageUrl": image})
|
|
743
762
|
return self
|
|
744
763
|
|
|
745
764
|
|
|
746
|
-
class DSSLLMCompletionQueryMultipartMessage(
|
|
765
|
+
class DSSLLMCompletionQueryMultipartMessage(_DSSLLMCompletionQueryMultipartBuilder):
|
|
747
766
|
"""
|
|
748
767
|
.. important::
|
|
749
768
|
Do not create this class directly, use :meth:`dataikuapi.dss.llm.DSSLLMCompletionQuery.new_multipart_message` or
|
|
@@ -761,8 +780,43 @@ class DSSLLMCompletionQueryMultipartMessage(DSSLLMCompletionQueryMultipartBuilde
|
|
|
761
780
|
self.q.cq["messages"].append(self.msg)
|
|
762
781
|
return self.q
|
|
763
782
|
|
|
783
|
+
def with_text(self, text):
|
|
784
|
+
"""
|
|
785
|
+
Add a text part to the multipart message
|
|
786
|
+
|
|
787
|
+
:param str text: The text to add
|
|
788
|
+
"""
|
|
789
|
+
return super().with_text(text)
|
|
790
|
+
|
|
791
|
+
def with_inline_image(self, image, mime_type=None):
|
|
792
|
+
"""
|
|
793
|
+
Add an image part to the multipart message
|
|
794
|
+
|
|
795
|
+
:param Union[str, bytes] image: The image
|
|
796
|
+
:param str mime_type: None for default
|
|
797
|
+
"""
|
|
798
|
+
return super().with_inline_image(image, mime_type)
|
|
764
799
|
|
|
765
|
-
|
|
800
|
+
def with_captioned_image_inline(self, caption, image, mime_type=None):
|
|
801
|
+
"""
|
|
802
|
+
Add a captioned image part to the multipart message
|
|
803
|
+
|
|
804
|
+
:param str caption: Image caption
|
|
805
|
+
:param Union[str, bytes] image: The image
|
|
806
|
+
:param str mime_type: None for default
|
|
807
|
+
"""
|
|
808
|
+
return super().with_captioned_image_inline(caption, image, mime_type)
|
|
809
|
+
|
|
810
|
+
def with_image_url(self, image):
|
|
811
|
+
"""
|
|
812
|
+
Add an image url part to the multipart message
|
|
813
|
+
|
|
814
|
+
:param str image: The image url
|
|
815
|
+
"""
|
|
816
|
+
return super().with_image_url(image)
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
class DSSLLMCompletionQueryMultipartToolOutput(_DSSLLMCompletionQueryMultipartBuilder):
|
|
766
820
|
"""
|
|
767
821
|
.. important::
|
|
768
822
|
Do not create this class directly, use :meth:`dataikuapi.dss.llm.DSSLLMCompletionQuery.new_multipart_tool_output` or
|
|
@@ -787,24 +841,75 @@ class DSSLLMCompletionQueryMultipartToolOutput(DSSLLMCompletionQueryMultipartBui
|
|
|
787
841
|
self.q.cq["messages"].append(self.msg)
|
|
788
842
|
return self.q
|
|
789
843
|
|
|
844
|
+
def with_text(self, text):
|
|
845
|
+
"""
|
|
846
|
+
Add a text part to the multipart tool output
|
|
847
|
+
|
|
848
|
+
:param str text: The text to add
|
|
849
|
+
"""
|
|
850
|
+
return super().with_text(text)
|
|
851
|
+
|
|
852
|
+
def with_inline_image(self, image, mime_type=None):
|
|
853
|
+
"""
|
|
854
|
+
Add an image part to the multipart tool output
|
|
855
|
+
|
|
856
|
+
:param Union[str, bytes] image: The image
|
|
857
|
+
:param str mime_type: None for default
|
|
858
|
+
"""
|
|
859
|
+
return super().with_inline_image(image, mime_type)
|
|
860
|
+
|
|
861
|
+
def with_captioned_image_inline(self, caption, image, mime_type=None):
|
|
862
|
+
"""
|
|
863
|
+
Add a captioned image part to the multipart tool output
|
|
864
|
+
|
|
865
|
+
:param str caption: Image caption
|
|
866
|
+
:param Union[str, bytes] image: The image
|
|
867
|
+
:param str mime_type: None for default
|
|
868
|
+
"""
|
|
869
|
+
return super().with_captioned_image_inline(caption, image, mime_type)
|
|
870
|
+
|
|
871
|
+
def with_image_url(self, image):
|
|
872
|
+
"""
|
|
873
|
+
Add an image url part to the multipart tool output
|
|
874
|
+
|
|
875
|
+
:param str image: The image url
|
|
876
|
+
"""
|
|
877
|
+
return super().with_image_url(image)
|
|
878
|
+
|
|
790
879
|
|
|
791
880
|
class DSSLLMStreamedCompletionChunk(object):
|
|
881
|
+
"""
|
|
882
|
+
A handle to interact with a streamed completion query chunk.
|
|
883
|
+
|
|
884
|
+
.. important::
|
|
885
|
+
Do not create this class directly, iterate over a :class:`dataikuapi.dss.llm.DSSLLMStreamedCompletionChunks` iterator instead to generate the chunks instead.
|
|
886
|
+
"""
|
|
887
|
+
|
|
792
888
|
def __init__(self, data):
|
|
793
889
|
self.data = data
|
|
794
890
|
|
|
795
891
|
@property
|
|
796
892
|
def type(self):
|
|
797
|
-
"""
|
|
893
|
+
"""
|
|
894
|
+
:return: Type of this chunk, either "content" or "event"
|
|
895
|
+
:rtype: Literal["content", "event"]
|
|
896
|
+
"""
|
|
798
897
|
return self.data.get("type", "content")
|
|
799
898
|
|
|
800
899
|
@property
|
|
801
900
|
def text(self):
|
|
802
|
-
"""
|
|
901
|
+
"""
|
|
902
|
+
:return: If this chunk is content and has text, the (partial) text
|
|
903
|
+
:rtype: bool
|
|
904
|
+
"""
|
|
803
905
|
return self.data.get("text", None)
|
|
804
906
|
|
|
805
907
|
@property
|
|
806
908
|
def event_kind(self):
|
|
807
|
-
"""
|
|
909
|
+
"""
|
|
910
|
+
:return: If this chunk is an event, its kind
|
|
911
|
+
:rtype: str
|
|
912
|
+
"""
|
|
808
913
|
return self.data.get("eventKind", None)
|
|
809
914
|
|
|
810
915
|
def __repr__(self):
|
|
@@ -812,16 +917,31 @@ class DSSLLMStreamedCompletionChunk(object):
|
|
|
812
917
|
|
|
813
918
|
|
|
814
919
|
class DSSLLMStreamedCompletionFooter(object):
|
|
920
|
+
"""
|
|
921
|
+
A handle to interact with a streamed completion query footer.
|
|
922
|
+
|
|
923
|
+
.. important::
|
|
924
|
+
Do not create this class directly, iterate over a :class:`dataikuapi.dss.llm.DSSLLMStreamedCompletionChunks` iterator instead to generate the chunks instead.
|
|
925
|
+
"""
|
|
926
|
+
|
|
815
927
|
def __init__(self, data):
|
|
816
928
|
self.data = data
|
|
817
929
|
|
|
818
930
|
# Compatibility for code that just checks for "type""
|
|
819
931
|
@property
|
|
820
932
|
def type(self):
|
|
933
|
+
"""
|
|
934
|
+
:return: Type of this chunk, to distinguish it from :class:`dataikuapi.dss.llm.DSSLLMStreamedCompletionChunk` chunks. Can only be "footer"
|
|
935
|
+
:rtype: Literal["footer"]
|
|
936
|
+
"""
|
|
821
937
|
return "footer"
|
|
822
938
|
|
|
823
939
|
@property
|
|
824
940
|
def trace(self):
|
|
941
|
+
"""
|
|
942
|
+
:return: The trace of the completion query if available, None otherwise.
|
|
943
|
+
:rtype: Union[dict, None]
|
|
944
|
+
"""
|
|
825
945
|
return self.data.get("trace", None)
|
|
826
946
|
|
|
827
947
|
@property
|
|
@@ -846,14 +966,14 @@ class _SSEClient(object):
|
|
|
846
966
|
"""Reads the raw source and yields events. Reassembles events
|
|
847
967
|
that may span multiple HTTP chunks"""
|
|
848
968
|
#logging.debug("SSEClient._read")
|
|
849
|
-
data =
|
|
969
|
+
data = bytearray()
|
|
850
970
|
for chunk in self.raw_source:
|
|
851
971
|
#logging.info("SSEClient._read: got chunk (len=%s): %s" % (len(chunk), chunk))
|
|
852
972
|
for line in chunk.splitlines(True):
|
|
853
|
-
data
|
|
973
|
+
data.extend(line)
|
|
854
974
|
if data.endswith(b'\r\r') or data.endswith(b'\n\n') or data.endswith(b'\r\n\r\n'):
|
|
855
975
|
yield data
|
|
856
|
-
data =
|
|
976
|
+
data = bytearray()
|
|
857
977
|
#logging.info("SSEClient._read: no more chunk")
|
|
858
978
|
if data:
|
|
859
979
|
yield data
|
|
@@ -863,6 +983,7 @@ class _SSEClient(object):
|
|
|
863
983
|
#logging.info("SSEClient._iterevents: got event")
|
|
864
984
|
evt = _SSEEvent()
|
|
865
985
|
|
|
986
|
+
data_lines = []
|
|
866
987
|
for line in event_chunk.splitlines():
|
|
867
988
|
line = line.decode("utf8")
|
|
868
989
|
|
|
@@ -879,10 +1000,13 @@ class _SSEClient(object):
|
|
|
879
1000
|
value = ''
|
|
880
1001
|
|
|
881
1002
|
if field == 'data':
|
|
882
|
-
|
|
1003
|
+
data_lines.append(value)
|
|
883
1004
|
else:
|
|
884
1005
|
evt.__dict__[field] = value
|
|
885
1006
|
|
|
1007
|
+
if data_lines:
|
|
1008
|
+
evt.data = '\n'.join(data_lines) + '\n'
|
|
1009
|
+
|
|
886
1010
|
if evt.event is not None:
|
|
887
1011
|
#logging.info("Yielding event: %s" % evt.__dict__)
|
|
888
1012
|
yield evt
|
|
@@ -890,7 +1014,11 @@ class _SSEClient(object):
|
|
|
890
1014
|
|
|
891
1015
|
class DSSLLMCompletionResponse(object):
|
|
892
1016
|
"""
|
|
893
|
-
|
|
1017
|
+
A handle to interact with a completion query result.
|
|
1018
|
+
|
|
1019
|
+
.. important::
|
|
1020
|
+
Do not create this class directly, use :meth:`dataikuapi.dss.llm.DSSLLMCompletionQuery.execute` or
|
|
1021
|
+
:attr:`dataikuapi.dss.llm.DSSLLMCompletionsResponse.responses` or :attr:`dataikuapi.dss.llm.DSSLLMStreamedCompletionChunks.response` instead.
|
|
894
1022
|
"""
|
|
895
1023
|
def __init__(self, raw_resp=None, text=None, finish_reason=None, response_parser=None, trace=None, query=None):
|
|
896
1024
|
if raw_resp is not None:
|
|
@@ -990,6 +1118,10 @@ class DSSLLMCompletionResponse(object):
|
|
|
990
1118
|
|
|
991
1119
|
@property
|
|
992
1120
|
def trace(self):
|
|
1121
|
+
"""
|
|
1122
|
+
:return: The trace of the completion query if available, None otherwise.
|
|
1123
|
+
:rtype: Union[dict, None]
|
|
1124
|
+
"""
|
|
993
1125
|
return self._raw.get("trace", None)
|
|
994
1126
|
|
|
995
1127
|
@property
|
|
@@ -1157,6 +1289,8 @@ class DSSLLMImageGenerationQuery(object):
|
|
|
1157
1289
|
def new_guardrail(self, type):
|
|
1158
1290
|
"""
|
|
1159
1291
|
Start adding a guardrail to the request. You need to configure the returned object, and call add() to actually add it
|
|
1292
|
+
|
|
1293
|
+
:rtype: :class:`DSSLLMRequestGuardrailBuilder`
|
|
1160
1294
|
"""
|
|
1161
1295
|
return DSSLLMRequestGuardrailBuilder(self, type)
|
|
1162
1296
|
|
|
@@ -1381,6 +1515,10 @@ class DSSLLMImageGenerationResponse(object):
|
|
|
1381
1515
|
|
|
1382
1516
|
@property
|
|
1383
1517
|
def trace(self):
|
|
1518
|
+
"""
|
|
1519
|
+
:return: The trace of the image generation query if available, None otherwise.
|
|
1520
|
+
:rtype: Union[dict, None]
|
|
1521
|
+
"""
|
|
1384
1522
|
return self._raw.get("trace", None)
|
|
1385
1523
|
|
|
1386
1524
|
@property
|