Module: RubyLLM

Defined in:
lib/ruby_llm.rb,
lib/ruby_llm/chat.rb,
lib/ruby_llm/tool.rb,
lib/ruby_llm/chunk.rb,
lib/ruby_llm/error.rb,
lib/ruby_llm/image.rb,
lib/ruby_llm/model.rb,
lib/ruby_llm/utils.rb,
lib/ruby_llm/models.rb,
lib/ruby_llm/aliases.rb,
lib/ruby_llm/content.rb,
lib/ruby_llm/content.rb,
lib/ruby_llm/context.rb,
lib/ruby_llm/message.rb,
lib/ruby_llm/railtie.rb,
lib/ruby_llm/version.rb,
lib/ruby_llm/provider.rb,
lib/ruby_llm/embedding.rb,
lib/ruby_llm/mime_type.rb,
lib/ruby_llm/streaming.rb,
lib/ruby_llm/tool_call.rb,
lib/ruby_llm/attachment.rb,
lib/ruby_llm/connection.rb,
lib/ruby_llm/model/info.rb,
lib/ruby_llm/moderation.rb,
lib/ruby_llm/configuration.rb,
lib/ruby_llm/model/pricing.rb,
lib/ruby_llm/transcription.rb,
lib/ruby_llm/tool_executors.rb,
lib/ruby_llm/model/modalities.rb,
lib/ruby_llm/providers/gemini.rb,
lib/ruby_llm/providers/ollama.rb,
lib/ruby_llm/providers/openai.rb,
lib/ruby_llm/providers/bedrock.rb,
lib/ruby_llm/providers/mistral.rb,
lib/ruby_llm/responses_session.rb,
lib/ruby_llm/model/pricing_tier.rb,
lib/ruby_llm/providers/deepseek.rb,
lib/ruby_llm/providers/gpustack.rb,
lib/ruby_llm/providers/vertexai.rb,
lib/ruby_llm/stream_accumulator.rb,
lib/ruby_llm/providers/anthropic.rb,
lib/ruby_llm/providers/openrouter.rb,
lib/ruby_llm/providers/perplexity.rb,
lib/ruby_llm/active_record/acts_as.rb,
lib/ruby_llm/providers/gemini/chat.rb,
lib/ruby_llm/providers/ollama/chat.rb,
lib/ruby_llm/providers/openai/chat.rb,
lib/ruby_llm/model/pricing_category.rb,
lib/ruby_llm/providers/bedrock/chat.rb,
lib/ruby_llm/providers/gemini/media.rb,
lib/ruby_llm/providers/gemini/tools.rb,
lib/ruby_llm/providers/mistral/chat.rb,
lib/ruby_llm/providers/ollama/media.rb,
lib/ruby_llm/providers/openai/media.rb,
lib/ruby_llm/providers/openai/tools.rb,
lib/ruby_llm/providers/bedrock/media.rb,
lib/ruby_llm/providers/deepseek/chat.rb,
lib/ruby_llm/providers/gemini/images.rb,
lib/ruby_llm/providers/gemini/models.rb,
lib/ruby_llm/providers/gpustack/chat.rb,
lib/ruby_llm/providers/ollama/models.rb,
lib/ruby_llm/providers/openai/images.rb,
lib/ruby_llm/providers/openai/models.rb,
lib/ruby_llm/providers/vertexai/chat.rb,
lib/ruby_llm/providers/anthropic/chat.rb,
lib/ruby_llm/providers/bedrock/models.rb,
lib/ruby_llm/providers/gpustack/media.rb,
lib/ruby_llm/providers/mistral/models.rb,
lib/ruby_llm/providers/anthropic/media.rb,
lib/ruby_llm/providers/anthropic/tools.rb,
lib/ruby_llm/providers/bedrock/signing.rb,
lib/ruby_llm/providers/gpustack/models.rb,
lib/ruby_llm/providers/perplexity/chat.rb,
lib/ruby_llm/providers/vertexai/models.rb,
lib/ruby_llm/active_record/chat_methods.rb,
lib/ruby_llm/providers/anthropic/models.rb,
lib/ruby_llm/providers/gemini/streaming.rb,
lib/ruby_llm/providers/openai/streaming.rb,
lib/ruby_llm/providers/openai_responses.rb,
lib/ruby_llm/active_record/model_methods.rb,
lib/ruby_llm/providers/anthropic/content.rb,
lib/ruby_llm/providers/bedrock/streaming.rb,
lib/ruby_llm/providers/gemini/embeddings.rb,
lib/ruby_llm/providers/openai/embeddings.rb,
lib/ruby_llm/providers/openai/moderation.rb,
lib/ruby_llm/providers/openrouter/models.rb,
lib/ruby_llm/providers/perplexity/models.rb,
lib/generators/ruby_llm/generator_helpers.rb,
lib/ruby_llm/active_record/acts_as_legacy.rb,
lib/ruby_llm/providers/mistral/embeddings.rb,
lib/ruby_llm/providers/vertexai/streaming.rb,
lib/ruby_llm/active_record/message_methods.rb,
lib/ruby_llm/providers/anthropic/streaming.rb,
lib/ruby_llm/providers/gemini/capabilities.rb,
lib/ruby_llm/providers/openai/capabilities.rb,
lib/ruby_llm/providers/vertexai/embeddings.rb,
lib/ruby_llm/providers/anthropic/embeddings.rb,
lib/ruby_llm/providers/bedrock/capabilities.rb,
lib/ruby_llm/providers/gemini/transcription.rb,
lib/ruby_llm/providers/mistral/capabilities.rb,
lib/ruby_llm/providers/openai/transcription.rb,
lib/ruby_llm/providers/deepseek/capabilities.rb,
lib/ruby_llm/providers/anthropic/capabilities.rb,
lib/ruby_llm/providers/bedrock/streaming/base.rb,
lib/ruby_llm/providers/vertexai/transcription.rb,
lib/ruby_llm/providers/perplexity/capabilities.rb,
lib/generators/ruby_llm/chat_ui/chat_ui_generator.rb,
lib/generators/ruby_llm/install/install_generator.rb,
lib/ruby_llm/providers/bedrock/streaming/prelude_handling.rb,
lib/ruby_llm/providers/bedrock/streaming/content_extraction.rb,
lib/ruby_llm/providers/bedrock/streaming/message_processing.rb,
lib/ruby_llm/providers/bedrock/streaming/payload_processing.rb,
lib/generators/ruby_llm/upgrade_to_v1_7/upgrade_to_v1_7_generator.rb,
lib/generators/ruby_llm/upgrade_to_v1_9/upgrade_to_v1_9_generator.rb

