@@ -80,27 +80,131 @@ public async Task<ModelResponse<TextEmbeddingOutput, TextEmbeddingTokenUsage>> G
8080 cancellationToken ) ) ! ;
8181 }
8282
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+
83174 private static HttpRequestMessage BuildSseRequest < TPayload > ( HttpMethod method , string url , TPayload payload )
175+ where TPayload : class
84176 {
85177 return BuildRequest ( method , url , payload , true ) ;
86178 }
87179
180+ private static HttpRequestMessage BuildRequest ( HttpMethod method , string url )
181+ {
182+ return BuildRequest ( method , url , ( string ? ) null ) ;
183+ }
184+
88185 private static HttpRequestMessage BuildRequest < TPayload > (
89186 HttpMethod method ,
90187 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
93192 {
94193 var message = new HttpRequestMessage ( method , url )
95194 {
96- Content = JsonContent . Create ( payload , options : SerializationOptions )
195+ Content = payload != null ? JsonContent . Create ( payload , options : SerializationOptions ) : null
97196 } ;
98197
99198 if ( sse )
100199 {
101200 message . Headers . Accept . Add ( new MediaTypeWithQualityHeaderValue ( "text/event-stream" ) ) ;
102201 }
103202
203+ if ( isTask )
204+ {
205+ message . Headers . Add ( "X-DashScope-Async" , "enable" ) ;
206+ }
207+
104208 return message ;
105209 }
106210
0 commit comments