Module: Legion::Extensions::Llm::AzureFoundry::ProviderClassMethods

Included in:
Provider
Defined in:
lib/legion/extensions/llm/azure_foundry/provider.rb

Overview

Class-level methods for Provider — exposed via extend.

Instance Method Summary collapse

Instance Method Details

#capabilitiesObject



62
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 62

def capabilities = Capabilities

#configuration_optionsObject



65
66
67
68
69
70
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 65

def configuration_options
  %i[
    azure_foundry_endpoint azure_foundry_api_key azure_foundry_bearer_token
    azure_foundry_api_version azure_foundry_surface azure_foundry_deployments
  ]
end

#configuration_requirementsObject



61
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 61

def configuration_requirements = %i[azure_foundry_endpoint]

#default_tierObject



60
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 60

def default_tier = :cloud

#default_transportObject



59
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 59

def default_transport = :http

#deployment_config(model_id, config:) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 77

def deployment_config(model_id, config:)
  entries = normalize_deployments(config&.azure_foundry_deployments)
  entries.find do |entry|
    [value_for(entry, :deployment), value_for(entry, :model), value_for(entry, :canonical_model_alias)]
      .compact.map(&:to_s).include?(model_id.to_s)
  end
end

#normalize_deployments(deployments) ⇒ Object



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

def normalize_deployments(deployments)
  return deployments.map { |n, m| m.to_h.merge(deployment: n) } if deployments.is_a?(Hash)

  Array(deployments).map { |d| d.is_a?(Hash) ? d.dup : { deployment: d.to_s } }
end

#registry_publisherObject



63
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 63

def registry_publisher = AzureFoundry.registry_publisher

#resolve_model_id(model_id, config: nil) ⇒ Object



72
73
74
75
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 72

def resolve_model_id(model_id, config: nil)
  deployment = deployment_config(model_id, config:)
  value_for(deployment, :deployment) || value_for(deployment, :model) || model_id.to_s
end

#slugObject



58
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 58

def slug = 'azure_foundry'