Overview

A delightful Ruby interface to modern AI language models.

Defined Under Namespace

Modules: ActiveRecord, Generators, MimeType, Model, Providers, Streaming, ToolExecutors, Utils Classes: Aliases, Attachment, BadRequestError, Chat, Chunk, Configuration, ConfigurationError, Connection, Content, Context, Embedding, Error, ErrorMiddleware, ForbiddenError, Image, InvalidRoleError, Message, ModelNotFoundError, Models, Moderation, OverloadedError, Parameter, PaymentRequiredError, Provider, Railtie, RateLimitError, ResponseCancelledError, ResponseFailedError, ResponseIdNotFoundError, ResponseInProgressError, ResponseIncompleteError, ResponsesApiError, ResponsesSession, ServerError, ServiceUnavailableError, StreamAccumulator, Tool, ToolCall, Transcription, UnauthorizedError, UnsupportedAttachmentError

Constant Summary collapse

VERSION =
'1.9.5'

Class Method Summary collapse

Class Method Details

.chat ⇒ Object



78
79
80
# File 'lib/ruby_llm.rb', line 78

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

.config ⇒ Object



110
111
112
# File 'lib/ruby_llm.rb', line 110

def config
  @config ||= Configuration.new
end

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

Yields:



106
107
108
# File 'lib/ruby_llm.rb', line 106

def configure
  yield config
end

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

Yields:

  • (context_config)


72
73
74
75
76
# File 'lib/ruby_llm.rb', line 72

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

.embed ⇒ Object



82
83
84
# File 'lib/ruby_llm.rb', line 82

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

.logger ⇒ Object



114
115
116
117
118
119
120
# File 'lib/ruby_llm.rb', line 114

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

.models ⇒ Object



98
99
100
# File 'lib/ruby_llm.rb', line 98

def models
  Models.instance
end

.moderate ⇒ Object



86
87
88
# File 'lib/ruby_llm.rb', line 86

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

.paint ⇒ Object



90
91
92
# File 'lib/ruby_llm.rb', line 90

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

.providers ⇒ Object



102
103
104
# File 'lib/ruby_llm.rb', line 102

def providers
  Provider.providers.values
end

.register_tool_executor(name) {|tool_calls, max_concurrency:, &execute| ... } ⇒ Object

Registers a new tool executor for concurrent execution.

Examples:

RubyLLM.register_tool_executor(:custom) do |tool_calls, max_concurrency:, &execute|
  results = {}
  tool_calls.each { |tc| results[tc.id] = execute.call(tc) }
  results
end

Parameters:

  • name (Symbol) —

    Executor name (e.g., :async, :threads)

Yields:

  • (tool_calls, max_concurrency:, &execute) —

    Block that executes tools concurrently

Yield Parameters:

  • tool_calls (Array<ToolCall>) —

    Tools to execute

  • max_concurrency (Integer, nil) —

    Maximum concurrent executions

  • execute (Proc) —

    Block to call for each tool

Yield Returns:

  • (Hash{String => Object}) —

    Map of tool_call.id to result



146
147
148
# File 'lib/ruby_llm.rb', line 146

def register_tool_executor(name, &block)
  tool_executors[name] = block
end

.tool_executors ⇒ Hash{Symbol => Proc}

Registry for tool execution strategies. Executors receive an array of tool_calls and a block to execute each one. They must return a hash mapping tool_call.id to result.

Returns:

  • (Hash{Symbol => Proc}) —

    Map of executor names to implementations



127
128
129
# File 'lib/ruby_llm.rb', line 127

def tool_executors
  @tool_executors ||= {}
end

.transcribe ⇒ Object



94
95
96
# File 'lib/ruby_llm.rb', line 94

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