adaptive-sdk 0.1.2__py3-none-any.whl → 0.1.4__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.
@@ -11,6 +11,10 @@ class AuthProviderKind(str, Enum):
11
11
  """@public"""
12
12
  OIDC = 'OIDC'
13
13
 
14
+ class BillingCycle(str, Enum):
15
+ """@public"""
16
+ YEARLY = 'YEARLY'
17
+
14
18
  class CompletionGroupBy(str, Enum):
15
19
  """@public"""
16
20
  MODEL = 'MODEL'
@@ -24,12 +28,6 @@ class CompletionSource(str, Enum):
24
28
  DATASET = 'DATASET'
25
29
  EVALUATION = 'EVALUATION'
26
30
 
27
- class CompletionSourceOutput(str, Enum):
28
- """@public"""
29
- LIVE = 'LIVE'
30
- OFFLINE = 'OFFLINE'
31
- AUTOMATION = 'AUTOMATION'
32
-
33
31
  class ComputePoolCapability(str, Enum):
34
32
  """@public"""
35
33
  INFERENCE = 'INFERENCE'
@@ -47,9 +45,11 @@ class DatasetSource(str, Enum):
47
45
  UPLOADED = 'UPLOADED'
48
46
  GENERATED = 'GENERATED'
49
47
  GENERATING = 'GENERATING'
48
+ FILTERED = 'FILTERED'
50
49
 
51
50
  class DateBucketUnit(str, Enum):
52
51
  """@public"""
52
+ HOUR = 'HOUR'
53
53
  DAY = 'DAY'
54
54
  WEEK = 'WEEK'
55
55
  MONTH = 'MONTH'
@@ -57,21 +57,6 @@ class DateBucketUnit(str, Enum):
57
57
  YEAR = 'YEAR'
58
58
  NO_GROUP_BY_DATE = 'NO_GROUP_BY_DATE'
59
59
 
60
- class EvaluationJobStatus(str, Enum):
61
- """@public"""
62
- PENDING = 'PENDING'
63
- RUNNING = 'RUNNING'
64
- COMPLETED = 'COMPLETED'
65
- FAILED = 'FAILED'
66
- CANCELED = 'CANCELED'
67
-
68
- class EvaluationType(str, Enum):
69
- """@public"""
70
- AI_JUDGE = 'AI_JUDGE'
71
- REMOTE_ENV = 'REMOTE_ENV'
72
- GRADERS = 'GRADERS'
73
- MULTI_AI_JUDGES = 'MULTI_AI_JUDGES'
74
-
75
60
  class ExternalModelProviderName(str, Enum):
76
61
  """@public"""
77
62
  AZURE = 'AZURE'
@@ -85,11 +70,6 @@ class FeedbackType(str, Enum):
85
70
  DIRECT = 'DIRECT'
86
71
  COMPARISON = 'COMPARISON'
87
72
 
88
- class FeedbackTypeOutput(str, Enum):
89
- """@public"""
90
- DIRECT = 'DIRECT'
91
- PREFERENCE = 'PREFERENCE'
92
-
93
73
  class GraderTypeEnum(str, Enum):
94
74
  """@public"""
95
75
  JUDGE = 'JUDGE'
@@ -97,10 +77,16 @@ class GraderTypeEnum(str, Enum):
97
77
  REMOTE = 'REMOTE'
98
78
  CUSTOM = 'CUSTOM'
99
79
 
80
+ class HarmonyStatus(str, Enum):
81
+ """@public"""
82
+ ONLINE = 'ONLINE'
83
+ OFFLINE = 'OFFLINE'
84
+
100
85
  class JobArtifactKind(str, Enum):
101
86
  """@public"""
102
87
  EVALUATION = 'EVALUATION'
103
88
  CUSTOM = 'CUSTOM'
89
+ DATASET = 'DATASET'
104
90
 
105
91
  class JobKind(str, Enum):
106
92
  """@public"""
@@ -186,11 +172,6 @@ class OpenAIModel(str, Enum):
186
172
  GPT5_NANO = 'GPT5_NANO'
187
173
  GPT41_MINI = 'GPT41_MINI'
188
174
 
189
- class PartitionStatus(str, Enum):
190
- """@public"""
191
- ONLINE = 'ONLINE'
192
- OFFLINE = 'OFFLINE'
193
-
194
175
  class PrebuiltCriteriaKey(str, Enum):
195
176
  """@public"""
196
177
  FAITHFULNESS = 'FAITHFULNESS'
