Module: OpenAI::Providers::Azure Private

Defined in:
lib/openai/providers/azure.rb

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Defined Under Namespace

Classes: Auth, Definition

Constant Summary collapse

API_KEY_AUTH_MARKER =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

:openai_azure_api_key
BEARER_AUTH_MARKER =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

:openai_azure_bearer
AUTH_HEADERS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

%w[api-key authorization].freeze
MISSING_ENDPOINT_MESSAGE =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"Azure OpenAI requires an endpoint. Pass `endpoint` to `azure(...)`, or set " \
"`AZURE_OPENAI_ENDPOINT`."
MISSING_CREDENTIALS_MESSAGE =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"Could not find credentials for Azure OpenAI. Pass `api_key` or `token_provider` " \
"to `azure(...)`, or set `AZURE_OPENAI_API_KEY`."

Class Method Summary collapse

Class Method Details

.normalize_endpoint(endpoint) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/openai/providers/azure.rb', line 86

def normalize_endpoint(endpoint)
  uri = URI(endpoint)
  unless uri.is_a?(URI::HTTP) && uri.host
    raise ArgumentError, "The Azure OpenAI `endpoint` must be an absolute HTTP or HTTPS URL."
  end
  unless uri.query.nil?
    raise ArgumentError, "The Azure OpenAI `endpoint` must not include a query string."
  end
  unless uri.fragment.nil?
    raise ArgumentError, "The Azure OpenAI `endpoint` must not include a fragment."
  end
  unless uri.userinfo.nil?
    raise ArgumentError, "The Azure OpenAI `endpoint` must not include user information."
  end

  path = uri.path.sub(%r{/+\z}, "")
  uri.path =
    case path
    when %r{/openai/v1\z}
      path
    when %r{/openai\z}
      "#{path}/v1"
    else
      "#{path}/openai/v1"
    end
  uri.to_s
rescue URI::InvalidURIError => e
  message = "The Azure OpenAI `endpoint` must be an absolute HTTP or HTTPS URL."
  raise ArgumentError.new(message), cause: e
end

.normalize_optional_string(value) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



117
118
119
120
121
# File 'lib/openai/providers/azure.rb', line 117

def normalize_optional_string(value)
  return nil unless value.is_a?(String)
  normalized = value.strip
  normalized unless normalized.empty?
end

.provider_headers(request, marker:) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



123
124
125
126
127
128
129
130
131
132
133
# File 'lib/openai/providers/azure.rb', line 123

def provider_headers(request, marker:)
  headers = request.fetch(:headers).dup
  if request[:provider_auth] == marker
    AUTH_HEADERS.each { headers.delete(_1) }
  elsif AUTH_HEADERS.any? { headers.key?(_1) }
    raise OpenAI::Errors::Error,
          "Azure OpenAI provider authentication cannot be combined with a custom " \
          "`Authorization` or `api-key` header."
  end
  headers
end

.validate_origin!(url, base_url) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



135
136
137
138
139
140
# File 'lib/openai/providers/azure.rb', line 135

def validate_origin!(url, base_url)
  return if OpenAI::Internal::Util.uri_origin(url) == OpenAI::Internal::Util.uri_origin(base_url)
  raise OpenAI::Errors::Error,
        "Refusing to authenticate a request for an origin other than the configured " \
        "Azure OpenAI endpoint."
end