dashscope 1.15.0__py3-none-any.whl → 1.17.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.

Potentially problematic release.


This version of dashscope might be problematic. Click here for more details.

Files changed (56) hide show
  1. dashscope/__init__.py +57 -10
  2. dashscope/aigc/code_generation.py +12 -9
  3. dashscope/aigc/conversation.py +3 -0
  4. dashscope/aigc/generation.py +3 -0
  5. dashscope/aigc/image_synthesis.py +21 -6
  6. dashscope/aigc/multimodal_conversation.py +3 -0
  7. dashscope/api_entities/aiohttp_request.py +1 -0
  8. dashscope/api_entities/api_request_factory.py +28 -12
  9. dashscope/api_entities/dashscope_response.py +63 -0
  10. dashscope/api_entities/http_request.py +18 -9
  11. dashscope/api_entities/websocket_request.py +3 -0
  12. dashscope/app/application.py +16 -23
  13. dashscope/assistants/__init__.py +14 -0
  14. dashscope/assistants/assistant_types.py +164 -0
  15. dashscope/assistants/assistants.py +280 -0
  16. dashscope/assistants/files.py +189 -0
  17. dashscope/audio/asr/asr_phrase_manager.py +27 -5
  18. dashscope/audio/asr/recognition.py +10 -2
  19. dashscope/audio/asr/transcription.py +21 -3
  20. dashscope/audio/tts/speech_synthesizer.py +3 -0
  21. dashscope/cli.py +7 -7
  22. dashscope/client/base_api.py +303 -68
  23. dashscope/common/base_type.py +130 -0
  24. dashscope/common/constants.py +1 -0
  25. dashscope/common/error.py +4 -0
  26. dashscope/common/utils.py +22 -6
  27. dashscope/deployment.py +40 -6
  28. dashscope/embeddings/batch_text_embedding.py +24 -7
  29. dashscope/embeddings/multimodal_embedding.py +3 -0
  30. dashscope/embeddings/text_embedding.py +8 -1
  31. dashscope/files.py +107 -0
  32. dashscope/finetune.py +31 -7
  33. dashscope/model.py +9 -2
  34. dashscope/models.py +47 -0
  35. dashscope/nlp/understanding.py +2 -2
  36. dashscope/rerank/__init__.py +0 -0
  37. dashscope/rerank/text_rerank.py +67 -0
  38. dashscope/threads/__init__.py +24 -0
  39. dashscope/threads/messages/__init__.py +0 -0
  40. dashscope/threads/messages/files.py +111 -0
  41. dashscope/threads/messages/messages.py +218 -0
  42. dashscope/threads/runs/__init__.py +0 -0
  43. dashscope/threads/runs/runs.py +408 -0
  44. dashscope/threads/runs/steps.py +110 -0
  45. dashscope/threads/thread_types.py +571 -0
  46. dashscope/threads/threads.py +210 -0
  47. dashscope/tokenizers/tokenization.py +3 -0
  48. dashscope/utils/oss_utils.py +11 -0
  49. dashscope/version.py +1 -1
  50. {dashscope-1.15.0.dist-info → dashscope-1.17.0.dist-info}/METADATA +2 -3
  51. dashscope-1.17.0.dist-info/RECORD +84 -0
  52. dashscope-1.15.0.dist-info/RECORD +0 -66
  53. {dashscope-1.15.0.dist-info → dashscope-1.17.0.dist-info}/LICENSE +0 -0
  54. {dashscope-1.15.0.dist-info → dashscope-1.17.0.dist-info}/WHEEL +0 -0
  55. {dashscope-1.15.0.dist-info → dashscope-1.17.0.dist-info}/entry_points.txt +0 -0
  56. {dashscope-1.15.0.dist-info → dashscope-1.17.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,4 @@
1
1
  #!/usr/bin/env python3
2
- # -*-coding:utf-8 -*-
3
-
4
2
  """
5
3
  @File : application.py
6
4
  @Date : 2024-02-24
@@ -18,12 +16,10 @@ from dashscope.common.error import InputRequired, InvalidInput
18
16
 
19
17
  class Application(BaseApi):
20
18
  task_group = 'apps'
21
- function = "completion"
22
-
19
+ function = 'completion'
23
20
  """API for app completion calls.
24
21
 
25
22
  """
26
-
27
23
  class DocReferenceType:
28
24
  """ doc reference type for rag completion """
29
25
 
@@ -41,14 +37,15 @@ class Application(BaseApi):
41
37
 
42
38
  @classmethod
43
39
  def call(
44
- cls,
45
- app_id: str,
46
- prompt: str,
47
- history: list = None,
48
- workspace: str = None,
49
- api_key: str = None,
50
- **kwargs
51
- ) -> Union[ApplicationResponse, Generator[ApplicationResponse, None, None]]:
40
+ cls,
41
+ app_id: str,
42
+ prompt: str,
43
+ history: list = None,
44
+ workspace: str = None,
45
+ api_key: str = None,
46
+ **kwargs
47
+ ) -> Union[ApplicationResponse, Generator[ApplicationResponse, None,
48
+ None]]:
52
49
  """Call app completion service.
53
50
 
54
51
  Args:
@@ -115,17 +112,14 @@ class Application(BaseApi):
115
112
  if prompt is None or not prompt:
116
113
  raise InputRequired('prompt is required!')
117
114
 
118
- if workspace is not None and workspace:
119
- headers = kwargs.pop('headers', {})
120
- headers['X-DashScope-WorkSpace'] = workspace
121
- kwargs['headers'] = headers
122
-
123
- input, parameters = cls._build_input_parameters(prompt, history, **kwargs)
115
+ input, parameters = cls._build_input_parameters(
116
+ prompt, history, **kwargs)
124
117
  request = _build_api_request(model='',
125
118
  input=input,
126
119
  task_group=Application.task_group,
127
120
  task=app_id,
128
121
  function=Application.function,
122
+ workspace=workspace,
129
123
  api_key=api_key,
130
124
  is_service=False,
131
125
  **parameters)
@@ -143,9 +137,7 @@ class Application(BaseApi):
143
137
  def _build_input_parameters(cls, prompt, history, **kwargs):
144
138
  parameters = {}
145
139
 
146
- input_param = {HISTORY: history,
147
- PROMPT: prompt
148
- }
140
+ input_param = {HISTORY: history, PROMPT: prompt}
149
141
 
150
142
  session_id = kwargs.pop('session_id', None)
151
143
  if session_id is not None and session_id:
@@ -157,7 +149,8 @@ class Application(BaseApi):
157
149
 
158
150
  doc_tag_codes = kwargs.pop('doc_tag_codes', None)
159
151
  if doc_tag_codes is not None:
160
- if isinstance(doc_tag_codes, list) and all(isinstance(item, str) for item in doc_tag_codes):
152
+ if isinstance(doc_tag_codes, list) and all(
153
+ isinstance(item, str) for item in doc_tag_codes):
161
154
  input_param['doc_tag_codes'] = doc_tag_codes
162
155
  else:
163
156
  raise InvalidInput('doc_tag_codes is not a List[str]')
@@ -0,0 +1,14 @@
1
+ # yapf: disable
2
+
3
+ from dashscope.assistants.assistant_types import (Assistant, AssistantFile,
4
+ AssistantList,
5
+ DeleteResponse)
6
+ from dashscope.assistants.assistants import Assistants
7
+
8
+ __all__ = [
9
+ Assistant,
10
+ Assistants,
11
+ AssistantList,
12
+ AssistantFile,
13
+ DeleteResponse,
14
+ ]
@@ -0,0 +1,164 @@
1
+ # adapter from openai sdk
2
+ from dataclasses import dataclass
3
+ from typing import Dict, List, Optional, Union
4
+
5
+ from dashscope.common.base_type import BaseList, BaseObjectMixin
6
+
7
+ __all__ = [
8
+ 'Assistant', 'AssistantFile', 'ToolCodeInterpreter', 'ToolSearch',
9
+ 'ToolWanX', 'FunctionDefinition', 'ToolFunction', 'AssistantFileList',
10
+ 'AssistantList', 'DeleteResponse'
11
+ ]
12
+
13
+
14
+ @dataclass(init=False)
15
+ class AssistantFile(BaseObjectMixin):
16
+ id: str
17
+ assistant_id: str
18
+ created_at: int
19
+ object: str
20
+
21
+ def __init__(self, **kwargs):
22
+ super().__init__(**kwargs)
23
+
24
+
25
+ @dataclass(init=False)
26
+ class ToolCodeInterpreter(BaseObjectMixin):
27
+ type: str = 'code_interpreter'
28
+
29
+ def __init__(self, **kwargs):
30
+ super().__init__(**kwargs)
31
+
32
+
33
+ @dataclass(init=False)
34
+ class ToolSearch(BaseObjectMixin):
35
+ type: str = 'search'
36
+
37
+ def __init__(self, **kwargs):
38
+ super().__init__(**kwargs)
39
+
40
+
41
+ @dataclass(init=False)
42
+ class ToolWanX(BaseObjectMixin):
43
+ type: str = 'wanx'
44
+
45
+ def __init__(self, **kwargs):
46
+ super().__init__(**kwargs)
47
+
48
+
49
+ @dataclass(init=False)
50
+ class FunctionDefinition(BaseObjectMixin):
51
+ name: str
52
+ description: Optional[str] = None
53
+ parameters: Optional[Dict[str, object]] = None
54
+
55
+ def __init__(self, **kwargs):
56
+ super().__init__(**kwargs)
57
+
58
+
59
+ @dataclass(init=False)
60
+ class ToolFunction(BaseObjectMixin):
61
+ function: FunctionDefinition
62
+ type: str = 'function'
63
+
64
+ def __init__(self, **kwargs):
65
+ self.function = FunctionDefinition(**kwargs.pop('function', {}))
66
+ super().__init__(**kwargs)
67
+
68
+
69
+ Tool = Union[ToolCodeInterpreter, ToolSearch, ToolFunction, ToolWanX]
70
+ ASSISTANT_SUPPORT_TOOL = {
71
+ 'code_interpreter': ToolCodeInterpreter,
72
+ 'search': ToolSearch,
73
+ 'wanx': ToolWanX,
74
+ 'function': ToolFunction
75
+ }
76
+
77
+
78
+ def convert_tools_dict_to_objects(tools):
79
+ tools_object = []
80
+ for tool in tools:
81
+ if 'type' in tool:
82
+ tool_type = ASSISTANT_SUPPORT_TOOL.get(tool['type'], None)
83
+ if tool_type:
84
+ tools_object.append(tool_type(**tool))
85
+ else:
86
+ tools_object.append(tool)
87
+ else:
88
+ tools_object.append(tool)
89
+ return tools_object
90
+
91
+
92
+ @dataclass(init=False)
93
+ class Assistant(BaseObjectMixin):
94
+ status_code: int
95
+ """The call response status_code, 200 indicate create success.
96
+ """
97
+ code: str
98
+ """The request failed, this is the error code.
99
+ """
100
+ message: str
101
+ """The request failed, this is the error message.
102
+ """
103
+ id: str
104
+ """ID of the assistant.
105
+ """
106
+ model: str
107
+ name: Optional[str] = None
108
+ created_at: int
109
+ """The Unix timestamp (in seconds) for when the assistant was created.
110
+ """
111
+ description: Optional[str] = None
112
+
113
+ file_ids: List[str]
114
+
115
+ instructions: Optional[str] = None
116
+ metadata: Optional[object] = None
117
+ tools: List[Tool]
118
+
119
+ def __init__(self, **kwargs):
120
+ self.tools = convert_tools_dict_to_objects(kwargs.pop('tools', []))
121
+ super().__init__(**kwargs)
122
+
123
+
124
+ @dataclass(init=False)
125
+ class AssistantList(BaseList):
126
+ data: List[Assistant]
127
+
128
+ def __init__(self,
129
+ has_more: bool = None,
130
+ last_id: Optional[str] = None,
131
+ first_id: Optional[str] = None,
132
+ data: List[Assistant] = [],
133
+ **kwargs):
134
+ super().__init__(has_more=has_more,
135
+ last_id=last_id,
136
+ first_id=first_id,
137
+ data=data,
138
+ **kwargs)
139
+
140
+
141
+ @dataclass(init=False)
142
+ class AssistantFileList(BaseList):
143
+ data: List[AssistantFile]
144
+
145
+ def __init__(self,
146
+ has_more: bool = None,
147
+ last_id: Optional[str] = None,
148
+ first_id: Optional[str] = None,
149
+ data: List[AssistantFile] = [],
150
+ **kwargs):
151
+ super().__init__(has_more=has_more,
152
+ last_id=last_id,
153
+ first_id=first_id,
154
+ data=data,
155
+ **kwargs)
156
+
157
+
158
+ @dataclass(init=False)
159
+ class DeleteResponse(BaseObjectMixin):
160
+ id: str
161
+ deleted: bool
162
+
163
+ def __init__(self, **kwargs):
164
+ super().__init__(**kwargs)
@@ -0,0 +1,280 @@
1
+ from typing import Dict, List, Optional
2
+
3
+ from dashscope.assistants.assistant_types import (Assistant, AssistantList,
4
+ DeleteResponse)
5
+ from dashscope.client.base_api import (CancelMixin, CreateMixin, DeleteMixin,
6
+ GetStatusMixin, ListObjectMixin,
7
+ UpdateMixin)
8
+ from dashscope.common.error import ModelRequired
9
+
10
+ __all__ = ['Assistants']
11
+
12
+
13
+ class Assistants(CreateMixin, CancelMixin, DeleteMixin, ListObjectMixin,
14
+ GetStatusMixin, UpdateMixin):
15
+ SUB_PATH = 'assistants'
16
+
17
+ @classmethod
18
+ def _create_assistant_object(
19
+ cls,
20
+ model: str = None,
21
+ name: str = None,
22
+ description: str = None,
23
+ instructions: str = None,
24
+ tools: Optional[str] = [],
25
+ file_ids: Optional[str] = [],
26
+ metadata: Dict = {},
27
+ ):
28
+ obj = {}
29
+ if model:
30
+ obj['model'] = model
31
+ if name:
32
+ obj['name'] = name
33
+ if description:
34
+ obj['description'] = description
35
+ if instructions:
36
+ obj['instructions'] = instructions
37
+ if tools:
38
+ obj['tools'] = tools
39
+ obj['file_ids'] = file_ids
40
+ obj['metadata'] = metadata
41
+
42
+ return obj
43
+
44
+ @classmethod
45
+ def call(cls,
46
+ *,
47
+ model: str,
48
+ name: str = None,
49
+ description: str = None,
50
+ instructions: str = None,
51
+ tools: Optional[List[Dict]] = [],
52
+ file_ids: Optional[List[str]] = [],
53
+ metadata: Dict = None,
54
+ workspace: str = None,
55
+ api_key: str = None,
56
+ **kwargs) -> Assistant:
57
+ """Create Assistant.
58
+
59
+ Args:
60
+ model (str): The model to use.
61
+ name (str, optional): The assistant name. Defaults to None.
62
+ description (str, optional): The assistant description. Defaults to None.
63
+ instructions (str, optional): The system instructions this assistant uses. Defaults to None.
64
+ tools (Optional[List[Dict]], optional): List of tools to use. Defaults to [].
65
+ file_ids (Optional[List[str]], optional): : The files to use. Defaults to [].
66
+ metadata (Dict, optional): Custom key-value pairs associate with assistant. Defaults to None.
67
+ workspace (str, optional): The DashScope workspace id. Defaults to None.
68
+ api_key (str, optional): The DashScope api key. Defaults to None.
69
+
70
+ Raises:
71
+ ModelRequired: The model is required.
72
+
73
+ Returns:
74
+ Assistant: The `Assistant` object.
75
+ """
76
+ return cls.create(model=model,
77
+ name=name,
78
+ description=description,
79
+ instructions=instructions,
80
+ tools=tools,
81
+ file_ids=file_ids,
82
+ metadata=metadata,
83
+ workspace=workspace,
84
+ api_key=api_key,
85
+ **kwargs)
86
+
87
+ @classmethod
88
+ def create(cls,
89
+ *,
90
+ model: str,
91
+ name: str = None,
92
+ description: str = None,
93
+ instructions: str = None,
94
+ tools: Optional[List[Dict]] = [],
95
+ file_ids: Optional[List[str]] = [],
96
+ metadata: Dict = None,
97
+ workspace: str = None,
98
+ api_key: str = None,
99
+ **kwargs) -> Assistant:
100
+ """Create Assistant.
101
+
102
+ Args:
103
+ model (str): The model to use.
104
+ name (str, optional): The assistant name. Defaults to None.
105
+ description (str, optional): The assistant description. Defaults to None.
106
+ instructions (str, optional): The system instructions this assistant uses. Defaults to None.
107
+ tools (Optional[List[Dict]], optional): List of tools to use. Defaults to [].
108
+ file_ids (Optional[List[str]], optional): : The files to use. Defaults to [].
109
+ metadata (Dict, optional): Custom key-value pairs associate with assistant. Defaults to None.
110
+ workspace (str, optional): The DashScope workspace id. Defaults to None.
111
+ api_key (str, optional): The DashScope api key. Defaults to None.
112
+
113
+ Raises:
114
+ ModelRequired: The model is required.
115
+
116
+ Returns:
117
+ Assistant: The `Assistant` object.
118
+ """
119
+ if not model:
120
+ raise ModelRequired('Model is required!')
121
+ data = cls._create_assistant_object(model, name, description,
122
+ instructions, tools, file_ids,
123
+ metadata)
124
+ response = super().call(data=data,
125
+ api_key=api_key,
126
+ flattened_output=True,
127
+ workspace=workspace,
128
+ **kwargs)
129
+ return Assistant(**response)
130
+
131
+ @classmethod
132
+ def retrieve(cls,
133
+ assistant_id: str,
134
+ *,
135
+ workspace: str = None,
136
+ api_key: str = None,
137
+ **kwargs) -> Assistant:
138
+ """Get the `Assistant`.
139
+
140
+ Args:
141
+ assistant_id (str): The assistant id.
142
+ workspace (str): The dashscope workspace id.
143
+ api_key (str, optional): The api key. Defaults to None.
144
+
145
+ Returns:
146
+ Assistant: The `Assistant` object.
147
+ """
148
+ return cls.get(assistant_id,
149
+ workspace=workspace,
150
+ api_key=api_key,
151
+ **kwargs)
152
+
153
+ @classmethod
154
+ def get(cls,
155
+ assistant_id: str,
156
+ *,
157
+ workspace: str = None,
158
+ api_key: str = None,
159
+ **kwargs) -> Assistant:
160
+ """Get the `Assistant`.
161
+
162
+ Args:
163
+ assistant_id (str): The assistant id.
164
+ workspace (str): The dashscope workspace id.
165
+ api_key (str, optional): The api key. Defaults to None.
166
+
167
+ Returns:
168
+ Assistant: The `Assistant` object.
169
+ """
170
+ if not assistant_id:
171
+ raise ModelRequired('assistant_id is required!')
172
+ response = super().get(assistant_id,
173
+ workspace=workspace,
174
+ api_key=api_key,
175
+ flattened_output=True,
176
+ **kwargs)
177
+ return Assistant(**response)
178
+
179
+ @classmethod
180
+ def list(cls,
181
+ *,
182
+ limit: int = None,
183
+ order: str = None,
184
+ after: str = None,
185
+ before: str = None,
186
+ workspace: str = None,
187
+ api_key: str = None,
188
+ **kwargs) -> AssistantList:
189
+ """List assistants
190
+
191
+ Args:
192
+ limit (int, optional): How many assistant to retrieve. Defaults to None.
193
+ order (str, optional): Sort order by created_at. Defaults to None.
194
+ after (str, optional): Assistant id after. Defaults to None.
195
+ before (str, optional): Assistant id before. Defaults to None.
196
+ workspace (str, optional): The DashScope workspace id. Defaults to None.
197
+ api_key (str, optional): Your DashScope api key. Defaults to None.
198
+
199
+ Returns:
200
+ AssistantList: The list of assistants.
201
+ """
202
+ response = super().list(limit=limit,
203
+ order=order,
204
+ after=after,
205
+ before=before,
206
+ workspace=workspace,
207
+ api_key=api_key,
208
+ flattened_output=True,
209
+ **kwargs)
210
+ return AssistantList(**response)
211
+
212
+ @classmethod
213
+ def update(cls,
214
+ assistant_id: str,
215
+ *,
216
+ model: str = None,
217
+ name: str = None,
218
+ description: str = None,
219
+ instructions: str = None,
220
+ tools: Optional[str] = [],
221
+ file_ids: Optional[str] = [],
222
+ metadata: Dict = None,
223
+ workspace: str = None,
224
+ api_key: str = None,
225
+ **kwargs) -> Assistant:
226
+ """Update an exist assistants
227
+
228
+ Args:
229
+ assistant_id (str): The target assistant id.
230
+ model (str): The model to use.
231
+ name (str, optional): The assistant name. Defaults to None.
232
+ description (str, optional): The assistant description . Defaults to None.
233
+ instructions (str, optional): The system instructions this assistant uses.. Defaults to None.
234
+ tools (Optional[str], optional): List of tools to use.. Defaults to [].
235
+ file_ids (Optional[str], optional): The files to use in assistants.. Defaults to [].
236
+ metadata (Dict, optional): Custom key-value pairs associate with assistant. Defaults to None.
237
+ workspace (str): The DashScope workspace id.
238
+ api_key (str, optional): The DashScope workspace id. Defaults to None.
239
+
240
+ Returns:
241
+ Assistant: The updated assistant.
242
+ """
243
+ if not assistant_id:
244
+ raise ModelRequired('assistant_id is required!')
245
+ response = super().update(assistant_id,
246
+ cls._create_assistant_object(
247
+ model, name, description, instructions,
248
+ tools, file_ids, metadata),
249
+ api_key=api_key,
250
+ workspace=workspace,
251
+ flattened_output=True,
252
+ method='post',
253
+ **kwargs)
254
+ return Assistant(**response)
255
+
256
+ @classmethod
257
+ def delete(cls,
258
+ assistant_id: str,
259
+ *,
260
+ workspace: str = None,
261
+ api_key: str = None,
262
+ **kwargs) -> DeleteResponse:
263
+ """Delete uploaded file.
264
+
265
+ Args:
266
+ assistant_id (str): The assistant id want to delete.
267
+ workspace (str): The DashScope workspace id.
268
+ api_key (str, optional): The api key. Defaults to None.
269
+
270
+ Returns:
271
+ AssistantsDeleteResponse: Delete result.
272
+ """
273
+ if not assistant_id:
274
+ raise ModelRequired('assistant_id is required!')
275
+ response = super().delete(assistant_id,
276
+ api_key=api_key,
277
+ workspace=workspace,
278
+ flattened_output=True,
279
+ **kwargs)
280
+ return DeleteResponse(**response)