@@ -215,7 +196,7 @@ class RemoteEnvStatus(str, Enum):
215
196
  ONLINE = 'ONLINE'
216
197
  OFFLINE = 'OFFLINE'
217
198
 
218
- class SelectionTypeOutput(str, Enum):
199
+ class SelectionTypeInput(str, Enum):
219
200
  """@public"""
220
201
  ALL = 'ALL'
221
202
  RANDOM = 'RANDOM'
@@ -234,26 +215,7 @@ class TimeseriesInterval(str, Enum):
234
215
  MONTH = 'MONTH'
235
216
  QUARTER = 'QUARTER'
236
217
  YEAR = 'YEAR'
237
-
238
- class TrainingJobStatus(str, Enum):
239
- """@public"""
240
- PENDING = 'PENDING'
241
- RUNNING = 'RUNNING'
242
- COMPLETED = 'COMPLETED'
243
- FAILED = 'FAILED'
244
- CANCELED = 'CANCELED'
245
-
246
- class TrainingMetadataOutputAlignmentMethod(str, Enum):
247
- """@public"""
248
- DPO = 'DPO'
249
- PPO = 'PPO'
250
- SFT = 'SFT'
251
- GRPO = 'GRPO'
252
-
253
- class TrainingMetadataOutputTrainingType(str, Enum):
254
- """@public"""
255
- FULL_WEIGHTS = 'FULL_WEIGHTS'
256
- PARAMETER_EFFICIENT = 'PARAMETER_EFFICIENT'
218
+ MILLENNIUM = 'MILLENNIUM'
257
219
 
258
220
  class UnitPosition(str, Enum):
259
221
  """@public"""
@@ -1,7 +1,7 @@
1
1
  from typing import Annotated, Any, List, Literal, Optional, Union
2
2
  from pydantic import Field
3
3
  from .base_model import BaseModel
4
- from .enums import AbcampaignStatus, CompletionSource, CompletionSourceOutput, DatasetKind, FeedbackType, GraderTypeEnum, JobArtifactKind, JobKind, JobStatus, JobStatusOutput, JudgeCapability, MetricKind, MetricScoringType, ModelKindFilter, ModelOnline, PartitionStatus, PrebuiltCriteriaKey, ProviderName, RemoteEnvStatus
4
+ from .enums import AbcampaignStatus, CompletionSource, DatasetKind, FeedbackType, GraderTypeEnum, HarmonyStatus, JobArtifactKind, JobKind, JobStatus, JobStatusOutput, JudgeCapability, MetricKind, MetricScoringType, ModelKindFilter, ModelOnline, PrebuiltCriteriaKey, ProviderName, RemoteEnvStatus
5
5
 
6
6
  class AbCampaignCreateData(BaseModel):
7
7
  """@public"""
@@ -330,6 +330,27 @@ class GraderDataMetric(MetricData):
330
330
  """@public"""
331
331
  pass
332
332
 
333
+ class HarmonyGroupData(BaseModel):
334
+ """@public"""
335
+ id: Any
336
+ key: str
337
+ compute_pool: Optional['HarmonyGroupDataComputePool'] = Field(alias='computePool')
338
+ status: HarmonyStatus
339
+ url: str
340
+ world_size: int = Field(alias='worldSize')
341
+ gpu_types: str = Field(alias='gpuTypes')
342
+ created_at: int = Field(alias='createdAt')
343
+ online_models: List['HarmonyGroupDataOnlineModels'] = Field(alias='onlineModels')
344
+
345
+ class HarmonyGroupDataComputePool(BaseModel):
346
+ """@public"""
347
+ key: str
348
+ name: str
349
+
350
+ class HarmonyGroupDataOnlineModels(ModelData):
351
+ """@public"""
352
+ pass
353
+
333
354
  class JobData(BaseModel):
334
355
  """@public"""
335
356
  id: Any
@@ -472,30 +493,6 @@ class JudgeDataMetric(MetricData):
472
493
  """@public"""
473
494
  pass
474
495
 
