module RubyLLM::Providers::OpenAI

def self.extended(base)

def self.extended(base)
  base.extend(Provider)
  base.extend(OpenAI::Chat)
  base.extend(OpenAI::Embeddings)
  base.extend(OpenAI::Models)
  base.extend(OpenAI::Streaming)
  base.extend(OpenAI::Tools)
  base.extend(OpenAI::Images)
  base.extend(OpenAI::Media)
end

def api_base(config)

def api_base(config)
  config.openai_api_base || 'https://api.openai.com/v1'
end

def capabilities

def capabilities
  OpenAI::Capabilities
end

def configuration_requirements

def configuration_requirements
  %i[openai_api_key]
end

def headers(config)

def headers(config)
  {
    'Authorization' => "Bearer #{config.openai_api_key}",
    'OpenAI-Organization' => config.openai_organization_id,
    'OpenAI-Project' => config.openai_project_id
  }.compact
end

def slug

def slug
  'openai'
end