unique_sdk 0.10.35__py3-none-any.whl → 0.10.39__py3-none-any.whl
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.
- unique_sdk/__init__.py +1 -0
- unique_sdk/api_resources/_content.py +12 -10
- unique_sdk/api_resources/_folder.py +4 -4
- unique_sdk/api_resources/_llm_models.py +64 -0
- unique_sdk/api_resources/_message.py +2 -0
- unique_sdk/api_resources/_message_log.py +4 -3
- unique_sdk/api_resources/_space.py +3 -2
- unique_sdk/utils/file_io.py +4 -0
- {unique_sdk-0.10.35.dist-info → unique_sdk-0.10.39.dist-info}/METADATA +32 -1
- {unique_sdk-0.10.35.dist-info → unique_sdk-0.10.39.dist-info}/RECORD +12 -11
- {unique_sdk-0.10.35.dist-info → unique_sdk-0.10.39.dist-info}/LICENSE +0 -0
- {unique_sdk-0.10.35.dist-info → unique_sdk-0.10.39.dist-info}/WHEEL +0 -0
unique_sdk/__init__.py
CHANGED
|
@@ -83,6 +83,7 @@ from unique_sdk.api_resources._short_term_memory import (
|
|
|
83
83
|
from unique_sdk.api_resources._folder import Folder as Folder
|
|
84
84
|
from unique_sdk.api_resources._embedding import Embeddings as Embeddings
|
|
85
85
|
from unique_sdk.api_resources._acronyms import Acronyms as Acronyms
|
|
86
|
+
from unique_sdk.api_resources._llm_models import LLMModels as LLMModels
|
|
86
87
|
from unique_sdk.api_resources._message_assessment import (
|
|
87
88
|
MessageAssessment as MessageAssessment,
|
|
88
89
|
)
|
|
@@ -20,6 +20,16 @@ from unique_sdk._request_options import RequestOptions
|
|
|
20
20
|
class Content(APIResource["Content"]):
|
|
21
21
|
OBJECT_NAME: ClassVar[Literal["content.search"]] = "content.search"
|
|
22
22
|
|
|
23
|
+
id: str
|
|
24
|
+
key: str
|
|
25
|
+
url: Optional[str]
|
|
26
|
+
title: Optional[str]
|
|
27
|
+
updatedAt: str
|
|
28
|
+
chunks: Optional[List["Content.Chunk"]]
|
|
29
|
+
metadata: Optional[Dict[str, Any]]
|
|
30
|
+
writeUrl: Optional[str]
|
|
31
|
+
readUrl: Optional[str]
|
|
32
|
+
|
|
23
33
|
class QueryMode(Enum):
|
|
24
34
|
Default = "default"
|
|
25
35
|
Insensitive = "insensitive"
|
|
@@ -127,6 +137,7 @@ class Content(APIResource["Content"]):
|
|
|
127
137
|
key: str
|
|
128
138
|
title: Optional[str]
|
|
129
139
|
mimeType: str
|
|
140
|
+
description: NotRequired[str | None]
|
|
130
141
|
ownerType: NotRequired[str | None]
|
|
131
142
|
ownerId: NotRequired[str | None]
|
|
132
143
|
byteSize: NotRequired[int | None]
|
|
@@ -168,6 +179,7 @@ class Content(APIResource["Content"]):
|
|
|
168
179
|
title: str | None
|
|
169
180
|
metadata: Dict[str, Any] | None
|
|
170
181
|
mimeType: str
|
|
182
|
+
description: str | None
|
|
171
183
|
byteSize: int
|
|
172
184
|
ownerId: str
|
|
173
185
|
createdAt: str
|
|
@@ -192,16 +204,6 @@ class Content(APIResource["Content"]):
|
|
|
192
204
|
class DeleteResponse(TypedDict):
|
|
193
205
|
id: str
|
|
194
206
|
|
|
195
|
-
id: str
|
|
196
|
-
key: str
|
|
197
|
-
url: Optional[str]
|
|
198
|
-
title: Optional[str]
|
|
199
|
-
updatedAt: str
|
|
200
|
-
chunks: List[Chunk]
|
|
201
|
-
metadata: Optional[Dict[str, Any]]
|
|
202
|
-
writeUrl: str
|
|
203
|
-
readUrl: str
|
|
204
|
-
|
|
205
207
|
class MagicTableSheetTableColumn(TypedDict):
|
|
206
208
|
columnId: str
|
|
207
209
|
columnName: str
|
|
@@ -216,12 +216,12 @@ class Folder(APIResource["Folder"]):
|
|
|
216
216
|
@classmethod
|
|
217
217
|
def get_infos(
|
|
218
218
|
cls, user_id: str, company_id: str, **params: Unpack["Folder.GetInfosParams"]
|
|
219
|
-
) -> "
|
|
219
|
+
) -> "Folder.FolderInfos":
|
|
220
220
|
"""
|
|
221
221
|
Get paginated folders based on parentId. If the parentId is not defined, the root folders will be returned.
|
|
222
222
|
"""
|
|
223
223
|
return cast(
|
|
224
|
-
"
|
|
224
|
+
"Folder.FolderInfos",
|
|
225
225
|
cls._static_request(
|
|
226
226
|
"get",
|
|
227
227
|
"/folder/infos",
|
|
@@ -234,12 +234,12 @@ class Folder(APIResource["Folder"]):
|
|
|
234
234
|
@classmethod
|
|
235
235
|
async def get_infos_async(
|
|
236
236
|
cls, user_id: str, company_id: str, **params: Unpack["Folder.GetInfosParams"]
|
|
237
|
-
) -> "
|
|
237
|
+
) -> "Folder.FolderInfos":
|
|
238
238
|
"""
|
|
239
239
|
Async get paginated folders based on parentId. If the parentId is not defined, the root folders will be returned.
|
|
240
240
|
"""
|
|
241
241
|
return cast(
|
|
242
|
-
"
|
|
242
|
+
"Folder.FolderInfos",
|
|
243
243
|
await cls._static_request_async(
|
|
244
244
|
"get",
|
|
245
245
|
"/folder/infos",
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
from typing import ClassVar, List, Literal, NotRequired, TypedDict, Unpack, cast
|
|
2
|
+
|
|
3
|
+
from unique_sdk._api_resource import APIResource
|
|
4
|
+
from unique_sdk._request_options import RequestOptions
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class LLMModels(APIResource["LLMModels"]):
|
|
8
|
+
OBJECT_NAME: ClassVar[Literal["llm-models"]] = "llm-models"
|
|
9
|
+
|
|
10
|
+
class GetParams(RequestOptions):
|
|
11
|
+
"""
|
|
12
|
+
Parameters for getting available LLM models.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
module: NotRequired[str | None]
|
|
16
|
+
|
|
17
|
+
class LLMModelsResponse(TypedDict):
|
|
18
|
+
"""
|
|
19
|
+
Response for getting available LLM models.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
models: List[str]
|
|
23
|
+
|
|
24
|
+
@classmethod
|
|
25
|
+
def get_models(
|
|
26
|
+
cls,
|
|
27
|
+
user_id: str,
|
|
28
|
+
company_id: str,
|
|
29
|
+
**params: Unpack["LLMModels.GetParams"],
|
|
30
|
+
) -> "LLMModels.LLMModelsResponse":
|
|
31
|
+
"""
|
|
32
|
+
Get available LLM models.
|
|
33
|
+
"""
|
|
34
|
+
return cast(
|
|
35
|
+
"LLMModels.LLMModelsResponse",
|
|
36
|
+
cls._static_request(
|
|
37
|
+
"get",
|
|
38
|
+
"/openai/models",
|
|
39
|
+
user_id,
|
|
40
|
+
company_id,
|
|
41
|
+
params=params,
|
|
42
|
+
),
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
async def get_models_async(
|
|
47
|
+
cls,
|
|
48
|
+
user_id: str,
|
|
49
|
+
company_id: str,
|
|
50
|
+
**params: Unpack["LLMModels.GetParams"],
|
|
51
|
+
) -> "LLMModels.LLMModelsResponse":
|
|
52
|
+
"""
|
|
53
|
+
Async get available LLM models.
|
|
54
|
+
"""
|
|
55
|
+
return cast(
|
|
56
|
+
"LLMModels.LLMModelsResponse",
|
|
57
|
+
await cls._static_request_async(
|
|
58
|
+
"get",
|
|
59
|
+
"/openai/models",
|
|
60
|
+
user_id,
|
|
61
|
+
company_id,
|
|
62
|
+
params=params,
|
|
63
|
+
),
|
|
64
|
+
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import ClassVar, Literal, NotRequired, TypedDict, Unpack, cast
|
|
1
|
+
from typing import ClassVar, Literal, NotRequired, Optional, TypedDict, Unpack, cast
|
|
2
2
|
|
|
3
3
|
from unique_sdk._api_resource import APIResource
|
|
4
4
|
from unique_sdk._request_options import RequestOptions
|
|
@@ -12,9 +12,10 @@ class MessageLog(APIResource["MessageLog"]):
|
|
|
12
12
|
|
|
13
13
|
class Reference(TypedDict):
|
|
14
14
|
name: str
|
|
15
|
-
|
|
15
|
+
description: Optional[str]
|
|
16
|
+
url: Optional[str]
|
|
16
17
|
sequenceNumber: int
|
|
17
|
-
originalIndex: list[int]
|
|
18
|
+
originalIndex: Optional[list[int]]
|
|
18
19
|
sourceId: str
|
|
19
20
|
source: str
|
|
20
21
|
|
|
@@ -35,9 +35,10 @@ class Space(APIResource["Space"]):
|
|
|
35
35
|
"""
|
|
36
36
|
|
|
37
37
|
name: str
|
|
38
|
-
|
|
38
|
+
description: Optional[str]
|
|
39
|
+
url: Optional[str]
|
|
39
40
|
sequenceNumber: int
|
|
40
|
-
originalIndex:
|
|
41
|
+
originalIndex: Optional[list[int]]
|
|
41
42
|
sourceId: str
|
|
42
43
|
source: str
|
|
43
44
|
|
unique_sdk/utils/file_io.py
CHANGED
|
@@ -38,6 +38,7 @@ def upload_file(
|
|
|
38
38
|
path_to_file,
|
|
39
39
|
displayed_filename,
|
|
40
40
|
mime_type,
|
|
41
|
+
description: Optional[str] = None,
|
|
41
42
|
scope_or_unique_path=None,
|
|
42
43
|
chat_id=None,
|
|
43
44
|
ingestion_config: Optional[Content.IngestionConfig] = None,
|
|
@@ -55,6 +56,7 @@ def upload_file(
|
|
|
55
56
|
"key": displayed_filename,
|
|
56
57
|
"title": displayed_filename,
|
|
57
58
|
"mimeType": mime_type,
|
|
59
|
+
"description": description,
|
|
58
60
|
"ingestionConfig": ingestion_config,
|
|
59
61
|
"metadata": metadata,
|
|
60
62
|
},
|
|
@@ -83,6 +85,7 @@ def upload_file(
|
|
|
83
85
|
"key": displayed_filename,
|
|
84
86
|
"title": displayed_filename,
|
|
85
87
|
"mimeType": mime_type,
|
|
88
|
+
"description": description,
|
|
86
89
|
"byteSize": size,
|
|
87
90
|
"ingestionConfig": ingestion_config,
|
|
88
91
|
"metadata": metadata,
|
|
@@ -98,6 +101,7 @@ def upload_file(
|
|
|
98
101
|
"key": displayed_filename,
|
|
99
102
|
"title": displayed_filename,
|
|
100
103
|
"mimeType": mime_type,
|
|
104
|
+
"description": description,
|
|
101
105
|
"byteSize": size,
|
|
102
106
|
"ingestionConfig": ingestion_config,
|
|
103
107
|
"metadata": metadata,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_sdk
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.39
|
|
4
4
|
Summary:
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Martin Fadler
|
|
@@ -42,6 +42,7 @@ The Unique Python SDK provides access to the public API of Unique AI. It also en
|
|
|
42
42
|
- [Message Assessment](#message-assessment)
|
|
43
43
|
- [Folder](#folder)
|
|
44
44
|
- [Space](#space)
|
|
45
|
+
- [LLM Models](#llm-models)
|
|
45
46
|
- [Agentic Table](#agentic-table)
|
|
46
47
|
6. [UniqueQL](#uniqueql)
|
|
47
48
|
- [Query Structure](#uniqueql-query-structure)
|
|
@@ -260,6 +261,7 @@ unique_sdk.Message.modify(
|
|
|
260
261
|
- [Message Assessment](#message-assessment)
|
|
261
262
|
- [Folder](#folder)
|
|
262
263
|
- [Space](#space)
|
|
264
|
+
- [LLM Models](#llm-models)
|
|
263
265
|
- [Agentic Table](#agentic-table)
|
|
264
266
|
|
|
265
267
|
Most of the API services provide an asynchronous version of the method. The async methods are suffixed with `_async`.
|
|
@@ -477,6 +479,7 @@ def upload_file(
|
|
|
477
479
|
path_to_file,
|
|
478
480
|
displayed_filename,
|
|
479
481
|
mimeType,
|
|
482
|
+
description=None,
|
|
480
483
|
scope_or_unique_path,
|
|
481
484
|
ingestion_config=None,
|
|
482
485
|
metadata=None,
|
|
@@ -489,6 +492,7 @@ def upload_file(
|
|
|
489
492
|
"key": displayed_filename,
|
|
490
493
|
"title": displayed_filename,
|
|
491
494
|
"mimeType": mimeType,
|
|
495
|
+
"description": description,
|
|
492
496
|
"ingestionConfig": ingestionConfig,
|
|
493
497
|
"metadata": metadata,
|
|
494
498
|
},
|
|
@@ -515,6 +519,7 @@ def upload_file(
|
|
|
515
519
|
"key": displayed_filename,
|
|
516
520
|
"title": displayed_filename,
|
|
517
521
|
"mimeType": mimeType,
|
|
522
|
+
"description": description,
|
|
518
523
|
"byteSize": size,
|
|
519
524
|
"ingestionConfig": ingestionConfig,
|
|
520
525
|
"metadata": metadata,
|
|
@@ -1371,6 +1376,20 @@ unique_sdk.Space.delete_chat(
|
|
|
1371
1376
|
)
|
|
1372
1377
|
```
|
|
1373
1378
|
|
|
1379
|
+
### LLM Models
|
|
1380
|
+
|
|
1381
|
+
#### `unique_sdk.LLMModels.get` (Compatible with release >.46)
|
|
1382
|
+
|
|
1383
|
+
Get available LLM models. You can optionally filter by module and skip cache to fetch fresh data.
|
|
1384
|
+
|
|
1385
|
+
```python
|
|
1386
|
+
models = unique_sdk.LLMModels.get(
|
|
1387
|
+
user_id=user_id,
|
|
1388
|
+
company_id=company_id,
|
|
1389
|
+
module="UNIQUE_AI", # Optional - filter models by module, only UNIQUE_AI is supported right now
|
|
1390
|
+
)
|
|
1391
|
+
```
|
|
1392
|
+
|
|
1374
1393
|
### Agentic Table
|
|
1375
1394
|
|
|
1376
1395
|
The Agentic Table (Magic Table) API provides functionality for managing interactive tables with AI-powered cells, activity tracking, and metadata management.
|
|
@@ -1976,6 +1995,18 @@ All notable changes to this project will be documented in this file.
|
|
|
1976
1995
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
1977
1996
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
1978
1997
|
|
|
1998
|
+
## [0.10.39] - 2025-11-07
|
|
1999
|
+
- Add function to get llm models
|
|
2000
|
+
|
|
2001
|
+
## [0.10.38] - 2025-11-06
|
|
2002
|
+
- Add description property to Reference and Content.
|
|
2003
|
+
|
|
2004
|
+
## [0.10.37] - 2025-11-04
|
|
2005
|
+
- Introduce local integration tests for Content API Resource
|
|
2006
|
+
|
|
2007
|
+
## [0.10.36] - 2025-11-04
|
|
2008
|
+
- Introduce local integration tests for Folder API Resource
|
|
2009
|
+
|
|
1979
2010
|
## [0.10.35] - 2025-11-04
|
|
1980
2011
|
- Inmprove folder get infos types.
|
|
1981
2012
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
unique_sdk/__init__.py,sha256=
|
|
1
|
+
unique_sdk/__init__.py,sha256=64n1MmnhHojvt32j8QwF-t7JhTPyw9WIWKVBtkjrAVU,4089
|
|
2
2
|
unique_sdk/_api_requestor.py,sha256=i4gCpzx8zP95sv-AhJfpQxKvWR0U-I6lclHyV55RPtg,14397
|
|
3
3
|
unique_sdk/_api_resource.py,sha256=ytjomI-IVJwsbvdPyuZCfF-bl-Abgf66bu1D34YxCu8,6244
|
|
4
4
|
unique_sdk/_api_version.py,sha256=Ku4JPdeyJtnX5eJJvRCEc1_u44UObdVrvrL1T-WwWCs,46
|
|
@@ -17,26 +17,27 @@ unique_sdk/api_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
17
17
|
unique_sdk/api_resources/_acronyms.py,sha256=GIU1XH1flGWQYcpsFqTYwg4ioIGxVmb15tux84nmhEg,891
|
|
18
18
|
unique_sdk/api_resources/_agentic_table.py,sha256=8-_f7t-m_iiiOj2835iESoxz91YRxl4-tkxpzQbgdcI,9958
|
|
19
19
|
unique_sdk/api_resources/_chat_completion.py,sha256=ILCAffxkbkfh2iV9L4KKnfe80gZmT9pWfkNmf3mq68U,2172
|
|
20
|
-
unique_sdk/api_resources/_content.py,sha256=
|
|
20
|
+
unique_sdk/api_resources/_content.py,sha256=H-aL-dhWSBhMW4nFGpMuGziu0N-c0DnqY4mRAzsy2gU,17234
|
|
21
21
|
unique_sdk/api_resources/_embedding.py,sha256=C6qak7cCUBMBINfPhgH8taCJZ9n6w1MUElqDJJ8dG10,1281
|
|
22
22
|
unique_sdk/api_resources/_event.py,sha256=bpWF9vstdoAWbUzr-iiGP713ceP0zPk77GJXiImf9zg,374
|
|
23
|
-
unique_sdk/api_resources/_folder.py,sha256=
|
|
23
|
+
unique_sdk/api_resources/_folder.py,sha256=WPyRPsdAE62tU7p4hEYiVB4OoArv_60b8t4j7hgrJKk,15765
|
|
24
24
|
unique_sdk/api_resources/_integrated.py,sha256=O8e673z-RB7FRFMQYn_YEuHijebr5W7KJxkUnymbBZk,6164
|
|
25
|
+
unique_sdk/api_resources/_llm_models.py,sha256=3Jn6MpxWgZ43Hze8JHd4_n27si5xmwd3JE8r8cEZq_M,1640
|
|
25
26
|
unique_sdk/api_resources/_mcp.py,sha256=zKh0dyn0QnkKk57N2zlGVN_GQoxEp5T2CS38vVm6jQY,3341
|
|
26
|
-
unique_sdk/api_resources/_message.py,sha256=
|
|
27
|
+
unique_sdk/api_resources/_message.py,sha256=W1Bh51lujpzmiFhZ-Mv_alQYZEY1OTEUr9O-k5jEgVM,9360
|
|
27
28
|
unique_sdk/api_resources/_message_assessment.py,sha256=SSfx6eW7zb_GKe8cFJzCqW-t-_eWEXxKP5cnIb0DhIc,2276
|
|
28
29
|
unique_sdk/api_resources/_message_execution.py,sha256=7V_Qovu4vzoXDd2em0AgnAJC460RUX6AE4byztNPlvg,4556
|
|
29
|
-
unique_sdk/api_resources/_message_log.py,sha256=
|
|
30
|
+
unique_sdk/api_resources/_message_log.py,sha256=gwxDmEvTMDF9Nz5gH8Mq7qWw73dcjdqGJZjA0b42s6U,3709
|
|
30
31
|
unique_sdk/api_resources/_search.py,sha256=GQItZKoGNOVZfkLLltBmsRZYBIreRKU0lGW8Kgpj1_Q,1959
|
|
31
32
|
unique_sdk/api_resources/_search_string.py,sha256=LZz2_QPZXV1NXucRR06dnDC2miK7J8XBY7dXX2xoDY4,1610
|
|
32
33
|
unique_sdk/api_resources/_short_term_memory.py,sha256=vPRN-Y0WPx74E6y-A3LocGc0TxJdzT-xGL66WzZwKRg,2820
|
|
33
|
-
unique_sdk/api_resources/_space.py,sha256=
|
|
34
|
+
unique_sdk/api_resources/_space.py,sha256=JjIPauH37wULEiNO5PqOfgsipyfbRlC0KqjJ4_1Uugg,5035
|
|
34
35
|
unique_sdk/utils/chat_history.py,sha256=5UqL9hF1O9pV7skbNOlEibF5rHdYsmG3m5-YEPUowOs,3037
|
|
35
36
|
unique_sdk/utils/chat_in_space.py,sha256=cdjETBLnjv-OE8qsQpm626ks5yBdfQG_KBeG0WIzCbY,5994
|
|
36
|
-
unique_sdk/utils/file_io.py,sha256=
|
|
37
|
+
unique_sdk/utils/file_io.py,sha256=lskRULIh7qExK26o_1YqRs0f5mqJHTS9m_mdxlsVo4s,4497
|
|
37
38
|
unique_sdk/utils/sources.py,sha256=DoxxhMLcLhmDfNarjXa41H4JD2GSSDywr71hiC-4pYc,4952
|
|
38
39
|
unique_sdk/utils/token.py,sha256=AzKuAA1AwBtnvSFxGcsHLpxXr_wWE5Mj4jYBbOz2ljA,1740
|
|
39
|
-
unique_sdk-0.10.
|
|
40
|
-
unique_sdk-0.10.
|
|
41
|
-
unique_sdk-0.10.
|
|
42
|
-
unique_sdk-0.10.
|
|
40
|
+
unique_sdk-0.10.39.dist-info/LICENSE,sha256=EJCWoHgrXVBUb47PnjeV4MFIEOR71MAdCOIgv61J-4k,1065
|
|
41
|
+
unique_sdk-0.10.39.dist-info/METADATA,sha256=h60DXGC-Jf-cQ7PJHKstxh2OwyrZkUK3syPIseslL8Q,68798
|
|
42
|
+
unique_sdk-0.10.39.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
43
|
+
unique_sdk-0.10.39.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|