475
- class ListCompletionsFilterOutputData(BaseModel):
476
- """@public"""
477
- use_case: str = Field(alias='useCase')
478
- models: Optional[List[str]]
479
- timerange: Optional['ListCompletionsFilterOutputDataTimerange']
480
- feedbacks: Optional[List['ListCompletionsFilterOutputDataFeedbacks']]
481
- labels: Optional[List['ListCompletionsFilterOutputDataLabels']]
482
- tags: Optional[List[str]]
483
- source: Optional[List[CompletionSourceOutput]]
484
-
485
- class ListCompletionsFilterOutputDataTimerange(BaseModel):
486
- """@public"""
487
- from_: Any = Field(alias='from')
488
- to: Any
489
-
490
- class ListCompletionsFilterOutputDataFeedbacks(BaseModel):
491
- """@public"""
492
- metric: str
493
-
494
- class ListCompletionsFilterOutputDataLabels(BaseModel):
495
- """@public"""
496
- key: str
497
- value: Optional[List[str]]
498
-
499
496
  class MetricDataAdmin(BaseModel):
500
497
  """@public"""
501
498
  id: Any
@@ -566,27 +563,6 @@ class ModelServiceDataModelBackbone(ModelData):
566
563
  """@public"""
567
564
  pass
568
565
 
569
- class PartitionData(BaseModel):
570
- """@public"""
571
- id: Any
572
- key: str
573
- compute_pool: Optional['PartitionDataComputePool'] = Field(alias='computePool')
574
- status: PartitionStatus
575
- url: str
576
- world_size: int = Field(alias='worldSize')
577
- gpu_types: str = Field(alias='gpuTypes')
578
- created_at: int = Field(alias='createdAt')
579
- online_models: List['PartitionDataOnlineModels'] = Field(alias='onlineModels')
580
-
581
- class PartitionDataComputePool(BaseModel):
582
- """@public"""
583
- key: str
584
- name: str
585
-
586
- class PartitionDataOnlineModels(ModelData):
587
- """@public"""
588
- pass
589
-
590
566
  class RemoteEnvData(BaseModel):
591
567
  """@public"""
592
568
  id: Any
@@ -677,15 +653,14 @@ CustomRecipeData.model_rebuild()
677
653
  DatasetData.model_rebuild()
678
654
  ModelData.model_rebuild()
679
655
  GraderData.model_rebuild()
656
+ HarmonyGroupData.model_rebuild()
680
657
  JobData.model_rebuild()
681
658
  JobStageOutputData.model_rebuild()
682
659
  JudgeData.model_rebuild()
683
- ListCompletionsFilterOutputData.model_rebuild()
684
660
  MetricDataAdmin.model_rebuild()
685
661
  MetricWithContextData.model_rebuild()
686
662
  ModelDataAdmin.model_rebuild()
687
663
  ModelServiceData.model_rebuild()
688
- PartitionData.model_rebuild()
689
664
  RemoteEnvData.model_rebuild()
690
665
  UseCaseData.model_rebuild()
691
666
  UserData.model_rebuild()
@@ -1,10 +1,11 @@
1
+ from typing import Optional
1
2
  from pydantic import Field
2
3
  from .base_model import BaseModel
3
4
  from .fragments import CustomRecipeData
4
5
 
5
6
  class GetCustomRecipe(BaseModel):
6
7
  """@public"""
7
- custom_recipe: 'GetCustomRecipeCustomRecipe' = Field(alias='customRecipe')
8
+ custom_recipe: Optional['GetCustomRecipeCustomRecipe'] = Field(alias='customRecipe')
8
9
 
9
10
  class GetCustomRecipeCustomRecipe(CustomRecipeData):
10
11
  """@public"""
@@ -1,7 +1,7 @@
1
1
  from typing import Any, List, Optional
2
2
  from pydantic import Field
3
3
  from .base_model import BaseModel
4
- from .enums import AbcampaignStatus, CompletionSource, DatasetSource, DateBucketUnit, ExternalModelProviderName, FeedbackType, GraderTypeEnum, JobArtifactKind, JobKind, JobStatus, MetricAggregation, MetricKind, MetricScoringType, ModelKindFilter, ModelOnline, OpenAIModel, PrebuiltCriteriaKey, Protocol, SortDirection, TimeseriesInterval, UnitPosition
4
+ from .enums import AbcampaignStatus, CompletionGroupBy, CompletionSource, DatasetKind, DatasetSource, DateBucketUnit, ExternalModelProviderName, FeedbackType, GraderTypeEnum, JobArtifactKind, JobKind, JobStatus, MetricAggregation, MetricKind, MetricScoringType, ModelKindFilter, ModelOnline, OpenAIModel, PrebuiltCriteriaKey, Protocol, SelectionTypeInput, SortDirection, TimeseriesInterval, UnitPosition
5
5
 
6
6
  class AbCampaignFilter(BaseModel):
