Module: Legion::Extensions::Llm

Defined in:
lib/legion/extensions/llm.rb,
lib/legion/extensions/llm/chat.rb,
lib/legion/extensions/llm/tool.rb,
lib/legion/extensions/llm/agent.rb,
lib/legion/extensions/llm/chunk.rb,
lib/legion/extensions/llm/error.rb,
lib/legion/extensions/llm/image.rb,
lib/legion/extensions/llm/model.rb,
lib/legion/extensions/llm/utils.rb,
lib/legion/extensions/llm/models.rb,
lib/legion/extensions/llm/tokens.rb,
lib/legion/extensions/llm/aliases.rb,
lib/legion/extensions/llm/content.rb,
lib/legion/extensions/llm/context.rb,
lib/legion/extensions/llm/message.rb,
lib/legion/extensions/llm/routing.rb,
lib/legion/extensions/llm/version.rb,
lib/legion/extensions/llm/provider.rb,
lib/legion/extensions/llm/thinking.rb,
lib/legion/extensions/llm/embedding.rb,
lib/legion/extensions/llm/mime_type.rb,
lib/legion/extensions/llm/streaming.rb,
lib/legion/extensions/llm/tool_call.rb,
lib/legion/extensions/llm/attachment.rb,
lib/legion/extensions/llm/connection.rb,
lib/legion/extensions/llm/model/info.rb,
lib/legion/extensions/llm/moderation.rb,
lib/legion/extensions/llm/configuration.rb,
lib/legion/extensions/llm/model/pricing.rb,
lib/legion/extensions/llm/transcription.rb,
lib/legion/extensions/llm/fleet/protocol.rb,
lib/legion/extensions/llm/fleet/settings.rb,
lib/legion/extensions/llm/model/modalities.rb,
lib/legion/extensions/llm/routing/lane_key.rb,
lib/legion/extensions/llm/auto_registration.rb,
lib/legion/extensions/llm/fleet/token_error.rb,
lib/legion/extensions/llm/provider_contract.rb,
lib/legion/extensions/llm/provider_settings.rb,
lib/legion/extensions/llm/credential_sources.rb,
lib/legion/extensions/llm/model/pricing_tier.rb,
lib/legion/extensions/llm/registry_publisher.rb,
lib/legion/extensions/llm/stream_accumulator.rb,
lib/legion/extensions/llm/fleet/publish_safety.rb,
lib/legion/extensions/llm/transport/fleet_lane.rb,
lib/legion/extensions/llm/fleet/token_validator.rb,
lib/legion/extensions/llm/fleet/worker_execution.rb,
lib/legion/extensions/llm/model/pricing_category.rb,
lib/legion/extensions/llm/registry_event_builder.rb,
lib/legion/extensions/llm/responses/stream_chunk.rb,
lib/legion/extensions/llm/routing/model_offering.rb,
lib/legion/extensions/llm/routing/registry_event.rb,
lib/legion/extensions/llm/responses/chat_response.rb,
lib/legion/extensions/llm/fleet/provider_responder.rb,
lib/legion/extensions/llm/fleet/envelope_validation.rb,
lib/legion/extensions/llm/routing/offering_registry.rb,
lib/legion/extensions/llm/transport/exchanges/fleet.rb,
lib/legion/extensions/llm/provider/open_ai_compatible.rb,
lib/legion/extensions/llm/fleet/default_exchange_reply.rb,
lib/legion/extensions/llm/responses/embedding_response.rb,
lib/legion/extensions/llm/responses/thinking_extractor.rb,
lib/legion/extensions/llm/errors/unsupported_capability.rb,
lib/legion/extensions/llm/transport/messages/fleet_error.rb,
lib/legion/extensions/llm/transport/exchanges/llm_registry.rb,
lib/legion/extensions/llm/transport/messages/fleet_request.rb,
lib/legion/extensions/llm/transport/messages/fleet_response.rb,
lib/legion/extensions/llm/transport/messages/registry_event.rb

