Class: Legion::Extensions::Llm::Openai::Provider

Inherits:
LexLLM::Provider
  • Object
show all
Includes:
LexLLM::Provider::OpenAICompatible
Defined in:
lib/legion/extensions/llm/openai/provider.rb

Overview

OpenAI provider implementation for the LexLLM base provider contract.

Defined Under Namespace

Modules: Capabilities

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.capabilitiesObject



28
# File 'lib/legion/extensions/llm/openai/provider.rb', line 28

def capabilities = Capabilities

.configuration_optionsObject



18
19
20
21
22
23
24
25
26
# File 'lib/legion/extensions/llm/openai/provider.rb', line 18

def configuration_options
  %i[
    openai_api_key
    openai_api_base
    openai_organization_id
    openai_project_id
    openai_use_system_role
  ]
end

.configuration_requirementsObject



16
# File 'lib/legion/extensions/llm/openai/provider.rb', line 16

def configuration_requirements = %i[openai_api_key]

.slugObject



15
# File 'lib/legion/extensions/llm/openai/provider.rb', line 15

def slug = 'openai'

Instance Method Details

#api_baseObject



69
70
71
# File 'lib/legion/extensions/llm/openai/provider.rb', line 69

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

#chat_urlObject



81
# File 'lib/legion/extensions/llm/openai/provider.rb', line 81

def chat_url = completion_url

#headersObject



73
74
75
76
77
78
79
# File 'lib/legion/extensions/llm/openai/provider.rb', line 73

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

#image_edit_urlObject



83
# File 'lib/legion/extensions/llm/openai/provider.rb', line 83

def image_edit_url = '/v1/images/edits'

#image_generation_urlObject



82
# File 'lib/legion/extensions/llm/openai/provider.rb', line 82

def image_generation_url = '/v1/images/generations'

#image_variation_urlObject



84
# File 'lib/legion/extensions/llm/openai/provider.rb', line 84

def image_variation_url = '/v1/images/variations'

#images_url(with: nil, mask: nil) ⇒ Object



85
# File 'lib/legion/extensions/llm/openai/provider.rb', line 85

def images_url(with: nil, mask: nil) = super

#retrieve_model(model) ⇒ Object



87
88
89
# File 'lib/legion/extensions/llm/openai/provider.rb', line 87

def retrieve_model(model)
  connection.get("#{models_url}/#{model}").body
end