7
7
  """@private"""
@@ -91,6 +91,15 @@ class CompletionLabelValue(BaseModel):
91
91
  key: str
92
92
  value: str
93
93
 
94
+ class CompletionsByFilters(BaseModel):
95
+ """@private"""
96
+ filters: 'ListCompletionsFilterInput'
97
+ exclude: List[Any]
98
+
99
+ class CompletionsById(BaseModel):
100
+ """@private"""
101
+ include: List[Any]
102
+
94
103
  class CreateRecipeInput(BaseModel):
95
104
  """@private"""
96
105
  name: str
@@ -120,6 +129,12 @@ class CustomRecipeFilterInput(BaseModel):
120
129
  """@private"""
121
130
  labels: Optional[List['LabelFilter']] = None
122
131
 
132
+ class DatasetCompletionQuery(BaseModel):
133
+ """@private"""
134
+ from_selection: Optional['CompletionsById'] = Field(alias='fromSelection', default=None)
135
+ from_filters: Optional['CompletionsByFilters'] = Field(alias='fromFilters', default=None)
136
+ from_groups: Optional['FromGroupsQuery'] = Field(alias='fromGroups', default=None)
137
+
123
138
  class DatasetCreate(BaseModel):
124
139
  """@private"""
125
140
  use_case: str = Field(alias='useCase')
@@ -127,18 +142,16 @@ class DatasetCreate(BaseModel):
127
142
  key: Optional[str] = None
128
143
  source: Optional[DatasetSource] = None
129
144
 
130
- class DatasetGenerate(BaseModel):
145
+ class DatasetCreateFromFilters(BaseModel):
131
146
  """@private"""
132
147
  use_case: str = Field(alias='useCase')
133
148
  name: str
134
149
  key: Optional[str] = None
135
- compute_pool: Optional[str] = Field(alias='computePool', default=None)
136
- config: 'DatasetGenerationConfig'
137
- num_gpus: int = Field(alias='numGpus', default=1)
138
-
139
- class DatasetGenerationConfig(BaseModel):
140
- """@private"""
141
- rag: Optional['RagdataGenerationConfig'] = None
150
+ completion_query: 'DatasetCompletionQuery' = Field(alias='completionQuery')
151
+ sample_config: Optional['SampleConfig'] = Field(alias='sampleConfig', default=None)
152
+ feedback_filters: Optional['FeedbackFilterInput'] = Field(alias='feedbackFilters', default=None)
153
+ kind: DatasetKind
154
+ metrics: Optional[List[str]] = None
142
155
 
143
156
  class EmojiInput(BaseModel):
144
157
  """@private"""
@@ -160,6 +173,18 @@ class FeedbackUpdateInput(BaseModel):
160
173
  value: Optional[Any] = None
161
174
  details: Optional[str] = None
162
175
 
176
+ class FromGroupsQuery(BaseModel):
177
+ """@private"""
178
+ filters: 'ListCompletionsFilterInput'
179
+ grouping: CompletionGroupBy
180
+ groups: List['GroupSelectionQuery']
181
+
182
+ class GlobalUsageFilterInput(BaseModel):
183
+ """@private"""
184
+ timerange: Optional['TimeRange'] = None
185
+ interval: DateBucketUnit
186
+ timezone: Optional[str] = None
187
+
163
188
  class GoogleProviderDataInput(BaseModel):
164
189
  """@private"""
165
190
  api_key: str = Field(alias='apiKey')
@@ -186,6 +211,16 @@ class GraderUpdateInput(BaseModel):
186
211
  grader_type: Optional[GraderTypeEnum] = Field(alias='graderType', default=None)
187
212
  grader_config: Optional['GraderConfigInput'] = Field(alias='graderConfig', default=None)
188
213
 
214
+ class GroupSelection(BaseModel):
215
+ """@private"""
216
+ exclude: Optional[List[Any]] = None
217
+ select_only: Optional[List[Any]] = Field(alias='selectOnly', default=None)
218
+
219
+ class GroupSelectionQuery(BaseModel):
220
+ """@private"""
221
+ group_id: str = Field(alias='groupId')
222
+ selection: 'GroupSelection'
223
+
189
224
  class JobArtifactFilter(BaseModel):
190
225
  """@private"""
191
226
  kinds: List[JobArtifactKind]
@@ -274,6 +309,7 @@ class MetricCreate(BaseModel):
274
309
  kind: MetricKind
