seekrai 0.4.2__py3-none-any.whl → 0.5.0__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.
- seekrai/__init__.py +0 -1
- seekrai/abstract/api_requestor.py +108 -251
- seekrai/abstract/response_parsing.py +99 -0
- seekrai/client.py +12 -0
- seekrai/filemanager.py +181 -3
- seekrai/resources/__init__.py +10 -0
- seekrai/resources/agents/__init__.py +13 -0
- seekrai/resources/agents/agent_inference.py +277 -0
- seekrai/resources/agents/agents.py +272 -0
- seekrai/resources/agents/threads.py +454 -0
- seekrai/resources/alignment.py +3 -9
- seekrai/resources/completions.py +3 -9
- seekrai/resources/deployments.py +4 -9
- seekrai/resources/embeddings.py +3 -9
- seekrai/resources/files.py +163 -48
- seekrai/resources/finetune.py +3 -9
- seekrai/resources/images.py +3 -5
- seekrai/resources/ingestion.py +173 -0
- seekrai/resources/models.py +35 -124
- seekrai/resources/projects.py +4 -9
- seekrai/resources/resource_base.py +10 -0
- seekrai/resources/vectordb.py +482 -0
- seekrai/types/__init__.py +87 -0
- seekrai/types/agents/__init__.py +89 -0
- seekrai/types/agents/agent.py +42 -0
- seekrai/types/agents/runs.py +117 -0
- seekrai/types/agents/threads.py +265 -0
- seekrai/types/agents/tools/__init__.py +16 -0
- seekrai/types/agents/tools/env_model_config.py +7 -0
- seekrai/types/agents/tools/schemas/__init__.py +8 -0
- seekrai/types/agents/tools/schemas/file_search.py +9 -0
- seekrai/types/agents/tools/schemas/file_search_env.py +11 -0
- seekrai/types/agents/tools/tool.py +14 -0
- seekrai/types/agents/tools/tool_env_types.py +4 -0
- seekrai/types/agents/tools/tool_types.py +10 -0
- seekrai/types/alignment.py +6 -2
- seekrai/types/common.py +7 -2
- seekrai/types/files.py +5 -0
- seekrai/types/finetune.py +1 -0
- seekrai/types/ingestion.py +29 -0
- seekrai/types/models.py +3 -0
- seekrai/types/vectordb.py +78 -0
- {seekrai-0.4.2.dist-info → seekrai-0.5.0.dist-info}/METADATA +3 -3
- seekrai-0.5.0.dist-info/RECORD +67 -0
- {seekrai-0.4.2.dist-info → seekrai-0.5.0.dist-info}/WHEEL +1 -1
- seekrai-0.4.2.dist-info/RECORD +0 -46
- {seekrai-0.4.2.dist-info → seekrai-0.5.0.dist-info}/LICENSE +0 -0
- {seekrai-0.4.2.dist-info → seekrai-0.5.0.dist-info}/entry_points.txt +0 -0
seekrai/resources/models.py
CHANGED
|
@@ -1,56 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import os
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Any, List
|
|
6
|
-
|
|
7
|
-
from tqdm import tqdm
|
|
8
|
-
from tqdm.utils import CallbackIOWrapper
|
|
9
|
-
|
|
10
3
|
from seekrai.abstract import api_requestor
|
|
11
|
-
from seekrai.
|
|
4
|
+
from seekrai.resources.resource_base import ResourceBase
|
|
12
5
|
from seekrai.seekrflow_response import SeekrFlowResponse
|
|
13
|
-
from seekrai.types import ModelList, ModelResponse,
|
|
14
|
-
from seekrai.types.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class Models:
|
|
18
|
-
def __init__(self, client: SeekrFlowClient) -> None:
|
|
19
|
-
self._client = client
|
|
20
|
-
|
|
21
|
-
def upload(
|
|
22
|
-
self,
|
|
23
|
-
file: Path | str,
|
|
24
|
-
*,
|
|
25
|
-
model_type: ModelType | str = ModelType.OBJECT_DETECTION,
|
|
26
|
-
) -> ModelResponse:
|
|
27
|
-
if isinstance(file, str):
|
|
28
|
-
file = Path(file)
|
|
6
|
+
from seekrai.types import ModelList, ModelResponse, SeekrFlowRequest
|
|
7
|
+
from seekrai.types.common import ObjectType
|
|
8
|
+
from seekrai.utils import parse_timestamp
|
|
29
9
|
|
|
30
|
-
requestor = api_requestor.APIRequestor(
|
|
31
|
-
client=self._client,
|
|
32
|
-
)
|
|
33
|
-
file_size = os.stat(file.as_posix()).st_size
|
|
34
|
-
|
|
35
|
-
with tqdm(
|
|
36
|
-
total=file_size,
|
|
37
|
-
unit="B",
|
|
38
|
-
unit_scale=True,
|
|
39
|
-
desc=f"Uploading model file {file.name}",
|
|
40
|
-
disable=bool(DISABLE_TQDM),
|
|
41
|
-
) as t:
|
|
42
|
-
with file.open("rb") as f:
|
|
43
|
-
reader_wrapper = CallbackIOWrapper(t.update, f, "read")
|
|
44
|
-
response, _, _ = requestor.request(
|
|
45
|
-
options=SeekrFlowRequest(
|
|
46
|
-
method="PUT",
|
|
47
|
-
url="flow/pt-models",
|
|
48
|
-
files={"files": reader_wrapper, "filename": file.name},
|
|
49
|
-
params={"purpose": model_type},
|
|
50
|
-
),
|
|
51
|
-
)
|
|
52
|
-
return ModelResponse(**response.data)
|
|
53
10
|
|
|
11
|
+
class Models(ResourceBase):
|
|
54
12
|
def list(
|
|
55
13
|
self,
|
|
56
14
|
) -> ModelList:
|
|
@@ -58,7 +16,7 @@ class Models:
|
|
|
58
16
|
Method to return list of models on the API
|
|
59
17
|
|
|
60
18
|
Returns:
|
|
61
|
-
|
|
19
|
+
ModelList: List of model objects
|
|
62
20
|
"""
|
|
63
21
|
|
|
64
22
|
requestor = api_requestor.APIRequestor(
|
|
@@ -68,95 +26,36 @@ class Models:
|
|
|
68
26
|
response, _, _ = requestor.request(
|
|
69
27
|
options=SeekrFlowRequest(
|
|
70
28
|
method="GET",
|
|
71
|
-
url="flow/
|
|
72
|
-
),
|
|
73
|
-
stream=False,
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
assert isinstance(response, SeekrFlowResponse)
|
|
77
|
-
return ModelList(**response.data)
|
|
78
|
-
|
|
79
|
-
def promote(self, id: str) -> ModelResponse:
|
|
80
|
-
requestor = api_requestor.APIRequestor(
|
|
81
|
-
client=self._client,
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
response, _, _ = requestor.request(
|
|
85
|
-
options=SeekrFlowRequest(
|
|
86
|
-
method="GET",
|
|
87
|
-
url=f"flow/pt-models/{id}/promote-model",
|
|
88
|
-
params={"model_id": id},
|
|
89
|
-
),
|
|
90
|
-
stream=False,
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
assert isinstance(response, SeekrFlowResponse)
|
|
94
|
-
|
|
95
|
-
return ModelResponse(**response.data)
|
|
96
|
-
|
|
97
|
-
def demote(self, id: str) -> ModelResponse:
|
|
98
|
-
requestor = api_requestor.APIRequestor(
|
|
99
|
-
client=self._client,
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
response, _, _ = requestor.request(
|
|
103
|
-
options=SeekrFlowRequest(
|
|
104
|
-
method="GET",
|
|
105
|
-
url=f"flow/pt-models/{id}/demote-model",
|
|
106
|
-
params={"model_id": id},
|
|
29
|
+
url="flow/models",
|
|
107
30
|
),
|
|
108
31
|
stream=False,
|
|
109
32
|
)
|
|
110
|
-
|
|
111
33
|
assert isinstance(response, SeekrFlowResponse)
|
|
112
34
|
|
|
113
|
-
|
|
35
|
+
model_responses = [
|
|
36
|
+
ModelResponse(
|
|
37
|
+
id=str(model["id"]),
|
|
38
|
+
object=ObjectType.Model,
|
|
39
|
+
name=model["name"],
|
|
40
|
+
bytes=model["size"],
|
|
41
|
+
created_at=parse_timestamp(model["created_at"]),
|
|
42
|
+
model_type=model["model_type"],
|
|
43
|
+
)
|
|
44
|
+
for model in response.data["data"]
|
|
45
|
+
]
|
|
114
46
|
|
|
115
|
-
|
|
116
|
-
requestor = api_requestor.APIRequestor(
|
|
117
|
-
client=self._client,
|
|
118
|
-
)
|
|
47
|
+
return ModelList(data=model_responses)
|
|
119
48
|
|
|
120
|
-
if isinstance(file, str):
|
|
121
|
-
file = Path(file)
|
|
122
|
-
|
|
123
|
-
file_size = os.stat(file.as_posix()).st_size
|
|
124
|
-
|
|
125
|
-
with tqdm(
|
|
126
|
-
total=file_size,
|
|
127
|
-
unit="B",
|
|
128
|
-
unit_scale=True,
|
|
129
|
-
desc=f"Uploading file {file.name}",
|
|
130
|
-
disable=bool(DISABLE_TQDM),
|
|
131
|
-
):
|
|
132
|
-
with file.open("rb") as f:
|
|
133
|
-
response, _, _ = requestor.request(
|
|
134
|
-
options=SeekrFlowRequest(
|
|
135
|
-
method="POST",
|
|
136
|
-
url="flow/pt-models/predict",
|
|
137
|
-
files={"files": f, "filename": file.name},
|
|
138
|
-
params={"model_id": id},
|
|
139
|
-
),
|
|
140
|
-
stream=False,
|
|
141
|
-
)
|
|
142
|
-
|
|
143
|
-
assert isinstance(response, SeekrFlowResponse)
|
|
144
|
-
|
|
145
|
-
return response.data
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
class AsyncModels:
|
|
149
|
-
def __init__(self, client: SeekrFlowClient) -> None:
|
|
150
|
-
self._client = client
|
|
151
49
|
|
|
50
|
+
class AsyncModels(ResourceBase):
|
|
152
51
|
async def list(
|
|
153
52
|
self,
|
|
154
|
-
) ->
|
|
53
|
+
) -> ModelList:
|
|
155
54
|
"""
|
|
156
55
|
Async method to return list of models on API
|
|
157
56
|
|
|
158
57
|
Returns:
|
|
159
|
-
|
|
58
|
+
ModelList: List of model objects
|
|
160
59
|
"""
|
|
161
60
|
|
|
162
61
|
requestor = api_requestor.APIRequestor(
|
|
@@ -174,4 +73,16 @@ class AsyncModels:
|
|
|
174
73
|
assert isinstance(response, SeekrFlowResponse)
|
|
175
74
|
assert isinstance(response.data, list)
|
|
176
75
|
|
|
177
|
-
|
|
76
|
+
model_responses = [
|
|
77
|
+
ModelResponse(
|
|
78
|
+
id=str(model["id"]),
|
|
79
|
+
object=ObjectType.Model,
|
|
80
|
+
name=model["name"],
|
|
81
|
+
bytes=model["size"],
|
|
82
|
+
created_at=parse_timestamp(model["created_at"]),
|
|
83
|
+
model_type=model["model_type"],
|
|
84
|
+
)
|
|
85
|
+
for model in response.data["data"]
|
|
86
|
+
]
|
|
87
|
+
|
|
88
|
+
return ModelList(data=model_responses)
|
seekrai/resources/projects.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from seekrai.abstract import api_requestor
|
|
2
|
+
from seekrai.resources.resource_base import ResourceBase
|
|
2
3
|
from seekrai.seekrflow_response import SeekrFlowResponse
|
|
3
|
-
from seekrai.types import
|
|
4
|
+
from seekrai.types import SeekrFlowRequest
|
|
4
5
|
from seekrai.types.projects import (
|
|
5
6
|
GetProjectsResponse,
|
|
6
7
|
PostProjectRequest,
|
|
@@ -10,10 +11,7 @@ from seekrai.types.projects import (
|
|
|
10
11
|
)
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
class Projects:
|
|
14
|
-
def __init__(self, client: SeekrFlowClient) -> None:
|
|
15
|
-
self._client = client
|
|
16
|
-
|
|
14
|
+
class Projects(ResourceBase):
|
|
17
15
|
def list(self, skip: int = 0, limit: int = 100) -> GetProjectsResponse:
|
|
18
16
|
requestor = api_requestor.APIRequestor(
|
|
19
17
|
client=self._client,
|
|
@@ -70,10 +68,7 @@ class Projects:
|
|
|
70
68
|
return ProjectSchema(**response.data)
|
|
71
69
|
|
|
72
70
|
|
|
73
|
-
class AsyncProjects:
|
|
74
|
-
def __init__(self, client: SeekrFlowClient) -> None:
|
|
75
|
-
self._client = client
|
|
76
|
-
|
|
71
|
+
class AsyncProjects(ResourceBase):
|
|
77
72
|
async def list(self, skip: int = 0, limit: int = 100) -> GetProjectsResponse:
|
|
78
73
|
requestor = api_requestor.APIRequestor(
|
|
79
74
|
client=self._client,
|