36 lines
1.1 KiB
Go
36 lines
1.1 KiB
Go
package openai
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/maximhq/bifrost/core/schemas"
|
|
)
|
|
|
|
// SupportsWebSocketMode returns true since OpenAI natively supports the Responses API WebSocket Mode.
|
|
func (provider *OpenAIProvider) SupportsWebSocketMode() bool {
|
|
return true
|
|
}
|
|
|
|
// WebSocketResponsesURL returns the WebSocket URL for the OpenAI Responses API.
|
|
// Converts the HTTP base URL to a WSS URL: https://api.openai.com -> wss://api.openai.com/v1/responses
|
|
func (provider *OpenAIProvider) WebSocketResponsesURL(key schemas.Key) string {
|
|
base := provider.networkConfig.BaseURL
|
|
base = strings.Replace(base, "https://", "wss://", 1)
|
|
base = strings.Replace(base, "http://", "ws://", 1)
|
|
return base + "/v1/responses"
|
|
}
|
|
|
|
// WebSocketHeaders returns the headers required for the upstream WebSocket connection to OpenAI.
|
|
func (provider *OpenAIProvider) WebSocketHeaders(key schemas.Key) map[string]string {
|
|
headers := map[string]string{
|
|
"Authorization": "Bearer " + key.Value.GetValue(),
|
|
}
|
|
for k, v := range provider.networkConfig.ExtraHeaders {
|
|
if strings.EqualFold(k, "Authorization") {
|
|
continue
|
|
}
|
|
headers[k] = v
|
|
}
|
|
return headers
|
|
}
|