|
7 | 7 |
|
8 | 8 | from gptscript.confirm import AuthResponse
|
9 | 9 | from gptscript.credentials import Credential, to_credential
|
| 10 | +from gptscript.datasets import DatasetMeta, Dataset, DatasetElementMeta, DatasetElement |
10 | 11 | from gptscript.frame import RunFrame, CallFrame, PromptFrame, Program
|
11 | 12 | from gptscript.opts import GlobalOptions
|
12 | 13 | from gptscript.prompt import PromptResponse
|
@@ -210,6 +211,86 @@ async def delete_credential(self, context: str = "default", name: str = "") -> s
|
210 | 211 | {"context": [context], "name": name}
|
211 | 212 | )
|
212 | 213 |
|
| 214 | + async def list_datasets(self, workspace: str) -> List[DatasetMeta]: |
| 215 | + if workspace == "": |
| 216 | + workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"] |
| 217 | + |
| 218 | + res = await self._run_basic_command( |
| 219 | + "datasets", |
| 220 | + {"input": "{}", "workspace": workspace, "datasetToolRepo": self.opts.DatasetToolRepo} |
| 221 | + ) |
| 222 | + return [DatasetMeta.model_validate(d) for d in json.loads(res)] |
| 223 | + |
| 224 | + async def create_dataset(self, workspace: str, name: str, description: str = "") -> Dataset: |
| 225 | + if workspace == "": |
| 226 | + workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"] |
| 227 | + |
| 228 | + if name == "": |
| 229 | + raise ValueError("name cannot be empty") |
| 230 | + |
| 231 | + res = await self._run_basic_command( |
| 232 | + "datasets/create", |
| 233 | + {"input": json.dumps({"datasetName": name, "datasetDescription": description}), |
| 234 | + "workspace": workspace, |
| 235 | + "datasetToolRepo": self.opts.DatasetToolRepo} |
| 236 | + ) |
| 237 | + return Dataset.model_validate_json(res) |
| 238 | + |
| 239 | + async def add_dataset_element(self, workspace: str, datasetID: str, elementName: str, elementContent: str, |
| 240 | + elementDescription: str = "") -> DatasetElementMeta: |
| 241 | + if workspace == "": |
| 242 | + workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"] |
| 243 | + |
| 244 | + if datasetID == "": |
| 245 | + raise ValueError("datasetID cannot be empty") |
| 246 | + elif elementName == "": |
| 247 | + raise ValueError("elementName cannot be empty") |
| 248 | + elif elementContent == "": |
| 249 | + raise ValueError("elementContent cannot be empty") |
| 250 | + |
| 251 | + res = await self._run_basic_command( |
| 252 | + "datasets/add-element", |
| 253 | + {"input": json.dumps({"datasetID": datasetID, |
| 254 | + "elementName": elementName, |
| 255 | + "elementContent": elementContent, |
| 256 | + "elementDescription": elementDescription}), |
| 257 | + "workspace": workspace, |
| 258 | + "datasetToolRepo": self.opts.DatasetToolRepo} |
| 259 | + ) |
| 260 | + return DatasetElementMeta.model_validate_json(res) |
| 261 | + |
| 262 | + async def list_dataset_elements(self, workspace: str, datasetID: str) -> List[DatasetElementMeta]: |
| 263 | + if workspace == "": |
| 264 | + workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"] |
| 265 | + |
| 266 | + if datasetID == "": |
| 267 | + raise ValueError("datasetID cannot be empty") |
| 268 | + |
| 269 | + res = await self._run_basic_command( |
| 270 | + "datasets/list-elements", |
| 271 | + {"input": json.dumps({"datasetID": datasetID}), |
| 272 | + "workspace": workspace, |
| 273 | + "datasetToolRepo": self.opts.DatasetToolRepo} |
| 274 | + ) |
| 275 | + return [DatasetElementMeta.model_validate(d) for d in json.loads(res)] |
| 276 | + |
| 277 | + async def get_dataset_element(self, workspace: str, datasetID: str, elementName: str) -> DatasetElement: |
| 278 | + if workspace == "": |
| 279 | + workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"] |
| 280 | + |
| 281 | + if datasetID == "": |
| 282 | + raise ValueError("datasetID cannot be empty") |
| 283 | + elif elementName == "": |
| 284 | + raise ValueError("elementName cannot be empty") |
| 285 | + |
| 286 | + res = await self._run_basic_command( |
| 287 | + "datasets/get-element", |
| 288 | + {"input": json.dumps({"datasetID": datasetID, "element": elementName}), |
| 289 | + "workspace": workspace, |
| 290 | + "datasetToolRepo": self.opts.DatasetToolRepo} |
| 291 | + ) |
| 292 | + return DatasetElement.model_validate_json(res) |
| 293 | + |
213 | 294 |
|
214 | 295 | def _get_command():
|
215 | 296 | if os.getenv("GPTSCRIPT_BIN") is not None:
|
|
0 commit comments