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/routing/records.rb,
lib/legion/extensions/llm/canonical/params.rb,
lib/legion/extensions/llm/inventory/errors.rb,
lib/legion/extensions/llm/model/modalities.rb,
lib/legion/extensions/llm/routing/lane_key.rb,
lib/legion/extensions/llm/settings_cascade.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/inventory/records.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/inventory/evidence.rb,
lib/legion/extensions/llm/inventory/identity.rb,
lib/legion/extensions/llm/inventory/registry.rb,
lib/legion/extensions/llm/inventory/snapshot.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/inventory/publisher.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/inventory/probe_token.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/inventory/weight_schema.rb,
lib/legion/extensions/llm/responses/chat_response.rb,
lib/legion/extensions/llm/fleet/provider_responder.rb,
lib/legion/extensions/llm/routing/provider_outcome.rb,
lib/legion/extensions/llm/canonical/tool_definition.rb,
lib/legion/extensions/llm/fleet/envelope_validation.rb,
lib/legion/extensions/llm/inventory/callable_handle.rb,
lib/legion/extensions/llm/inventory/immutable_value.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/inventory/probe_coordinator.rb,
lib/legion/extensions/llm/inventory/weight_reconciler.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, SettingsCascade, 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.7.6'

Class Method Summary collapse

Class Method Details

.chatObject



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

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

.configObject



234
235
236
# File 'lib/legion/extensions/llm.rb', line 234

def config
  @config ||= Configuration.new
end

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

Yields:



230
231
232
# File 'lib/legion/extensions/llm.rb', line 230

def configure
  yield config
end

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

Yields:

  • (context_config)


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

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

.default_settingsObject



247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# File 'lib/legion/extensions/llm.rb', line 247

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



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

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

.loggerObject



238
239
240
241
242
243
244
# File 'lib/legion/extensions/llm.rb', line 238

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

.modelsObject



222
223
224
# File 'lib/legion/extensions/llm.rb', line 222

def models
  Models.instance
end

.moderateObject



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

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

.paintObject



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

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

.provider_settingsObject



287
288
289
# File 'lib/legion/extensions/llm.rb', line 287

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

.providersObject



226
227
228
# File 'lib/legion/extensions/llm.rb', line 226

def providers
  Models.scan_provider_classes.values
end

.remote_invocable?Boolean

Returns:

  • (Boolean)


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

def remote_invocable? = false

.transcribeObject



218
219
220
# File 'lib/legion/extensions/llm.rb', line 218

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