275
310
  scoring_type: MetricScoringType = Field(alias='scoringType', default=MetricScoringType.HIGHER_IS_BETTER)
276
311
  description: Optional[str] = None
312
+ unit: Optional[str] = None
277
313
 
278
314
  class MetricGetOrCreate(BaseModel):
279
315
  """@private"""
@@ -360,12 +396,6 @@ class PrebuiltJudgeCreate(BaseModel):
360
396
  model: str
361
397
  prebuilt_criteria_key: PrebuiltCriteriaKey = Field(alias='prebuiltCriteriaKey')
362
398
 
363
- class RagdataGenerationConfig(BaseModel):
364
- """@private"""
365
- chunks_per_question: int = Field(alias='chunksPerQuestion')
366
- model: str
367
- system_prompt: Optional[str] = Field(alias='systemPrompt', default=None)
368
-
369
399
  class RemoteConfigInput(BaseModel):
370
400
  """@private"""
371
401
  url: str
@@ -377,12 +407,22 @@ class RemoteEnvCreate(BaseModel):
377
407
  name: Optional[str] = None
378
408
  description: Optional[str] = None
379
409
 
410
+ class ResizePartitionInput(BaseModel):
411
+ """@private"""
412
+ harmony_group: str = Field(alias='harmonyGroup')
413
+ size: int
414
+
380
415
  class RoleCreate(BaseModel):
381
416
  """@private"""
382
417
  key: Optional[str] = None
383
418
  name: str
384
419
  permissions: List[str]
385
420
 
421
+ class SampleConfig(BaseModel):
422
+ """@private"""
423
+ selection_type: SelectionTypeInput = Field(alias='selectionType')
424
+ sample_size: Optional[int] = Field(alias='sampleSize', default=None)
425
+
386
426
  class SystemPromptTemplateCreate(BaseModel):
387
427
  """@private"""
388
428
  name: str
@@ -464,13 +504,14 @@ class UpdateToolProviderInput(BaseModel):
464
504
  class UsageFilterInput(BaseModel):
465
505
  """@private"""
466
506
  model_id: Any = Field(alias='modelId')
467
- timerange: 'TimeRange'
507
+ timerange: Optional['TimeRange'] = None
468
508
  unit: DateBucketUnit
509
+ timezone: Optional[str] = None
469
510
 
470
511
  class UsagePerUseCaseFilterInput(BaseModel):
471
512
  """@private"""
472
513
  model_id: Any = Field(alias='modelId')
473
- timerange: 'TimeRange'
514
+ timerange: Optional['TimeRange'] = None
474
515
 
475
516
  class UseCaseCreate(BaseModel):
476
517
  """@private"""
@@ -532,14 +573,18 @@ class WidgetInput(BaseModel):
532
573
  unit: 'UnitConfigInput'
533
574
  AddExternalModelInput.model_rebuild()
534
575
  AttachModel.model_rebuild()
576
+ CompletionsByFilters.model_rebuild()
535
577
  CreateRecipeInput.model_rebuild()
536
578
  CustomRecipeFilterInput.model_rebuild()
537
- DatasetGenerate.model_rebuild()
538
- DatasetGenerationConfig.model_rebuild()
579
+ DatasetCompletionQuery.model_rebuild()
580
+ DatasetCreateFromFilters.model_rebuild()
539
581
  FeedbackFilterInput.model_rebuild()
582
+ FromGroupsQuery.model_rebuild()
583
+ GlobalUsageFilterInput.model_rebuild()
540
584
  GraderConfigInput.model_rebuild()
541
585
  GraderCreateInput.model_rebuild()
542
586
  GraderUpdateInput.model_rebuild()
587
+ GroupSelectionQuery.model_rebuild()
543
588
  JudgeConfigInput.model_rebuild()
544
589
  JudgeCreate.model_rebuild()
545
590
  JudgeExampleInput.model_rebuild()
@@ -2,7 +2,7 @@ from typing import Any, List
2
2
  from pydantic import Field
3
3
  from .base_model import BaseModel
4
4
  from .enums import ComputePoolCapability
5
- from .fragments import PartitionData
5
+ from .fragments import HarmonyGroupData
6
6
 
7
7
  class ListComputePools(BaseModel):
8
8
  """@public"""
@@ -15,9 +15,9 @@ class ListComputePoolsComputePools(BaseModel):
15
15
  name: str
16
16
  created_at: int = Field(alias='createdAt')
17
17
  capabilities: List[ComputePoolCapability]
