unique_sdk 0.10.38__tar.gz → 0.10.47__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.
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/CHANGELOG.md +27 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/PKG-INFO +200 -4
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/README.md +172 -3
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/pyproject.toml +1 -1
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/__init__.py +3 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_content.py +7 -0
- unique_sdk-0.10.47/unique_sdk/api_resources/_group.py +369 -0
- unique_sdk-0.10.47/unique_sdk/api_resources/_llm_models.py +64 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_message.py +36 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_message_log.py +24 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_space.py +60 -0
- unique_sdk-0.10.47/unique_sdk/api_resources/_user.py +91 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/utils/chat_in_space.py +3 -2
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/LICENSE +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_api_requestor.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_api_resource.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_api_version.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_error.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_http_client.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_list_object.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_object_classes.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_request_options.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_unique_object.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_unique_ql.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_unique_response.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_util.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_version.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/_webhook.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/__init__.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_acronyms.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_agentic_table.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_chat_completion.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_embedding.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_event.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_folder.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_integrated.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_mcp.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_message_assessment.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_message_execution.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_search.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_search_string.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/api_resources/_short_term_memory.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/utils/chat_history.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/utils/file_io.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/utils/sources.py +0 -0
- {unique_sdk-0.10.38 → unique_sdk-0.10.47}/unique_sdk/utils/token.py +0 -0
|
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.10.47] - 2025-11-19
|
|
9
|
+
- Add expired/s at fields on content search result.
|
|
10
|
+
|
|
11
|
+
## [0.10.46] - 2025-11-18
|
|
12
|
+
- chat_against_file function allows now a should_delete_chat flag.
|
|
13
|
+
|
|
14
|
+
## [0.10.45] - 2025-11-18
|
|
15
|
+
- Create group and manage users functions.
|
|
16
|
+
|
|
17
|
+
## [0.10.44] - 2025-11-18
|
|
18
|
+
- add function to get all messages in a chat.
|
|
19
|
+
|
|
20
|
+
## [0.10.43] - 2025-11-14
|
|
21
|
+
- Add get, delete and update groups functions.
|
|
22
|
+
|
|
23
|
+
## [0.10.42] - 2025-11-14
|
|
24
|
+
- Add get_users function.
|
|
25
|
+
|
|
26
|
+
## [0.10.41] - 2025-11-13
|
|
27
|
+
- Add create_message and get_latest_message.
|
|
28
|
+
|
|
29
|
+
## [0.10.40] - 2025-11-10
|
|
30
|
+
- Don't send description if not defined.
|
|
31
|
+
|
|
32
|
+
## [0.10.39] - 2025-11-07
|
|
33
|
+
- Add function to get llm models
|
|
34
|
+
|
|
8
35
|
## [0.10.38] - 2025-11-06
|
|
9
36
|
- Add description property to Reference and Content.
|
|
10
37
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_sdk
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.47
|
|
4
4
|
Summary:
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Martin Fadler
|
|
@@ -42,6 +42,9 @@ 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)
|
|
46
|
+
- [User](#user)
|
|
47
|
+
- [Group](#group)
|
|
45
48
|
- [Agentic Table](#agentic-table)
|
|
46
49
|
6. [UniqueQL](#uniqueql)
|
|
47
50
|
- [Query Structure](#uniqueql-query-structure)
|
|
@@ -260,6 +263,9 @@ unique_sdk.Message.modify(
|
|
|
260
263
|
- [Message Assessment](#message-assessment)
|
|
261
264
|
- [Folder](#folder)
|
|
262
265
|
- [Space](#space)
|
|
266
|
+
- [LLM Models](#llm-models)
|
|
267
|
+
- [User](#user)
|
|
268
|
+
- [Group](#group)
|
|
263
269
|
- [Agentic Table](#agentic-table)
|
|
264
270
|
|
|
265
271
|
Most of the API services provide an asynchronous version of the method. The async methods are suffixed with `_async`.
|
|
@@ -1362,6 +1368,56 @@ unique_sdk.Folder.delete(
|
|
|
1362
1368
|
|
|
1363
1369
|
### Space
|
|
1364
1370
|
|
|
1371
|
+
#### `unique_sdk.Space.create_message`
|
|
1372
|
+
|
|
1373
|
+
Send a message in a space. You can optionally provide a chat ID to continue an existing conversation, or omit it to start a new chat.
|
|
1374
|
+
|
|
1375
|
+
```python
|
|
1376
|
+
message = unique_sdk.Space.create_message(
|
|
1377
|
+
user_id=user_id,
|
|
1378
|
+
company_id=company_id,
|
|
1379
|
+
chatId="chat_dejfhe729br398", # Optional - if not provided, a new chat will be created
|
|
1380
|
+
assistantId="assistant_abc123",
|
|
1381
|
+
text="Hello, how can you help me?",
|
|
1382
|
+
toolChoices=["WebSearch"], # Optional - list of tools to use
|
|
1383
|
+
scopeRules={ # Optional - scope rules for filtering
|
|
1384
|
+
"or": [
|
|
1385
|
+
{
|
|
1386
|
+
"operator": "contains",
|
|
1387
|
+
"path": ["folderIdPath"],
|
|
1388
|
+
"value": "uniquepathid://scope_123"
|
|
1389
|
+
}
|
|
1390
|
+
]
|
|
1391
|
+
},
|
|
1392
|
+
)
|
|
1393
|
+
```
|
|
1394
|
+
|
|
1395
|
+
#### `unique_sdk.Space.get_chat_messages` (Compatible with release >.48)
|
|
1396
|
+
|
|
1397
|
+
Get all messages in a space chat. Returns a list of paginated messages in the specified chat.
|
|
1398
|
+
|
|
1399
|
+
```python
|
|
1400
|
+
messages = unique_sdk.Space.get_chat_messages(
|
|
1401
|
+
user_id=user_id,
|
|
1402
|
+
company_id=company_id,
|
|
1403
|
+
chat_id="chat_dejfhe729br398",
|
|
1404
|
+
skip=0, # Optional (defaults to 0) - number of messages to skip for pagination
|
|
1405
|
+
take=50, # Optional (defaults to 10) - number of messages to return
|
|
1406
|
+
)
|
|
1407
|
+
```
|
|
1408
|
+
|
|
1409
|
+
#### `unique_sdk.Space.get_latest_message`
|
|
1410
|
+
|
|
1411
|
+
Get the latest message in a space chat.
|
|
1412
|
+
|
|
1413
|
+
```python
|
|
1414
|
+
message = unique_sdk.Space.get_latest_message(
|
|
1415
|
+
user_id=user_id,
|
|
1416
|
+
company_id=company_id,
|
|
1417
|
+
chat_id="chat_dejfhe729br398",
|
|
1418
|
+
)
|
|
1419
|
+
```
|
|
1420
|
+
|
|
1365
1421
|
#### `unique_sdk.Space.delete_chat`
|
|
1366
1422
|
|
|
1367
1423
|
Delete a space chat by id. If the chat does not exist, the function will return an error.
|
|
@@ -1374,6 +1430,118 @@ unique_sdk.Space.delete_chat(
|
|
|
1374
1430
|
)
|
|
1375
1431
|
```
|
|
1376
1432
|
|
|
1433
|
+
### LLM Models
|
|
1434
|
+
|
|
1435
|
+
#### `unique_sdk.LLMModels.get` (Compatible with release >.46)
|
|
1436
|
+
|
|
1437
|
+
Get available LLM models. You can optionally filter by module and skip cache to fetch fresh data.
|
|
1438
|
+
|
|
1439
|
+
```python
|
|
1440
|
+
models = unique_sdk.LLMModels.get(
|
|
1441
|
+
user_id=user_id,
|
|
1442
|
+
company_id=company_id,
|
|
1443
|
+
module="UNIQUE_AI", # Optional - filter models by module, only UNIQUE_AI is supported right now
|
|
1444
|
+
)
|
|
1445
|
+
```
|
|
1446
|
+
|
|
1447
|
+
### User
|
|
1448
|
+
|
|
1449
|
+
#### `unique_sdk.User.get_users` (Compatible with release >.48)
|
|
1450
|
+
|
|
1451
|
+
Get users in a company. You can filter by email, display name, and use pagination with skip and take parameters.
|
|
1452
|
+
|
|
1453
|
+
```python
|
|
1454
|
+
users = unique_sdk.User.get_users(
|
|
1455
|
+
user_id=user_id,
|
|
1456
|
+
company_id=company_id,
|
|
1457
|
+
skip=0, # Optional - number of records to skip for pagination
|
|
1458
|
+
take=50, # Optional - number of records to return (max 1000)
|
|
1459
|
+
email="user@example.com", # Optional - filter by email
|
|
1460
|
+
displayName="John", # Optional - filter by display name
|
|
1461
|
+
)
|
|
1462
|
+
```
|
|
1463
|
+
|
|
1464
|
+
### Group
|
|
1465
|
+
|
|
1466
|
+
#### `unique_sdk.Group.create_group` (Compatible with release >.48)
|
|
1467
|
+
|
|
1468
|
+
Create a new group in a company. You can specify the group name (required), external ID and parent group ID.
|
|
1469
|
+
|
|
1470
|
+
```python
|
|
1471
|
+
group = unique_sdk.Group.create_group(
|
|
1472
|
+
user_id=user_id,
|
|
1473
|
+
company_id=company_id,
|
|
1474
|
+
name="New Group", # Required - the name of the group
|
|
1475
|
+
externalId="ext_123", # Optional - external ID for the group
|
|
1476
|
+
parentId="group_a9cs7wr2z1bg2sxczvltgjch", # Optional - parent group ID
|
|
1477
|
+
)
|
|
1478
|
+
```
|
|
1479
|
+
|
|
1480
|
+
#### `unique_sdk.Group.get_groups` (Compatible with release >.48)
|
|
1481
|
+
|
|
1482
|
+
Get groups in a company. You can filter by name and use pagination with skip and take parameters.
|
|
1483
|
+
|
|
1484
|
+
```python
|
|
1485
|
+
groups = unique_sdk.Group.get_groups(
|
|
1486
|
+
user_id=user_id,
|
|
1487
|
+
company_id=company_id,
|
|
1488
|
+
skip=0, # Optional - number of records to skip for pagination
|
|
1489
|
+
take=50, # Optional - number of records to return (max 1000)
|
|
1490
|
+
name="Admin", # Optional - filter by group name
|
|
1491
|
+
)
|
|
1492
|
+
```
|
|
1493
|
+
|
|
1494
|
+
#### `unique_sdk.Group.update_group` (Compatible with release >.48)
|
|
1495
|
+
|
|
1496
|
+
Update a group in a company. You can update the group's name.
|
|
1497
|
+
|
|
1498
|
+
```python
|
|
1499
|
+
updated_group = unique_sdk.Group.update_group(
|
|
1500
|
+
user_id=user_id,
|
|
1501
|
+
company_id=company_id,
|
|
1502
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1503
|
+
name="New Group Name", # Optional - update the group name
|
|
1504
|
+
)
|
|
1505
|
+
```
|
|
1506
|
+
|
|
1507
|
+
#### `unique_sdk.Group.add_users_to_group` (Compatible with release >.48)
|
|
1508
|
+
|
|
1509
|
+
Add users to a group. Provide an array of user IDs to add as members to the specified group.
|
|
1510
|
+
|
|
1511
|
+
```python
|
|
1512
|
+
result = unique_sdk.Group.add_users_to_group(
|
|
1513
|
+
user_id=user_id,
|
|
1514
|
+
company_id=company_id,
|
|
1515
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1516
|
+
userIds=["299420877169688584", "325402458132058201", "299426678160031752"], # Required - array of user IDs to add
|
|
1517
|
+
)
|
|
1518
|
+
```
|
|
1519
|
+
|
|
1520
|
+
#### `unique_sdk.Group.remove_users_from_group` (Compatible with release >.48)
|
|
1521
|
+
|
|
1522
|
+
Remove users from a group. Provide an array of user IDs to remove from the specified group.
|
|
1523
|
+
|
|
1524
|
+
```python
|
|
1525
|
+
result = unique_sdk.Group.remove_users_from_group(
|
|
1526
|
+
user_id=user_id,
|
|
1527
|
+
company_id=company_id,
|
|
1528
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1529
|
+
userIds=["299426678160031752", "299426678160031752"], # Required - array of user IDs to remove
|
|
1530
|
+
)
|
|
1531
|
+
```
|
|
1532
|
+
|
|
1533
|
+
#### `unique_sdk.Group.delete_group` (Compatible with release >.48)
|
|
1534
|
+
|
|
1535
|
+
Delete a group in a company by its group ID.
|
|
1536
|
+
|
|
1537
|
+
```python
|
|
1538
|
+
result = unique_sdk.Group.delete_group(
|
|
1539
|
+
user_id=user_id,
|
|
1540
|
+
company_id=company_id,
|
|
1541
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1542
|
+
)
|
|
1543
|
+
```
|
|
1544
|
+
|
|
1377
1545
|
### Agentic Table
|
|
1378
1546
|
|
|
1379
1547
|
The Agentic Table (Magic Table) API provides functionality for managing interactive tables with AI-powered cells, activity tracking, and metadata management.
|
|
@@ -1918,11 +2086,12 @@ You must provide the following parameters:
|
|
|
1918
2086
|
- `mime_type`: The mime type of the ifle to be uploaded.
|
|
1919
2087
|
- `text`: The text to be sent to the chat for chatting against the file.
|
|
1920
2088
|
|
|
1921
|
-
The script creates a chat and uploads the file to it. It then keeps polling the `ingestionState` field of the message, waiting for it to reach `FINISHED`, signaling the upload is complete. Once the file uploads successfully, the script sends the text, continues polling for completion, and finally retrieves the response message.
|
|
2089
|
+
The script creates a chat and uploads the file to it. It then keeps polling the `ingestionState` field of the message, waiting for it to reach `FINISHED`, signaling the upload is complete. Once the file uploads successfully, the script sends the text, continues polling for completion, and finally retrieves the response message. The function deletes the chat at the end unless the `should_delete_chat` is set to false.
|
|
1922
2090
|
|
|
1923
2091
|
**Optional parameters:**
|
|
1924
2092
|
- `poll_interval`: The number of seconds to wait between polling attempts (default: `1` second).
|
|
1925
2093
|
- `max_wait`: The maximum number of seconds to wait for the message to complete (default: `60` seconds).
|
|
2094
|
+
- `should_delete_chat`: Setting this flag determines whether the chat should be deleted at the end or not. Default is True.
|
|
1926
2095
|
|
|
1927
2096
|
Example of chatting against a PDF. (The usage can be extended to any supported file type)
|
|
1928
2097
|
|
|
@@ -1932,8 +2101,8 @@ latest_message = await unique_sdk.utils.chat_in_space.chat_against_file(
|
|
|
1932
2101
|
company_id=company_id,
|
|
1933
2102
|
assistant_id="assistant_hjcdga64bkcjnhu4",
|
|
1934
2103
|
path_to_file="/files/hello.pdf",
|
|
1935
|
-
displayed_filename="hello.pdf"
|
|
1936
|
-
mime_type="application/pdf"
|
|
2104
|
+
displayed_filename="hello.pdf",
|
|
2105
|
+
mime_type="application/pdf",
|
|
1937
2106
|
text="Give me a bullet point summary of the file.",
|
|
1938
2107
|
)
|
|
1939
2108
|
```
|
|
@@ -1979,6 +2148,33 @@ All notable changes to this project will be documented in this file.
|
|
|
1979
2148
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
1980
2149
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
1981
2150
|
|
|
2151
|
+
## [0.10.47] - 2025-11-19
|
|
2152
|
+
- Add expired/s at fields on content search result.
|
|
2153
|
+
|
|
2154
|
+
## [0.10.46] - 2025-11-18
|
|
2155
|
+
- chat_against_file function allows now a should_delete_chat flag.
|
|
2156
|
+
|
|
2157
|
+
## [0.10.45] - 2025-11-18
|
|
2158
|
+
- Create group and manage users functions.
|
|
2159
|
+
|
|
2160
|
+
## [0.10.44] - 2025-11-18
|
|
2161
|
+
- add function to get all messages in a chat.
|
|
2162
|
+
|
|
2163
|
+
## [0.10.43] - 2025-11-14
|
|
2164
|
+
- Add get, delete and update groups functions.
|
|
2165
|
+
|
|
2166
|
+
## [0.10.42] - 2025-11-14
|
|
2167
|
+
- Add get_users function.
|
|
2168
|
+
|
|
2169
|
+
## [0.10.41] - 2025-11-13
|
|
2170
|
+
- Add create_message and get_latest_message.
|
|
2171
|
+
|
|
2172
|
+
## [0.10.40] - 2025-11-10
|
|
2173
|
+
- Don't send description if not defined.
|
|
2174
|
+
|
|
2175
|
+
## [0.10.39] - 2025-11-07
|
|
2176
|
+
- Add function to get llm models
|
|
2177
|
+
|
|
1982
2178
|
## [0.10.38] - 2025-11-06
|
|
1983
2179
|
- Add description property to Reference and Content.
|
|
1984
2180
|
|
|
@@ -24,6 +24,9 @@ The Unique Python SDK provides access to the public API of Unique AI. It also en
|
|
|
24
24
|
- [Message Assessment](#message-assessment)
|
|
25
25
|
- [Folder](#folder)
|
|
26
26
|
- [Space](#space)
|
|
27
|
+
- [LLM Models](#llm-models)
|
|
28
|
+
- [User](#user)
|
|
29
|
+
- [Group](#group)
|
|
27
30
|
- [Agentic Table](#agentic-table)
|
|
28
31
|
6. [UniqueQL](#uniqueql)
|
|
29
32
|
- [Query Structure](#uniqueql-query-structure)
|
|
@@ -242,6 +245,9 @@ unique_sdk.Message.modify(
|
|
|
242
245
|
- [Message Assessment](#message-assessment)
|
|
243
246
|
- [Folder](#folder)
|
|
244
247
|
- [Space](#space)
|
|
248
|
+
- [LLM Models](#llm-models)
|
|
249
|
+
- [User](#user)
|
|
250
|
+
- [Group](#group)
|
|
245
251
|
- [Agentic Table](#agentic-table)
|
|
246
252
|
|
|
247
253
|
Most of the API services provide an asynchronous version of the method. The async methods are suffixed with `_async`.
|
|
@@ -1344,6 +1350,56 @@ unique_sdk.Folder.delete(
|
|
|
1344
1350
|
|
|
1345
1351
|
### Space
|
|
1346
1352
|
|
|
1353
|
+
#### `unique_sdk.Space.create_message`
|
|
1354
|
+
|
|
1355
|
+
Send a message in a space. You can optionally provide a chat ID to continue an existing conversation, or omit it to start a new chat.
|
|
1356
|
+
|
|
1357
|
+
```python
|
|
1358
|
+
message = unique_sdk.Space.create_message(
|
|
1359
|
+
user_id=user_id,
|
|
1360
|
+
company_id=company_id,
|
|
1361
|
+
chatId="chat_dejfhe729br398", # Optional - if not provided, a new chat will be created
|
|
1362
|
+
assistantId="assistant_abc123",
|
|
1363
|
+
text="Hello, how can you help me?",
|
|
1364
|
+
toolChoices=["WebSearch"], # Optional - list of tools to use
|
|
1365
|
+
scopeRules={ # Optional - scope rules for filtering
|
|
1366
|
+
"or": [
|
|
1367
|
+
{
|
|
1368
|
+
"operator": "contains",
|
|
1369
|
+
"path": ["folderIdPath"],
|
|
1370
|
+
"value": "uniquepathid://scope_123"
|
|
1371
|
+
}
|
|
1372
|
+
]
|
|
1373
|
+
},
|
|
1374
|
+
)
|
|
1375
|
+
```
|
|
1376
|
+
|
|
1377
|
+
#### `unique_sdk.Space.get_chat_messages` (Compatible with release >.48)
|
|
1378
|
+
|
|
1379
|
+
Get all messages in a space chat. Returns a list of paginated messages in the specified chat.
|
|
1380
|
+
|
|
1381
|
+
```python
|
|
1382
|
+
messages = unique_sdk.Space.get_chat_messages(
|
|
1383
|
+
user_id=user_id,
|
|
1384
|
+
company_id=company_id,
|
|
1385
|
+
chat_id="chat_dejfhe729br398",
|
|
1386
|
+
skip=0, # Optional (defaults to 0) - number of messages to skip for pagination
|
|
1387
|
+
take=50, # Optional (defaults to 10) - number of messages to return
|
|
1388
|
+
)
|
|
1389
|
+
```
|
|
1390
|
+
|
|
1391
|
+
#### `unique_sdk.Space.get_latest_message`
|
|
1392
|
+
|
|
1393
|
+
Get the latest message in a space chat.
|
|
1394
|
+
|
|
1395
|
+
```python
|
|
1396
|
+
message = unique_sdk.Space.get_latest_message(
|
|
1397
|
+
user_id=user_id,
|
|
1398
|
+
company_id=company_id,
|
|
1399
|
+
chat_id="chat_dejfhe729br398",
|
|
1400
|
+
)
|
|
1401
|
+
```
|
|
1402
|
+
|
|
1347
1403
|
#### `unique_sdk.Space.delete_chat`
|
|
1348
1404
|
|
|
1349
1405
|
Delete a space chat by id. If the chat does not exist, the function will return an error.
|
|
@@ -1356,6 +1412,118 @@ unique_sdk.Space.delete_chat(
|
|
|
1356
1412
|
)
|
|
1357
1413
|
```
|
|
1358
1414
|
|
|
1415
|
+
### LLM Models
|
|
1416
|
+
|
|
1417
|
+
#### `unique_sdk.LLMModels.get` (Compatible with release >.46)
|
|
1418
|
+
|
|
1419
|
+
Get available LLM models. You can optionally filter by module and skip cache to fetch fresh data.
|
|
1420
|
+
|
|
1421
|
+
```python
|
|
1422
|
+
models = unique_sdk.LLMModels.get(
|
|
1423
|
+
user_id=user_id,
|
|
1424
|
+
company_id=company_id,
|
|
1425
|
+
module="UNIQUE_AI", # Optional - filter models by module, only UNIQUE_AI is supported right now
|
|
1426
|
+
)
|
|
1427
|
+
```
|
|
1428
|
+
|
|
1429
|
+
### User
|
|
1430
|
+
|
|
1431
|
+
#### `unique_sdk.User.get_users` (Compatible with release >.48)
|
|
1432
|
+
|
|
1433
|
+
Get users in a company. You can filter by email, display name, and use pagination with skip and take parameters.
|
|
1434
|
+
|
|
1435
|
+
```python
|
|
1436
|
+
users = unique_sdk.User.get_users(
|
|
1437
|
+
user_id=user_id,
|
|
1438
|
+
company_id=company_id,
|
|
1439
|
+
skip=0, # Optional - number of records to skip for pagination
|
|
1440
|
+
take=50, # Optional - number of records to return (max 1000)
|
|
1441
|
+
email="user@example.com", # Optional - filter by email
|
|
1442
|
+
displayName="John", # Optional - filter by display name
|
|
1443
|
+
)
|
|
1444
|
+
```
|
|
1445
|
+
|
|
1446
|
+
### Group
|
|
1447
|
+
|
|
1448
|
+
#### `unique_sdk.Group.create_group` (Compatible with release >.48)
|
|
1449
|
+
|
|
1450
|
+
Create a new group in a company. You can specify the group name (required), external ID and parent group ID.
|
|
1451
|
+
|
|
1452
|
+
```python
|
|
1453
|
+
group = unique_sdk.Group.create_group(
|
|
1454
|
+
user_id=user_id,
|
|
1455
|
+
company_id=company_id,
|
|
1456
|
+
name="New Group", # Required - the name of the group
|
|
1457
|
+
externalId="ext_123", # Optional - external ID for the group
|
|
1458
|
+
parentId="group_a9cs7wr2z1bg2sxczvltgjch", # Optional - parent group ID
|
|
1459
|
+
)
|
|
1460
|
+
```
|
|
1461
|
+
|
|
1462
|
+
#### `unique_sdk.Group.get_groups` (Compatible with release >.48)
|
|
1463
|
+
|
|
1464
|
+
Get groups in a company. You can filter by name and use pagination with skip and take parameters.
|
|
1465
|
+
|
|
1466
|
+
```python
|
|
1467
|
+
groups = unique_sdk.Group.get_groups(
|
|
1468
|
+
user_id=user_id,
|
|
1469
|
+
company_id=company_id,
|
|
1470
|
+
skip=0, # Optional - number of records to skip for pagination
|
|
1471
|
+
take=50, # Optional - number of records to return (max 1000)
|
|
1472
|
+
name="Admin", # Optional - filter by group name
|
|
1473
|
+
)
|
|
1474
|
+
```
|
|
1475
|
+
|
|
1476
|
+
#### `unique_sdk.Group.update_group` (Compatible with release >.48)
|
|
1477
|
+
|
|
1478
|
+
Update a group in a company. You can update the group's name.
|
|
1479
|
+
|
|
1480
|
+
```python
|
|
1481
|
+
updated_group = unique_sdk.Group.update_group(
|
|
1482
|
+
user_id=user_id,
|
|
1483
|
+
company_id=company_id,
|
|
1484
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1485
|
+
name="New Group Name", # Optional - update the group name
|
|
1486
|
+
)
|
|
1487
|
+
```
|
|
1488
|
+
|
|
1489
|
+
#### `unique_sdk.Group.add_users_to_group` (Compatible with release >.48)
|
|
1490
|
+
|
|
1491
|
+
Add users to a group. Provide an array of user IDs to add as members to the specified group.
|
|
1492
|
+
|
|
1493
|
+
```python
|
|
1494
|
+
result = unique_sdk.Group.add_users_to_group(
|
|
1495
|
+
user_id=user_id,
|
|
1496
|
+
company_id=company_id,
|
|
1497
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1498
|
+
userIds=["299420877169688584", "325402458132058201", "299426678160031752"], # Required - array of user IDs to add
|
|
1499
|
+
)
|
|
1500
|
+
```
|
|
1501
|
+
|
|
1502
|
+
#### `unique_sdk.Group.remove_users_from_group` (Compatible with release >.48)
|
|
1503
|
+
|
|
1504
|
+
Remove users from a group. Provide an array of user IDs to remove from the specified group.
|
|
1505
|
+
|
|
1506
|
+
```python
|
|
1507
|
+
result = unique_sdk.Group.remove_users_from_group(
|
|
1508
|
+
user_id=user_id,
|
|
1509
|
+
company_id=company_id,
|
|
1510
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1511
|
+
userIds=["299426678160031752", "299426678160031752"], # Required - array of user IDs to remove
|
|
1512
|
+
)
|
|
1513
|
+
```
|
|
1514
|
+
|
|
1515
|
+
#### `unique_sdk.Group.delete_group` (Compatible with release >.48)
|
|
1516
|
+
|
|
1517
|
+
Delete a group in a company by its group ID.
|
|
1518
|
+
|
|
1519
|
+
```python
|
|
1520
|
+
result = unique_sdk.Group.delete_group(
|
|
1521
|
+
user_id=user_id,
|
|
1522
|
+
company_id=company_id,
|
|
1523
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1524
|
+
)
|
|
1525
|
+
```
|
|
1526
|
+
|
|
1359
1527
|
### Agentic Table
|
|
1360
1528
|
|
|
1361
1529
|
The Agentic Table (Magic Table) API provides functionality for managing interactive tables with AI-powered cells, activity tracking, and metadata management.
|
|
@@ -1900,11 +2068,12 @@ You must provide the following parameters:
|
|
|
1900
2068
|
- `mime_type`: The mime type of the ifle to be uploaded.
|
|
1901
2069
|
- `text`: The text to be sent to the chat for chatting against the file.
|
|
1902
2070
|
|
|
1903
|
-
The script creates a chat and uploads the file to it. It then keeps polling the `ingestionState` field of the message, waiting for it to reach `FINISHED`, signaling the upload is complete. Once the file uploads successfully, the script sends the text, continues polling for completion, and finally retrieves the response message.
|
|
2071
|
+
The script creates a chat and uploads the file to it. It then keeps polling the `ingestionState` field of the message, waiting for it to reach `FINISHED`, signaling the upload is complete. Once the file uploads successfully, the script sends the text, continues polling for completion, and finally retrieves the response message. The function deletes the chat at the end unless the `should_delete_chat` is set to false.
|
|
1904
2072
|
|
|
1905
2073
|
**Optional parameters:**
|
|
1906
2074
|
- `poll_interval`: The number of seconds to wait between polling attempts (default: `1` second).
|
|
1907
2075
|
- `max_wait`: The maximum number of seconds to wait for the message to complete (default: `60` seconds).
|
|
2076
|
+
- `should_delete_chat`: Setting this flag determines whether the chat should be deleted at the end or not. Default is True.
|
|
1908
2077
|
|
|
1909
2078
|
Example of chatting against a PDF. (The usage can be extended to any supported file type)
|
|
1910
2079
|
|
|
@@ -1914,8 +2083,8 @@ latest_message = await unique_sdk.utils.chat_in_space.chat_against_file(
|
|
|
1914
2083
|
company_id=company_id,
|
|
1915
2084
|
assistant_id="assistant_hjcdga64bkcjnhu4",
|
|
1916
2085
|
path_to_file="/files/hello.pdf",
|
|
1917
|
-
displayed_filename="hello.pdf"
|
|
1918
|
-
mime_type="application/pdf"
|
|
2086
|
+
displayed_filename="hello.pdf",
|
|
2087
|
+
mime_type="application/pdf",
|
|
1919
2088
|
text="Give me a bullet point summary of the file.",
|
|
1920
2089
|
)
|
|
1921
2090
|
```
|
|
@@ -83,6 +83,9 @@ 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
|
|
87
|
+
from unique_sdk.api_resources._user import User as User
|
|
88
|
+
from unique_sdk.api_resources._group import Group as Group
|
|
86
89
|
from unique_sdk.api_resources._message_assessment import (
|
|
87
90
|
MessageAssessment as MessageAssessment,
|
|
88
91
|
)
|
|
@@ -29,6 +29,7 @@ class Content(APIResource["Content"]):
|
|
|
29
29
|
metadata: Optional[Dict[str, Any]]
|
|
30
30
|
writeUrl: Optional[str]
|
|
31
31
|
readUrl: Optional[str]
|
|
32
|
+
expiredAt: Optional[str]
|
|
32
33
|
|
|
33
34
|
class QueryMode(Enum):
|
|
34
35
|
Default = "default"
|
|
@@ -351,6 +352,9 @@ class Content(APIResource["Content"]):
|
|
|
351
352
|
"""
|
|
352
353
|
if "input" in params:
|
|
353
354
|
params["input"]["metadata"] = params["input"].get("metadata") or {}
|
|
355
|
+
if "description" in params["input"] and not params["input"]["description"]:
|
|
356
|
+
params["input"].pop("description")
|
|
357
|
+
|
|
354
358
|
return cast(
|
|
355
359
|
"Content",
|
|
356
360
|
cls._static_request(
|
|
@@ -374,6 +378,9 @@ class Content(APIResource["Content"]):
|
|
|
374
378
|
"""
|
|
375
379
|
if "input" in params:
|
|
376
380
|
params["input"]["metadata"] = params["input"].get("metadata") or {}
|
|
381
|
+
if "description" in params["input"] and not params["input"]["description"]:
|
|
382
|
+
params["input"].pop("description")
|
|
383
|
+
|
|
377
384
|
return cast(
|
|
378
385
|
"Content",
|
|
379
386
|
await cls._static_request_async(
|