@@ -202,3 +202,193 @@ When asked a question, write and run Python code to answer the question.`
202
202
err = client .DeleteAssistantFile (ctx , assistantID , assistantFileID )
203
203
checks .NoError (t , err , "DeleteAssistantFile error" )
204
204
}
205
+
206
+ func TestAzureAssistant (t * testing.T ) {
207
+ assistantID := "asst_abc123"
208
+ assistantName := "Ambrogio"
209
+ assistantDescription := "Ambrogio is a friendly assistant."
210
+ assistantInstructions := `You are a personal math tutor.
211
+ When asked a question, write and run Python code to answer the question.`
212
+ assistantFileID := "file-wB6RM6wHdA49HfS2DJ9fEyrH"
213
+ limit := 20
214
+ order := "desc"
215
+ after := "asst_abc122"
216
+ before := "asst_abc124"
217
+
218
+ client , server , teardown := setupAzureTestServer ()
219
+ defer teardown ()
220
+
221
+ server .RegisterHandler (
222
+ "/openai/assistants/" + assistantID + "/files/" + assistantFileID ,
223
+ func (w http.ResponseWriter , r * http.Request ) {
224
+ if r .Method == http .MethodGet {
225
+ resBytes , _ := json .Marshal (openai.AssistantFile {
226
+ ID : assistantFileID ,
227
+ Object : "assistant.file" ,
228
+ CreatedAt : 1234567890 ,
229
+ AssistantID : assistantID ,
230
+ })
231
+ fmt .Fprintln (w , string (resBytes ))
232
+ } else if r .Method == http .MethodDelete {
233
+ fmt .Fprintln (w , `{
234
+ id: "file-wB6RM6wHdA49HfS2DJ9fEyrH",
235
+ object: "assistant.file.deleted",
236
+ deleted: true
237
+ }` )
238
+ }
239
+ },
240
+ )
241
+
242
+ server .RegisterHandler (
243
+ "/openai/assistants/" + assistantID + "/files" ,
244
+ func (w http.ResponseWriter , r * http.Request ) {
245
+ if r .Method == http .MethodGet {
246
+ resBytes , _ := json .Marshal (openai.AssistantFilesList {
247
+ AssistantFiles : []openai.AssistantFile {
248
+ {
249
+ ID : assistantFileID ,
250
+ Object : "assistant.file" ,
251
+ CreatedAt : 1234567890 ,
252
+ AssistantID : assistantID ,
253
+ },
254
+ },
255
+ })
256
+ fmt .Fprintln (w , string (resBytes ))
257
+ } else if r .Method == http .MethodPost {
258
+ var request openai.AssistantFileRequest
259
+ err := json .NewDecoder (r .Body ).Decode (& request )
260
+ checks .NoError (t , err , "Decode error" )
261
+
262
+ resBytes , _ := json .Marshal (openai.AssistantFile {
263
+ ID : request .FileID ,
264
+ Object : "assistant.file" ,
265
+ CreatedAt : 1234567890 ,
266
+ AssistantID : assistantID ,
267
+ })
268
+ fmt .Fprintln (w , string (resBytes ))
269
+ }
270
+ },
271
+ )
272
+
273
+ server .RegisterHandler (
274
+ "/openai/assistants/" + assistantID ,
275
+ func (w http.ResponseWriter , r * http.Request ) {
276
+ switch r .Method {
277
+ case http .MethodGet :
278
+ resBytes , _ := json .Marshal (openai.Assistant {
279
+ ID : assistantID ,
280
+ Object : "assistant" ,
281
+ CreatedAt : 1234567890 ,
282
+ Name : & assistantName ,
283
+ Model : openai .GPT4TurboPreview ,
284
+ Description : & assistantDescription ,
285
+ Instructions : & assistantInstructions ,
286
+ })
287
+ fmt .Fprintln (w , string (resBytes ))
288
+ case http .MethodPost :
289
+ var request openai.AssistantRequest
290
+ err := json .NewDecoder (r .Body ).Decode (& request )
291
+ checks .NoError (t , err , "Decode error" )
292
+
293
+ resBytes , _ := json .Marshal (openai.Assistant {
294
+ ID : assistantID ,
295
+ Object : "assistant" ,
296
+ CreatedAt : 1234567890 ,
297
+ Name : request .Name ,
298
+ Model : request .Model ,
299
+ Description : request .Description ,
300
+ Instructions : request .Instructions ,
301
+ Tools : request .Tools ,
302
+ })
303
+ fmt .Fprintln (w , string (resBytes ))
304
+ case http .MethodDelete :
305
+ fmt .Fprintln (w , `{
306
+ "id": "asst_abc123",
307
+ "object": "assistant.deleted",
308
+ "deleted": true
309
+ }` )
310
+ }
311
+ },
312
+ )
313
+
314
+ server .RegisterHandler (
315
+ "/openai/assistants" ,
316
+ func (w http.ResponseWriter , r * http.Request ) {
317
+ if r .Method == http .MethodPost {
318
+ var request openai.AssistantRequest
319
+ err := json .NewDecoder (r .Body ).Decode (& request )
320
+ checks .NoError (t , err , "Decode error" )
321
+
322
+ resBytes , _ := json .Marshal (openai.Assistant {
323
+ ID : assistantID ,
324
+ Object : "assistant" ,
325
+ CreatedAt : 1234567890 ,
326
+ Name : request .Name ,
327
+ Model : request .Model ,
328
+ Description : request .Description ,
329
+ Instructions : request .Instructions ,
330
+ Tools : request .Tools ,
331
+ })
332
+ fmt .Fprintln (w , string (resBytes ))
333
+ } else if r .Method == http .MethodGet {
334
+ resBytes , _ := json .Marshal (openai.AssistantsList {
335
+ LastID : & assistantID ,
336
+ FirstID : & assistantID ,
337
+ Assistants : []openai.Assistant {
338
+ {
339
+ ID : assistantID ,
340
+ Object : "assistant" ,
341
+ CreatedAt : 1234567890 ,
342
+ Name : & assistantName ,
343
+ Model : openai .GPT4TurboPreview ,
344
+ Description : & assistantDescription ,
345
+ Instructions : & assistantInstructions ,
346
+ },
347
+ },
348
+ })
349
+ fmt .Fprintln (w , string (resBytes ))
350
+ }
351
+ },
352
+ )
353
+
354
+ ctx := context .Background ()
355
+
356
+ _ , err := client .CreateAssistant (ctx , openai.AssistantRequest {
357
+ Name : & assistantName ,
358
+ Description : & assistantDescription ,
359
+ Model : openai .GPT4TurboPreview ,
360
+ Instructions : & assistantInstructions ,
361
+ })
362
+ checks .NoError (t , err , "CreateAssistant error" )
363
+
364
+ _ , err = client .RetrieveAssistant (ctx , assistantID )
365
+ checks .NoError (t , err , "RetrieveAssistant error" )
366
+
367
+ _ , err = client .ModifyAssistant (ctx , assistantID , openai.AssistantRequest {
368
+ Name : & assistantName ,
369
+ Description : & assistantDescription ,
370
+ Model : openai .GPT4TurboPreview ,
371
+ Instructions : & assistantInstructions ,
372
+ })
373
+ checks .NoError (t , err , "ModifyAssistant error" )
374
+
375
+ _ , err = client .DeleteAssistant (ctx , assistantID )
376
+ checks .NoError (t , err , "DeleteAssistant error" )
377
+
378
+ _ , err = client .ListAssistants (ctx , & limit , & order , & after , & before )
379
+ checks .NoError (t , err , "ListAssistants error" )
380
+
381
+ _ , err = client .CreateAssistantFile (ctx , assistantID , openai.AssistantFileRequest {
382
+ FileID : assistantFileID ,
383
+ })
384
+ checks .NoError (t , err , "CreateAssistantFile error" )
385
+
386
+ _ , err = client .ListAssistantFiles (ctx , assistantID , & limit , & order , & after , & before )
387
+ checks .NoError (t , err , "ListAssistantFiles error" )
388
+
389
+ _ , err = client .RetrieveAssistantFile (ctx , assistantID , assistantFileID )
390
+ checks .NoError (t , err , "RetrieveAssistantFile error" )
391
+
392
+ err = client .DeleteAssistantFile (ctx , assistantID , assistantFileID )
393
+ checks .NoError (t , err , "DeleteAssistantFile error" )
394
+ }
0 commit comments