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/canonical.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/taxonomies.rb,
lib/legion/extensions/llm/capabilities.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/canonical/chunk.rb,
lib/legion/extensions/llm/canonical/usage.rb,
lib/legion/extensions/llm/canonical/params.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/canonical/message.rb,
lib/legion/extensions/llm/canonical/request.rb,
lib/legion/extensions/llm/capability_policy.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/canonical/response.rb,
lib/legion/extensions/llm/canonical/thinking.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/canonical/tool_call.rb,
lib/legion/extensions/llm/stop_reason_mapping.rb,
lib/legion/extensions/llm/fleet/publish_safety.rb,
lib/legion/extensions/llm/transport/fleet_lane.rb,
lib/legion/extensions/llm/actors/metering_flush.rb,
lib/legion/extensions/llm/canonical/tool_schema.rb,
lib/legion/extensions/llm/fleet/token_validator.rb,
lib/legion/extensions/llm/fleet/worker_execution.rb,
lib/legion/extensions/llm/inventory/capabilities.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/canonical/content_block.rb,
lib/legion/extensions/llm/responses/chat_response.rb,
lib/legion/extensions/llm/fleet/provider_responder.rb,
lib/legion/extensions/llm/canonical/tool_definition.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/inventory/scoped_refresher.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: Actor, AutoRegistration, Canonical, Capabilities, CapabilityPolicy, CredentialSources, Errors, Fleet, Inventory, MimeType, Model, ProviderContract, ProviderSettings, Responses, Routing, StopReasonMapping, Streaming, Taxonomies, 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, ModelNotAllowedError, 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.6.9'

Class Method Summary collapse

Class Method Details

.chatObject



182
183
184
# File 'lib/legion/extensions/llm.rb', line 182

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

.configObject



214
215
216
# File 'lib/legion/extensions/llm.rb', line 214

def config
  @config ||= Configuration.new
end

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

Yields:



210
211
212
# File 'lib/legion/extensions/llm.rb', line 210

def configure
  yield config
end

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

Yields:

  • (context_config)


176
177
178
179
180
# File 'lib/legion/extensions/llm.rb', line 176

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

.default_settingsObject



227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
# File 'lib/legion/extensions/llm.rb', line 227

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
      },
      request: {
        logger: {
          request_payload: false
        }
      }
    }
  }
end

.embedObject



186
187
188
# File 'lib/legion/extensions/llm.rb', line 186

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

.loggerObject



218
219
220
221
222
223
224
# File 'lib/legion/extensions/llm.rb', line 218

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

.modelsObject



202
203
204
# File 'lib/legion/extensions/llm.rb', line 202

def models
  Models.instance
end

.moderateObject



190
191
192
# File 'lib/legion/extensions/llm.rb', line 190

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

.paintObject



194
195
196
# File 'lib/legion/extensions/llm.rb', line 194

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

.provider_settingsObject



267
268
269
# File 'lib/legion/extensions/llm.rb', line 267

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

.providersObject



206
207
208
# File 'lib/legion/extensions/llm.rb', line 206

def providers
  Models.scan_provider_classes.values
end

.remote_invocable?Boolean

Returns:

  • (Boolean)


174
# File 'lib/legion/extensions/llm.rb', line 174

def remote_invocable? = false

.transcribeObject



198
199
200
# File 'lib/legion/extensions/llm.rb', line 198

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