18
- partitions: List['ListComputePoolsComputePoolsPartitions']
18
+ harmony_groups: List['ListComputePoolsComputePoolsHarmonyGroups'] = Field(alias='harmonyGroups')
19
19
 
20
- class ListComputePoolsComputePoolsPartitions(PartitionData):
20
+ class ListComputePoolsComputePoolsHarmonyGroups(HarmonyGroupData):
21
21
  """@public"""
22
22
  pass
23
23
  ListComputePools.model_rebuild()
@@ -0,0 +1,13 @@
1
+ from typing import List
2
+ from pydantic import Field
3
+ from .base_model import BaseModel
4
+ from .fragments import HarmonyGroupData
5
+
6
+ class ListHarmonyGroups(BaseModel):
7
+ """@public"""
8
+ harmony_groups: List['ListHarmonyGroupsHarmonyGroups'] = Field(alias='harmonyGroups')
9
+
10
+ class ListHarmonyGroupsHarmonyGroups(HarmonyGroupData):
11
+ """@public"""
12
+ pass
13
+ ListHarmonyGroups.model_rebuild()
@@ -26,6 +26,9 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
26
26
  SyncAPIResource.__init__(self, client)
27
27
  UseCaseResource.__init__(self, client)
28
28
 
29
+ def get(self, job_id: str) -> JobData | None:
30
+ return self._gql_client.describe_job(id=job_id).job
31
+
29
32
  def list(
30
33
  self,
31
34
  first: int | None = 100,
@@ -52,13 +55,11 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
52
55
  useCase=use_case,
53
56
  kind=[JobKind(k) for k in kind] if kind else None,
54
57
  )
55
- return self._gql_client.list_jobs(
56
- page=page, filter=validated_filter, order=[]
57
- ).jobs
58
+ return self._gql_client.list_jobs(page=page, filter=validated_filter, order=[]).jobs
58
59
 
59
- def create(
60
+ def run(
60
61
  self,
61
- recipe: str,
62
+ recipe_key: str,
62
63
  args: dict[str, Any],
63
64
  num_gpus: int,
64
65
  use_case: str | None = None,
@@ -66,7 +67,7 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
66
67
  ) -> JobData:
67
68
  return self._gql_client.create_job(
68
69
  input=JobInput(
69
- recipe=recipe,
70
+ recipe=recipe_key,
70
71
  args=args,
71
72
  useCase=self.use_case_key(use_case),
72
73
  computePool=compute_pool,
@@ -74,7 +75,7 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
74
75
  )
75
76
  ).create_job
76
77
 
77
- def cancel_custom(self, job_id: str) -> JobData:
78
+ def cancel(self, job_id: str) -> JobData:
78
79
  return self._gql_client.cancel_job(job_id=job_id).cancel_job
79
80
 
80
81
 
@@ -87,6 +88,9 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
87
88
  AsyncAPIResource.__init__(self, client)
88
89
  UseCaseResource.__init__(self, client)
89
90
 
91
+ async def get(self, job_id: str) -> JobData | None:
92
+ return (await self._gql_client.describe_job(id=job_id)).job
93
+
90
94
  async def list(
91
95
  self,
92
96
  first: int | None = 100,
@@ -112,13 +116,11 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
112
116
  useCase=self.use_case_key(use_case),
113
117
  kind=[JobKind[k] for k in kind] if kind else None,
114
118
  )
115
- return (
116
- await self._gql_client.list_jobs(page=page, filter=validated_filter)
117
- ).jobs
119
+ return (await self._gql_client.list_jobs(page=page, filter=validated_filter)).jobs
118
120
 
119
- async def create_custom(
121
+ async def run(
120
122
  self,
121
- recipe: str,
123
+ recipe_key: str,
122
124
  args: dict[str, Any],
123
125
  num_gpus: int,
124
126
  use_case: str | None = None,
@@ -127,7 +129,7 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
127
129
  return (
128
130
  await self._gql_client.create_job(
129
131
  input=JobInput(
130
- recipe=recipe,
132
+ recipe=recipe_key,
131
133
  args=args,
132
134
  useCase=self.use_case_key(use_case),
133
135
  computePool=compute_pool,
@@ -136,5 +138,5 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
136
138
  )
137
139
  ).create_job
138
140
 
139
- async def cancel_custom(self, job_id: str) -> JobData:
141
+ async def cancel(self, job_id: str) -> JobData:
140
142
  return (await self._gql_client.cancel_job(job_id=job_id)).cancel_job