-
-
Notifications
You must be signed in to change notification settings - Fork 426
Expand file tree
/
Copy pathruby_llm.rb
More file actions
115 lines (99 loc) · 2.74 KB
/
ruby_llm.rb
File metadata and controls
115 lines (99 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# frozen_string_literal: true
require 'base64'
require 'event_stream_parser'
require 'faraday'
require 'faraday/multipart'
require 'faraday/retry'
require 'json'
require 'logger'
require 'marcel'
require 'securerandom'
require 'date'
require 'time'
require 'zeitwerk'
loader = Zeitwerk::Loader.for_gem
loader.inflector.inflect(
'azure' => 'Azure',
'UI' => 'UI',
'api' => 'API',
'bedrock' => 'Bedrock',
'deepseek' => 'DeepSeek',
'gpustack' => 'GPUStack',
'llm' => 'LLM',
'minimax' => 'MiniMax',
'mistral' => 'Mistral',
'openai' => 'OpenAI',
'openrouter' => 'OpenRouter',
'pdf' => 'PDF',
'perplexity' => 'Perplexity',
'ruby_llm' => 'RubyLLM',
'vertexai' => 'VertexAI',
'xai' => 'XAI'
)
loader.ignore("#{__dir__}/tasks")
loader.ignore("#{__dir__}/generators")
loader.ignore("#{__dir__}/ruby_llm/railtie.rb")
loader.setup
# A delightful Ruby interface to modern AI language models.
module RubyLLM
class Error < StandardError; end
class << self
def context
context_config = config.dup
yield context_config if block_given?
Context.new(context_config)
end
def chat(...)
Chat.new(...)
end
def embed(...)
Embedding.embed(...)
end
def moderate(...)
Moderation.moderate(...)
end
def paint(...)
Image.paint(...)
end
def transcribe(...)
Transcription.transcribe(...)
end
def models
Models.instance
end
def providers
Provider.providers.values
end
def configure
yield config
end
def config
@config ||= Configuration.new
end
def logger
@logger ||= config.logger || Logger.new(
config.log_file,
progname: 'RubyLLM',
level: config.log_level
)
end
end
end
RubyLLM::Provider.register :anthropic, RubyLLM::Providers::Anthropic
RubyLLM::Provider.register :azure, RubyLLM::Providers::Azure
RubyLLM::Provider.register :bedrock, RubyLLM::Providers::Bedrock
RubyLLM::Provider.register :deepseek, RubyLLM::Providers::DeepSeek
RubyLLM::Provider.register :gemini, RubyLLM::Providers::Gemini
RubyLLM::Provider.register :gpustack, RubyLLM::Providers::GPUStack
RubyLLM::Provider.register :minimax, RubyLLM::Providers::MiniMax
RubyLLM::Provider.register :mistral, RubyLLM::Providers::Mistral
RubyLLM::Provider.register :ollama, RubyLLM::Providers::Ollama
RubyLLM::Provider.register :openai, RubyLLM::Providers::OpenAI
RubyLLM::Provider.register :openrouter, RubyLLM::Providers::OpenRouter
RubyLLM::Provider.register :perplexity, RubyLLM::Providers::Perplexity
RubyLLM::Provider.register :vertexai, RubyLLM::Providers::VertexAI
RubyLLM::Provider.register :xai, RubyLLM::Providers::XAI
if defined?(Rails::Railtie)
require 'ruby_llm/railtie'
require 'ruby_llm/active_record/acts_as'
end