Skip to content

Commit 4611898

Browse files
feat: add async tasks
1 parent b51fdda commit 4611898

File tree

9 files changed

+208
-12
lines changed

9 files changed

+208
-12
lines changed

volcenginesdkarkruntime/_base_client.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,44 @@ async def post(
719719

720720
return await self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)
721721

722+
async def get(
723+
self,
724+
path: str,
725+
*,
726+
cast_to: Type[ResponseT],
727+
params: list[tuple[str, str]] | None = None,
728+
options: ExtraRequestOptions = {},
729+
stream: bool = False,
730+
stream_cls: type[_AsyncStreamT] | None = None,
731+
) -> ResponseT | _AsyncStreamT:
732+
opts = RequestOptions.construct(
733+
method="get",
734+
url=path,
735+
params=params,
736+
**options,
737+
)
738+
739+
return await self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)
740+
741+
async def delete(
742+
self,
743+
path: str,
744+
*,
745+
cast_to: Type[ResponseT],
746+
params: list[tuple[str, str]] | None = None,
747+
options: ExtraRequestOptions = {},
748+
) -> ResponseT:
749+
opts = RequestOptions.construct(
750+
method="delete",
751+
url=path,
752+
params=params,
753+
**options,
754+
)
755+
756+
return await self.request(cast_to, opts)
757+
758+
return await self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)
759+
722760
async def request(
723761
self,
724762
cast_to: Type[ResponseT],

volcenginesdkarkruntime/_client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ class AsyncArk(AsyncAPIClient):
135135
embeddings: resources.AsyncEmbeddings
136136
tokenization: resources.AsyncTokenization
137137
context: resources.AsyncContext
138+
content_generation: resources.AsyncContentGeneration
138139

139140
def __init__(
140141
self,
@@ -192,6 +193,7 @@ def __init__(
192193
self.embeddings = resources.AsyncEmbeddings(self)
193194
self.tokenization = resources.AsyncTokenization(self)
194195
self.context = resources.AsyncContext(self)
196+
self.content_generation = resources.AsyncContentGeneration(self)
195197
# self.classification = resources.AsyncClassification(self)
196198

197199
def _get_endpoint_sts_token(self, endpoint_id: str):

volcenginesdkarkruntime/_resource.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,5 @@ class AsyncAPIResource:
2020
def __init__(self, client: "AsyncArk") -> None:
2121
self._client = client
2222
self._post = client.post
23+
self._get = client.get
24+
self._delete = client.delete

volcenginesdkarkruntime/_utils/_utils.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ def wrapper(*args, **kwargs):
9797

9898
return wrapper
9999

100+
def async_disallow_aksk(func):
101+
async def wrapper(*args, **kwargs):
102+
_restrict_aksk(args, kwargs)
103+
return await func(*args, **kwargs)
104+
105+
return wrapper
106+
100107
def _restrict_aksk(args, kwargs):
101108
assert len(args) > 0
102109

volcenginesdkarkruntime/resources/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from .classification import Classification, AsyncClassification
55
from .bot import BotChat, AsyncBotChat
66
from .context import Context, AsyncContext
7-
from .content_generation import ContentGeneration
7+
from .content_generation import ContentGeneration, AsyncContentGeneration
88

99
__all__ = [
1010
"Chat",
@@ -17,5 +17,6 @@
1717
"AsyncTokenization",
1818
"Context",
1919
"AsyncContext",
20-
"ContentGeneration"
20+
"ContentGeneration",
21+
"AsyncContentGeneration"
2122
]
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
from volcenginesdkarkruntime.resources.content_generation.content_generation import ContentGeneration
1+
from volcenginesdkarkruntime.resources.content_generation.content_generation import ContentGeneration, \
2+
AsyncContentGeneration
23

3-
__all__ = ["ContentGeneration"]
4+
__all__ = ["ContentGeneration", "AsyncContentGeneration"]
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
from __future__ import annotations
22

3-
from ..._resource import SyncAPIResource
3+
from ..._resource import SyncAPIResource, AsyncAPIResource
44
from ..._compat import cached_property
55

6-
from .tasks import Tasks
7-
8-
__all__ = ["ContentGeneration"]
6+
from .tasks import Tasks, AsyncTasks
97

108

119
class ContentGeneration(SyncAPIResource):
1210
@cached_property
1311
def tasks(self) -> Tasks:
14-
return Tasks(self._client)
12+
return Tasks(self._client)
13+
14+
class AsyncContentGeneration(AsyncAPIResource):
15+
@cached_property
16+
def tasks(self) -> AsyncTasks:
17+
return AsyncTasks(self._client)

volcenginesdkarkruntime/resources/content_generation/tasks.py

Lines changed: 144 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
from __future__ import annotations
22

3+
from functools import cached_property
34
from typing import Iterable, Union, List
45
import httpx
56

7+
from ..._response import to_raw_response_wrapper, async_to_raw_response_wrapper
68
from ..._types import Body, Query, Headers
7-
from ..._utils._utils import disallow_aksk
9+
from ..._utils._utils import disallow_aksk, async_disallow_aksk
810
from ...types.content_generation.content_generation_task import ContentGenerationTask
911
from ...types.content_generation.content_generation_task_id import ContentGenerationTaskID
1012
from volcenginesdkarkruntime._base_client import make_request_options
11-
from volcenginesdkarkruntime._resource import SyncAPIResource
13+
from volcenginesdkarkruntime._resource import SyncAPIResource, AsyncAPIResource
1214
from volcenginesdkarkruntime.types.content_generation.create_task_content_param import CreateTaskContentParam
1315
from ...types.content_generation.list_content_generation_tasks_response import ListContentGenerationTasksResponse
1416

1517

1618
class Tasks(SyncAPIResource):
19+
@cached_property
20+
def with_raw_response(self) -> TasksWithRawResponse:
21+
return TasksWithRawResponse(self)
1722

1823
@disallow_aksk
1924
def create(
@@ -126,3 +131,140 @@ def delete(
126131
cast_to=ContentGenerationTask,
127132
)
128133
return resp
134+
135+
136+
class AsyncTasks(AsyncAPIResource):
137+
@cached_property
138+
def with_raw_response(self) -> AsyncTasksWithRawResponse:
139+
return AsyncTasksWithRawResponse(self)
140+
141+
142+
@async_disallow_aksk
143+
async def create(
144+
self,
145+
*,
146+
model: str,
147+
content: Iterable[CreateTaskContentParam],
148+
extra_headers: Headers | None = None,
149+
extra_query: Query | None = None,
150+
extra_body: Body | None = None,
151+
timeout: float | httpx.Timeout | None = None,
152+
) -> ContentGenerationTaskID:
153+
resp = await self._post(
154+
"/contents/generations/tasks",
155+
body={
156+
"model": model,
157+
"content": content,
158+
},
159+
options=make_request_options(
160+
extra_headers=extra_headers,
161+
extra_query=extra_query,
162+
extra_body=extra_body,
163+
timeout=timeout,
164+
),
165+
cast_to=ContentGenerationTaskID,
166+
)
167+
return resp
168+
169+
170+
@async_disallow_aksk
171+
async def get(
172+
self,
173+
*,
174+
task_id: str,
175+
extra_headers: Headers | None = None,
176+
extra_query: Query | None = None,
177+
extra_body: Body | None = None,
178+
timeout: float | httpx.Timeout | None = None,
179+
) -> ContentGenerationTask:
180+
resp = await self._get(
181+
path=f"/contents/generations/tasks/{task_id}",
182+
options=make_request_options(
183+
extra_headers=extra_headers,
184+
extra_query=extra_query,
185+
extra_body=extra_body,
186+
timeout=timeout,
187+
),
188+
cast_to=ContentGenerationTask,
189+
)
190+
return resp
191+
192+
@async_disallow_aksk
193+
async def list(
194+
self,
195+
page_num: int | None = None,
196+
page_size: int | None = None,
197+
status: str | None = None,
198+
task_ids : Union[List[str], str] | None = None,
199+
model: str | None = None,
200+
extra_headers: Headers | None = None,
201+
extra_body: Body | None = None,
202+
extra_query: Query | None = None,
203+
timeout: float | httpx.Timeout | None = None,
204+
) -> ListContentGenerationTasksResponse:
205+
206+
query_params = []
207+
if page_num:
208+
query_params.append(("page_num", page_num))
209+
if page_size:
210+
query_params.append(("page_size", page_size))
211+
if status:
212+
query_params.append(("filter.status", status))
213+
if model:
214+
query_params.append(("filter.model", model))
215+
if task_ids:
216+
if isinstance(task_ids, str):
217+
task_ids = [task_ids]
218+
for task_id in task_ids:
219+
query_params.append(("filter.task_ids", task_id))
220+
221+
resp = await self._get(
222+
path="/contents/generations/tasks",
223+
params=query_params,
224+
options=make_request_options(
225+
extra_headers=extra_headers,
226+
extra_query=extra_query,
227+
extra_body=extra_body,
228+
timeout=timeout,
229+
),
230+
cast_to=ListContentGenerationTasksResponse,
231+
)
232+
return resp
233+
234+
@async_disallow_aksk
235+
async def delete(
236+
self,
237+
task_id: str,
238+
extra_headers: Headers | None = None,
239+
extra_query: Query | None = None,
240+
extra_body: Body | None = None,
241+
timeout: float | httpx.Timeout | None = None,
242+
) -> None:
243+
resp = await self._delete(
244+
path=f"/contents/generations/tasks/{task_id}",
245+
options=make_request_options(
246+
extra_headers=extra_headers,
247+
extra_query=extra_query,
248+
extra_body=extra_body,
249+
timeout=timeout,
250+
),
251+
cast_to=ContentGenerationTask,
252+
)
253+
return resp
254+
255+
256+
class TasksWithRawResponse:
257+
def __init__(self, tasks: Tasks) -> None:
258+
self._tasks = tasks
259+
260+
self.create = to_raw_response_wrapper(
261+
tasks.create,
262+
)
263+
264+
class AsyncTasksWithRawResponse:
265+
def __init__(self, tasks: AsyncTasks) -> None:
266+
self._tasks = tasks
267+
268+
self.create = async_to_raw_response_wrapper(
269+
tasks.create,
270+
)

volcenginesdkarkruntime/types/content_generation/create_task_content_param.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22
from typing import Union
3-
from typing_extensions import Literal, Required, TypedDict
3+
from typing_extensions import Literal, TypedDict
44

55
__all__ = [
66
"CreateTaskContentTextParam",

0 commit comments

Comments
 (0)