Class: Legion::Extensions::Llm::Openai::Provider
- Inherits:
-
Provider
- Object
- Provider
- Legion::Extensions::Llm::Openai::Provider
- Includes:
- Provider::OpenAICompatible
- Defined in:
- lib/legion/extensions/llm/openai/provider.rb
Overview
OpenAI provider implementation for the Legion::Extensions::Llm base provider contract.
Defined Under Namespace
Modules: Capabilities
Class Attribute Summary collapse
Class Method Summary collapse
- .capabilities ⇒ Object
- .configuration_options ⇒ Object
- .configuration_requirements ⇒ Object
- .slug ⇒ Object
Instance Method Summary collapse
- #api_base ⇒ Object
- #chat_url ⇒ Object
- #headers ⇒ Object
- #image_edit_url ⇒ Object
- #image_generation_url ⇒ Object
- #image_variation_url ⇒ Object
- #images_url(with: nil, mask: nil) ⇒ Object
- #list_models ⇒ Object
- #retrieve_model(model) ⇒ Object
Class Attribute Details
.registry_publisher ⇒ Object
31 32 33 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 31 def registry_publisher @registry_publisher ||= RegistryPublisher.new end |
Class Method Details
.capabilities ⇒ Object
29 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 29 def capabilities = Capabilities |
.configuration_options ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 19 def %i[ openai_api_key openai_api_base openai_organization_id openai_project_id openai_use_system_role ] end |
.configuration_requirements ⇒ Object
17 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 17 def configuration_requirements = %i[openai_api_key] |
.slug ⇒ Object
16 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 16 def slug = 'openai' |
Instance Method Details
#api_base ⇒ Object
76 77 78 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 76 def api_base config.openai_api_base || 'https://api.openai.com' end |
#chat_url ⇒ Object
88 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 88 def chat_url = completion_url |
#headers ⇒ Object
80 81 82 83 84 85 86 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 80 def headers { 'Authorization' => "Bearer #{config.openai_api_key}", 'OpenAI-Organization' => config.openai_organization_id, 'OpenAI-Project' => config.openai_project_id }.compact end |
#image_edit_url ⇒ Object
90 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 90 def image_edit_url = '/v1/images/edits' |
#image_generation_url ⇒ Object
89 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 89 def image_generation_url = '/v1/images/generations' |
#image_variation_url ⇒ Object
91 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 91 def image_variation_url = '/v1/images/variations' |
#images_url(with: nil, mask: nil) ⇒ Object
92 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 92 def images_url(with: nil, mask: nil) = super |
#list_models ⇒ Object
98 99 100 101 102 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 98 def list_models super.tap do |models| self.class.registry_publisher.publish_models_async(models, readiness: readiness(live: false)) end end |
#retrieve_model(model) ⇒ Object
94 95 96 |
# File 'lib/legion/extensions/llm/openai/provider.rb', line 94 def retrieve_model(model) connection.get("#{models_url}/#{model}").body end |