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/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/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/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.7.0'

Class Method Summary collapse

Class Method Details

.chatObject



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

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

.configObject



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

def config
  @config ||= Configuration.new
end

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

Yields:



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

def configure
  yield config
end

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

Yields:

  • (context_config)


191
192
193
194
195
# File 'lib/legion/extensions/llm.rb', line 191

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

.default_settingsObject



242
243
244
245
246
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
# File 'lib/legion/extensions/llm.rb', line 242

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



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

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

.loggerObject



233
234
235
236
237
238
239
# File 'lib/legion/extensions/llm.rb', line 233

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

.modelsObject



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

def models
  Models.instance
end

.moderateObject



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

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

.paintObject



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

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

.provider_settingsObject



282
283
284
# File 'lib/legion/extensions/llm.rb', line 282

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

.providersObject



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

def providers
  Models.scan_provider_classes.values
end

.remote_invocable?Boolean

Returns:

  • (Boolean)


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

def remote_invocable? = false

.transcribeObject



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

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