Overview

Legion-native namespace for the shared LLM provider framework.

Defined Under Namespace

Modules: AutoRegistration, CredentialSources, Errors, Fleet, MimeType, Model, ProviderContract, ProviderSettings, Responses, Routing, Streaming, Transport, Types, Utils Classes: Agent, Aliases, Attachment, BadRequestError, Chat, Chunk, Configuration, ConfigurationError, Connection, Content, Context, ContextLengthExceededError, Embedding, Error, ErrorMiddleware, ForbiddenError, HashConfig, Image, InvalidRoleError, InvalidToolChoiceError, Message, ModelNotFoundError, Models, Moderation, OverloadedError, Parameter, PaymentRequiredError, PromptNotFoundError, Provider, RateLimitError, RegistryEventBuilder, RegistryPublisher, ServerError, ServiceUnavailableError, StreamAccumulator, Thinking, Tokens, Tool, ToolCall, Transcription, UnauthorizedError, UnsupportedAttachmentError, UnsupportedCapabilityError

Constant Summary collapse

Schema =
::RubyLLM::Schema
VERSION =
'0.4.3'

Class Method Summary collapse

Class Method Details

.chatObject



65
66
67
# File 'lib/legion/extensions/llm.rb', line 65

def chat(...)
  Chat.new(...)
end

.configObject



97
98
99
# File 'lib/legion/extensions/llm.rb', line 97

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



93
94
95
# File 'lib/legion/extensions/llm.rb', line 93

def configure
  yield config
end

.context {|context_config| ... } ⇒ Object

Yields:

  • (context_config)


59
60
61
62
63
# File 'lib/legion/extensions/llm.rb', line 59

def context
  context_config = config.dup
  yield context_config if block_given?
  Context.new(context_config)
end

.default_settingsObject



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/legion/extensions/llm.rb', line 110

def self.default_settings
  {
    fleet: {
      consumer: {
        enabled: false,
        scheduler: :basic_get,
        consumer_priority: 0,
        queue_expires_ms: 60_000,
        message_ttl_ms: 120_000,
        queue_max_length: 100,
        delivery_limit: 3,
        consumer_ack_timeout_ms: 90_000,
        empty_lane_backoff_ms: 250,
        idle_backoff_ms: 1_000,
        max_consecutive_pulls_per_lane: 0
      },
      auth: {
        require_signed_token: true,
        issuer: 'legion-llm',
        audience: 'lex-llm-fleet-worker',
        algorithm: 'HS256',
        accepted_issuers: ['legion-llm'],
        max_clock_skew_seconds: 30,
        replay_ttl_seconds: 600
      },
      responder: {
        require_auth: nil,
        require_policy: false,
        require_idempotency: true,
        idempotency_ttl_seconds: 600
      }
    }
  }
end

.embedObject



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

def embed(...)
  Embedding.embed(...)
end

.loggerObject



101
102
103
104
105
106
107
# File 'lib/legion/extensions/llm.rb', line 101

def logger
  @logger ||= config.logger || Logger.new(
    config.log_file,
    progname: 'Legion::Extensions::Llm',
    level: config.log_level
  )
end

.modelsObject



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

def models
  Models.instance
end

.moderateObject



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

def moderate(...)
  Moderation.moderate(...)
end

.paintObject



77
78
79
# File 'lib/legion/extensions/llm.rb', line 77

def paint(...)
  Image.paint(...)
end

.provider_settingsObject



145
146
147
# File 'lib/legion/extensions/llm.rb', line 145

def self.provider_settings(...)
  ProviderSettings.build(...)
end

.providersObject



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

def providers
  Models.scan_provider_classes.values
end

.transcribeObject



81
82
83
# File 'lib/legion/extensions/llm.rb', line 81

def transcribe(...)
  Transcription.transcribe(...)
end