Class: Legion::Extensions::Llm::Bedrock::Provider

Inherits:
Provider
  • Object
show all
Extended by:
ClassMethods
Includes:
ClientHelpers, ConverseHelpers, DispatchHelpers, InvokeModelHelpers, ModelCatalogHelpers, Logging::Helper
Defined in:
lib/legion/extensions/llm/bedrock/provider.rb,
lib/legion/extensions/llm/bedrock/provider/constants.rb,
lib/legion/extensions/llm/bedrock/provider/class_methods.rb,
lib/legion/extensions/llm/bedrock/provider/client_helpers.rb,
lib/legion/extensions/llm/bedrock/provider/converse_helpers.rb,
lib/legion/extensions/llm/bedrock/provider/dispatch_helpers.rb,
lib/legion/extensions/llm/bedrock/provider/invoke_model_helpers.rb,
lib/legion/extensions/llm/bedrock/provider/model_catalog_helpers.rb

Overview

Static model catalog, alias table, context-window facts, and inference-profile prefix list extracted so the primary provider.rb file stays within Metrics/ClassLength.

Defined Under Namespace

Modules: Capabilities, ClassMethods, ClientHelpers, ConverseHelpers, DispatchHelpers, InvokeModelHelpers, ModelCatalogHelpers

Constant Summary collapse

STATIC_MODELS =
[
  { model: 'anthropic.claude-3-haiku-20240307-v1:0', alias: 'claude-3-haiku' },
  { model: 'anthropic.claude-sonnet-4-20250514-v1:0', alias: 'anthropic.claude-sonnet-4' },
  { model: 'anthropic.claude-sonnet-4-20250514-v1:0', alias: 'claude-sonnet-4-6' },
  { model: 'anthropic.claude-sonnet-4-20250514-v1:0', alias: 'claude-sonnet-4-5-20241022' },
  { model: 'anthropic.claude-opus-4-20250515-v1:0', alias: 'claude-opus-4-8' },
  { model: 'anthropic.claude-haiku-4-20250506-v1:0', alias: 'claude-haiku-4-5' },
  { model: 'amazon.titan-text-express-v1', alias: 'titan-text-express' },
  { model: 'amazon.titan-embed-text-v2:0', alias: 'titan-embed-text-v2', usage_type: :embedding },
  { model: 'meta.llama3-2-11b-instruct-v1:0', alias: 'llama-3.2-11b-instruct' },
  { model: 'mistral.mistral-large-3-675b-instruct', alias: 'mistral-large-3' }
].freeze
ALIASES =
STATIC_MODELS.to_h { |entry| [entry.fetch(:alias), entry.fetch(:model)] }.freeze
CONTEXT_WINDOWS =
{
  'anthropic.claude-sonnet-4' => 200_000,
  'anthropic.claude-haiku-4' => 200_000,
  'anthropic.claude-opus-4' => 200_000,
  'anthropic.claude-3-5-sonnet' => 200_000,
  'anthropic.claude-3-5-haiku' => 200_000,
  'anthropic.claude-3-haiku' => 200_000,
  'anthropic.claude-3-opus' => 200_000,
  'anthropic.claude-3-sonnet' => 200_000,
  'meta.llama3' => 128_000,
  'meta.llama3-1' => 128_000,
  'meta.llama3-2' => 128_000,
  'meta.llama3-3' => 128_000,
  'mistral.mistral-large' => 128_000,
  'mistral.mistral-small' => 128_000,
  'amazon.titan-text-express' => 8_192,
  'amazon.titan-text-premier' => 32_000,
  'amazon.nova-pro' => 300_000,
  'amazon.nova-lite' => 300_000,
  'amazon.nova-micro' => 128_000
}.freeze

Constants included from ClassMethods

ClassMethods::INFERENCE_PROFILE_PREFIXES

Instance Method Summary collapse

Methods included from ClassMethods

capabilities, configuration_options, configuration_requirements, default_tier, default_transport, inference_profile_id, normalize_geo_prefix, registry_publisher, resolve_model_id, slug

Methods included from DispatchHelpers

#chat, #complete, #count_tokens, #embed, #stream

Methods included from ModelCatalogHelpers

#discover_live_offerings, #discover_offerings, #discovery_registry_readiness, #health, #list_models, #log_discover_complete, #log_model_discovered, #offering_for, #readiness

Instance Method Details

#api_baseObject



68
69
70
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 68

def api_base
  config.bedrock_endpoint || "https://bedrock-runtime.#{region}.amazonaws.com"
end

#completion_urlObject



72
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 72

def completion_url  = 'Converse'

#count_tokens_urlObject



76
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 76

def count_tokens_url = 'CountTokens'

#embedding_urlObject



75
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 75

def embedding_url(**) = 'InvokeModel'

#geo_prefixObject



82
83
84
85
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 82

def geo_prefix
  configured = config.bedrock_geo_prefix if config.respond_to?(:bedrock_geo_prefix)
  self.class.normalize_geo_prefix(configured || settings[:geo_prefix])
end

#models_urlObject



74
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 74

def models_url      = 'ListFoundationModels'

#regionObject



78
79
80
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 78

def region
  config.bedrock_region || settings[:region] || 'us-east-1'
end

#settingsObject



64
65
66
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 64

def settings
  Bedrock.default_settings
end

#stream_urlObject



73
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 73

def stream_url      = 'ConverseStream'

#translatorObject



60
61
62
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 60

def translator
  @translator ||= Translator.new(region: region)
end