@@ -273,58 +273,6 @@ func (provider *AzureProvider) ChatCompletion(ctx context.Context, key schemas.K
273273 return response , nil
274274}
275275
276- // Responses performs a responses request to Azure's API.
277- // It formats the request, sends it to Azure, and processes the response.
278- // Returns a BifrostResponse containing the completion results or an error if the request fails.
279- func (provider * AzureProvider ) Responses (ctx context.Context , key schemas.Key , request * schemas.BifrostResponsesRequest ) (* schemas.BifrostResponse , * schemas.BifrostError ) {
280- response , err := provider .ChatCompletion (ctx , key , request .ToChatRequest ())
281- if err != nil {
282- return nil , err
283- }
284-
285- response .ToResponsesOnly ()
286- response .ExtraFields .RequestType = schemas .ResponsesRequest
287- response .ExtraFields .Provider = provider .GetProviderKey ()
288- response .ExtraFields .ModelRequested = request .Model
289-
290- return response , nil
291- }
292-
293- // Embedding generates embeddings for the given input text(s) using Azure OpenAI.
294- // The input can be either a single string or a slice of strings for batch embedding.
295- // Returns a BifrostResponse containing the embedding(s) and any error that occurred.
296- func (provider * AzureProvider ) Embedding (ctx context.Context , key schemas.Key , request * schemas.BifrostEmbeddingRequest ) (* schemas.BifrostResponse , * schemas.BifrostError ) {
297- // Use centralized converter
298- reqBody := openai .ToOpenAIEmbeddingRequest (request )
299- if reqBody == nil {
300- return nil , newBifrostOperationError ("embedding input is not provided" , nil , schemas .Azure )
301- }
302-
303- responseBody , latency , err := provider .completeRequest (ctx , reqBody , "embeddings" , key , request .Model )
304- if err != nil {
305- return nil , err
306- }
307-
308- response := & schemas.BifrostResponse {}
309-
310- // Use enhanced response handler with pre-allocated response
311- rawResponse , bifrostErr := handleProviderResponse (responseBody , response , provider .sendBackRawResponse )
312- if bifrostErr != nil {
313- return nil , bifrostErr
314- }
315-
316- response .ExtraFields .Provider = schemas .Azure
317- response .ExtraFields .Latency = latency .Milliseconds ()
318- response .ExtraFields .ModelRequested = request .Model
319- response .ExtraFields .RequestType = schemas .EmbeddingRequest
320-
321- if provider .sendBackRawResponse {
322- response .ExtraFields .RawResponse = rawResponse
323- }
324-
325- return response , nil
326- }
327-
328276// ChatCompletionStream performs a streaming chat completion request to Azure's OpenAI API.
329277// It supports real-time streaming of responses using Server-Sent Events (SSE).
330278// Uses Azure-specific URL construction with deployments and supports both api-key and Bearer token authentication.
@@ -369,7 +317,7 @@ func (provider *AzureProvider) ChatCompletionStream(ctx context.Context, postHoo
369317 }
370318
371319 // Use shared streaming logic from OpenAI
372- return handleOpenAIStreaming (
320+ return handleOpenAIChatCompletionStreaming (
373321 ctx ,
374322 provider .streamClient ,
375323 fullURL ,
@@ -383,6 +331,67 @@ func (provider *AzureProvider) ChatCompletionStream(ctx context.Context, postHoo
383331 )
384332}
385333
334+ // Responses performs a responses request to Azure's API.
335+ // It formats the request, sends it to Azure, and processes the response.
336+ // Returns a BifrostResponse containing the completion results or an error if the request fails.
337+ func (provider * AzureProvider ) Responses (ctx context.Context , key schemas.Key , request * schemas.BifrostResponsesRequest ) (* schemas.BifrostResponse , * schemas.BifrostError ) {
338+ response , err := provider .ChatCompletion (ctx , key , request .ToChatRequest ())
339+ if err != nil {
340+ return nil , err
341+ }
342+
343+ response .ToResponsesOnly ()
344+ response .ExtraFields .RequestType = schemas .ResponsesRequest
345+ response .ExtraFields .Provider = provider .GetProviderKey ()
346+ response .ExtraFields .ModelRequested = request .Model
347+
348+ return response , nil
349+ }
350+
351+ func (provider * AzureProvider ) ResponsesStream (ctx context.Context , postHookRunner schemas.PostHookRunner , key schemas.Key , request * schemas.BifrostResponsesRequest ) (chan * schemas.BifrostStream , * schemas.BifrostError ) {
352+ return provider .ChatCompletionStream (
353+ ctx ,
354+ getResponsesChunkConverterCombinedPostHookRunner (postHookRunner ),
355+ key ,
356+ request .ToChatRequest (),
357+ )
358+ }
359+
360+ // Embedding generates embeddings for the given input text(s) using Azure OpenAI.
361+ // The input can be either a single string or a slice of strings for batch embedding.
362+ // Returns a BifrostResponse containing the embedding(s) and any error that occurred.
363+ func (provider * AzureProvider ) Embedding (ctx context.Context , key schemas.Key , request * schemas.BifrostEmbeddingRequest ) (* schemas.BifrostResponse , * schemas.BifrostError ) {
364+ // Use centralized converter
365+ reqBody := openai .ToOpenAIEmbeddingRequest (request )
366+ if reqBody == nil {
367+ return nil , newBifrostOperationError ("embedding input is not provided" , nil , schemas .Azure )
368+ }
369+
370+ responseBody , latency , err := provider .completeRequest (ctx , reqBody , "embeddings" , key , request .Model )
371+ if err != nil {
372+ return nil , err
373+ }
374+
375+ response := & schemas.BifrostResponse {}
376+
377+ // Use enhanced response handler with pre-allocated response
378+ rawResponse , bifrostErr := handleProviderResponse (responseBody , response , provider .sendBackRawResponse )
379+ if bifrostErr != nil {
380+ return nil , bifrostErr
381+ }
382+
383+ response .ExtraFields .Provider = schemas .Azure
384+ response .ExtraFields .Latency = latency .Milliseconds ()
385+ response .ExtraFields .ModelRequested = request .Model
386+ response .ExtraFields .RequestType = schemas .EmbeddingRequest
387+
388+ if provider .sendBackRawResponse {
389+ response .ExtraFields .RawResponse = rawResponse
390+ }
391+
392+ return response , nil
393+ }
394+
386395func (provider * AzureProvider ) Speech (ctx context.Context , key schemas.Key , request * schemas.BifrostSpeechRequest ) (* schemas.BifrostResponse , * schemas.BifrostError ) {
387396 return nil , newUnsupportedOperationError ("speech" , "azure" )
388397}
@@ -398,7 +407,3 @@ func (provider *AzureProvider) Transcription(ctx context.Context, key schemas.Ke
398407func (provider * AzureProvider ) TranscriptionStream (ctx context.Context , postHookRunner schemas.PostHookRunner , key schemas.Key , request * schemas.BifrostTranscriptionRequest ) (chan * schemas.BifrostStream , * schemas.BifrostError ) {
399408 return nil , newUnsupportedOperationError ("transcription stream" , "azure" )
400409}
401-
402- func (provider * AzureProvider ) ResponsesStream (ctx context.Context , postHookRunner schemas.PostHookRunner , key schemas.Key , request * schemas.BifrostResponsesRequest ) (chan * schemas.BifrostStream , * schemas.BifrostError ) {
403- return nil , newUnsupportedOperationError ("responses stream" , "azure" )
404- }
0 commit comments