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/model/modalities.rb,
lib/legion/extensions/llm/routing/lane_key.rb,
lib/legion/extensions/llm/auto_registration.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/transport/fleet_lane.rb,
lib/legion/extensions/llm/model/pricing_category.rb,
lib/legion/extensions/llm/registry_event_builder.rb,
lib/legion/extensions/llm/routing/model_offering.rb,
lib/legion/extensions/llm/routing/registry_event.rb,
lib/legion/extensions/llm/routing/offering_registry.rb,
lib/legion/extensions/llm/provider/open_ai_compatible.rb,
lib/legion/extensions/llm/transport/exchanges/llm_registry.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, MimeType, Model, ProviderSettings, 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

Constant Summary collapse

Schema =
::RubyLLM::Schema
VERSION =
'0.3.0'

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
# File 'lib/legion/extensions/llm.rb', line 110

def self.default_settings
  {
    fleet: {
      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: 300_000,
      endpoint: {
        enabled: false,
        empty_lane_backoff_ms: 250,
        idle_backoff_ms: 1_000,
        max_consecutive_pulls_per_lane: 0,
        accept_when: []
      }
    }
  }
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



132
133
134
# File 'lib/legion/extensions/llm.rb', line 132

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