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, resolve_model_id, slug

Methods included from DispatchHelpers

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

Methods included from ModelCatalogHelpers

#health, #readiness

Instance Method Details

#api_baseObject



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

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

#completion_urlObject



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

def completion_url  = 'Converse'

#count_tokens_urlObject



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

def count_tokens_url = 'CountTokens'

#embedding_urlObject



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

def embedding_url(**) = 'InvokeModel'

#geo_prefixObject



89
90
91
92
# File 'lib/legion/extensions/llm/bedrock/provider.rb', line 89

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



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

def models_url      = 'ListFoundationModels'

#regionObject



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

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

#settingsObject



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

def settings
  Bedrock.default_settings
end

#stream_urlObject



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

def stream_url      = 'ConverseStream'

#translatorObject



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

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