@@ -80,27 +80,131 @@ public async Task<ModelResponse<TextEmbeddingOutput, TextEmbeddingTokenUsage>> G
80
80
cancellationToken ) ) ! ;
81
81
}
82
82
83
+ /// <inheritdoc />
84
+ public async
85
+ Task < ModelResponse < BatchGetEmbeddingsOutput , TextEmbeddingTokenUsage > > BatchGetEmbeddingsAsync (
86
+ ModelRequest < BatchGetEmbeddingsInput , BatchGetEmbeddingsParameters > input ,
87
+ CancellationToken cancellationToken = default )
88
+ {
89
+ var request = BuildRequest ( HttpMethod . Post , ApiLinks . TextEmbedding , input , isTask : true ) ;
90
+ return ( await SendAsync < ModelResponse < BatchGetEmbeddingsOutput , TextEmbeddingTokenUsage > > (
91
+ request ,
92
+ cancellationToken ) ) ! ;
93
+ }
94
+
95
+ /// <inheritdoc />
96
+ public async Task < DashScopeTask < TOutput , TUsage > > GetTaskAsync < TOutput , TUsage > (
97
+ string taskId ,
98
+ CancellationToken cancellationToken = default )
99
+ where TUsage : class
100
+ {
101
+ var request = BuildRequest ( HttpMethod . Get , $ "{ ApiLinks . Tasks } { taskId } ") ;
102
+ return ( await SendAsync < DashScopeTask < TOutput , TUsage > > ( request , cancellationToken ) ) ! ;
103
+ }
104
+
105
+ /// <inheritdoc />
106
+ public async Task < DashScopeTaskList > ListTasksAsync (
107
+ string ? taskId = null ,
108
+ DateTime ? startTime = null ,
109
+ DateTime ? endTime = null ,
110
+ string ? modelName = null ,
111
+ DashScopeTaskStatus ? status = null ,
112
+ int ? pageNo = null ,
113
+ int ? pageSize = null ,
114
+ CancellationToken cancellationToken = default )
115
+ {
116
+ var queryString = new StringBuilder ( ) ;
117
+ if ( string . IsNullOrEmpty ( taskId ) == false )
118
+ {
119
+ queryString . Append ( $ "task_id={ taskId } ") ;
120
+ }
121
+
122
+ if ( startTime . HasValue )
123
+ {
124
+ queryString . Append ( $ "start_time={ startTime : YYYYMMDDhhmmss} ") ;
125
+ }
126
+
127
+ if ( endTime . HasValue )
128
+ {
129
+ queryString . Append ( $ "end_time={ endTime : YYYYMMDDhhmmss} ") ;
130
+ }
131
+
132
+ if ( string . IsNullOrEmpty ( modelName ) == false )
133
+ {
134
+ queryString . Append ( $ "model_name={ modelName } ") ;
135
+ }
136
+
137
+ if ( status . HasValue )
138
+ {
139
+ queryString . Append ( $ "status={ status } ") ;
140
+ }
141
+
142
+ if ( pageNo . HasValue )
143
+ {
144
+ queryString . Append ( $ "page_no={ pageNo } ") ;
145
+ }
146
+
147
+ if ( pageSize . HasValue )
148
+ {
149
+ queryString . Append ( $ "page_size={ pageSize } ") ;
150
+ }
151
+
152
+ var request = BuildRequest ( HttpMethod . Get , $ "{ ApiLinks . Tasks } ?{ queryString } ") ;
153
+ return ( await SendAsync < DashScopeTaskList > ( request , cancellationToken ) ) ! ;
154
+ }
155
+
156
+ /// <inheritdoc />
157
+ public async Task < DashScopeTaskOperationResponse > CancelTaskAsync (
158
+ string taskId ,
159
+ CancellationToken cancellationToken = default )
160
+ {
161
+ var request = BuildRequest ( HttpMethod . Post , $ "{ ApiLinks . Tasks } { taskId } /cancel") ;
162
+ return ( await SendAsync < DashScopeTaskOperationResponse > ( request , cancellationToken ) ) ! ;
163
+ }
164
+
165
+ /// <inheritdoc />
166
+ public async Task < ModelResponse < TokenizationOutput , TokenizationUsage > > TokenizeAsync (
167
+ ModelRequest < TextGenerationInput , TextGenerationParameters > input ,
168
+ CancellationToken cancellationToken = default )
169
+ {
170
+ var request = BuildRequest ( HttpMethod . Post , ApiLinks . Tokenizer , input ) ;
171
+ return ( await SendAsync < ModelResponse < TokenizationOutput , TokenizationUsage > > ( request , cancellationToken ) ) ! ;
172
+ }
173
+
83
174
private static HttpRequestMessage BuildSseRequest < TPayload > ( HttpMethod method , string url , TPayload payload )
175
+ where TPayload : class
84
176
{
85
177
return BuildRequest ( method , url , payload , true ) ;
86
178
}
87
179
180
+ private static HttpRequestMessage BuildRequest ( HttpMethod method , string url )
181
+ {
182
+ return BuildRequest ( method , url , ( string ? ) null ) ;
183
+ }
184
+
88
185
private static HttpRequestMessage BuildRequest < TPayload > (
89
186
HttpMethod method ,
90
187
string url ,
91
- TPayload payload ,
92
- bool sse = false )
188
+ TPayload ? payload = null ,
189
+ bool sse = false ,
190
+ bool isTask = false )
191
+ where TPayload : class
93
192
{
94
193
var message = new HttpRequestMessage ( method , url )
95
194
{
96
- Content = JsonContent . Create ( payload , options : SerializationOptions )
195
+ Content = payload != null ? JsonContent . Create ( payload , options : SerializationOptions ) : null
97
196
} ;
98
197
99
198
if ( sse )
100
199
{
101
200
message . Headers . Accept . Add ( new MediaTypeWithQualityHeaderValue ( "text/event-stream" ) ) ;
102
201
}
103
202
203
+ if ( isTask )
204
+ {
205
+ message . Headers . Add ( "X-DashScope-Async" , "enable" ) ;
206
+ }
207
+
104
208
return message ;
105
209
}
106
210
0 commit comments