llm_conductor 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +27 -0
- data/config/initializers/llm_conductor.rb +2 -1
- data/lib/llm_conductor/clients/base_client.rb +21 -1
- data/lib/llm_conductor/configuration.rb +2 -1
- data/lib/llm_conductor/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00742db531ea95e6247acbb8b7ea7e92619df851b0d558fd33a4f20d8cf23873
|
4
|
+
data.tar.gz: 9492982bc533d2552b9b55f8e0892fc523c2340d75086ade217651bf9d72730a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d23aa8d06cc823d77ec4992605208f693a592971d13f88266d587cf06fe78cd42111b7904404cc998215736df1d2b9acf452c5474d070401619d6774a870993
|
7
|
+
data.tar.gz: 154240f949c96860372b6cc6eb097267c1a4e9a52b6da968dc30f53d18069f4034fdadfe12fe38b51e5be99d54f75988f1aa48864b624635ce63077bc7f8da6f
|
data/README.md
CHANGED
@@ -109,6 +109,33 @@ LlmConductor.configure do |config|
|
|
109
109
|
config.ollama(
|
110
110
|
base_url: ENV['OLLAMA_ADDRESS'] || 'http://localhost:11434'
|
111
111
|
)
|
112
|
+
|
113
|
+
# Optional: Configure custom logger
|
114
|
+
config.logger = Logger.new($stdout) # Log to stdout
|
115
|
+
config.logger = Logger.new('log/llm_conductor.log') # Log to file
|
116
|
+
config.logger = Rails.logger # Use Rails logger (in Rails apps)
|
117
|
+
end
|
118
|
+
```
|
119
|
+
|
120
|
+
### Logging Configuration
|
121
|
+
|
122
|
+
LLM Conductor supports flexible logging using Ruby's built-in Logger class. By default, when a logger is configured, it uses the DEBUG log level to provide detailed information during development.
|
123
|
+
|
124
|
+
```ruby
|
125
|
+
LlmConductor.configure do |config|
|
126
|
+
# Option 1: Log to stdout - uses DEBUG level by default
|
127
|
+
config.logger = Logger.new($stdout)
|
128
|
+
|
129
|
+
# Option 2: Log to file - set appropriate level
|
130
|
+
config.logger = Logger.new('log/llm_conductor.log')
|
131
|
+
|
132
|
+
# Option 3: Use Rails logger (Rails apps)
|
133
|
+
config.logger = Rails.logger
|
134
|
+
|
135
|
+
# Option 4: Custom logger with formatting
|
136
|
+
config.logger = Logger.new($stderr).tap do |logger|
|
137
|
+
logger.formatter = proc { |severity, datetime, progname, msg| "#{msg}\n" }
|
138
|
+
end
|
112
139
|
end
|
113
140
|
```
|
114
141
|
|
@@ -10,7 +10,8 @@ LlmConductor.configure do |config|
|
|
10
10
|
config.timeout = 30
|
11
11
|
config.max_retries = 3
|
12
12
|
config.retry_delay = 1.0
|
13
|
-
|
13
|
+
# Use Ruby's built-in Logger class directly
|
14
|
+
config.logger = Logger.new($stdout)
|
14
15
|
# Configure providers
|
15
16
|
config.openai(
|
16
17
|
api_key: ENV['OPENAI_API_KEY'],
|
@@ -24,6 +24,12 @@ module LlmConductor
|
|
24
24
|
output_text = generate_content(prompt)
|
25
25
|
output_tokens = calculate_tokens(output_text || '')
|
26
26
|
|
27
|
+
# Logging AI request metadata if logger is set
|
28
|
+
configuration.logger&.debug(
|
29
|
+
"Vendor: #{vendor_name}, Model: #{@model} " \
|
30
|
+
"Output_tokens: #{output_tokens} Input_tokens: #{input_tokens}"
|
31
|
+
)
|
32
|
+
|
27
33
|
build_response(output_text, input_tokens, output_tokens, { prompt: })
|
28
34
|
rescue StandardError => e
|
29
35
|
build_error_response(e)
|
@@ -35,6 +41,12 @@ module LlmConductor
|
|
35
41
|
output_text = generate_content(prompt)
|
36
42
|
output_tokens = calculate_tokens(output_text || '')
|
37
43
|
|
44
|
+
# Logging AI request metadata if logger is set
|
45
|
+
configuration.logger&.debug(
|
46
|
+
"Vendor: #{vendor_name}, Model: #{@model} " \
|
47
|
+
"Output_tokens: #{output_tokens} Input_tokens: #{input_tokens}"
|
48
|
+
)
|
49
|
+
|
38
50
|
build_response(output_text, input_tokens, output_tokens)
|
39
51
|
rescue StandardError => e
|
40
52
|
build_error_response(e)
|
@@ -89,10 +101,18 @@ module LlmConductor
|
|
89
101
|
# Build metadata for the response
|
90
102
|
def build_metadata
|
91
103
|
{
|
92
|
-
vendor:
|
104
|
+
vendor: vendor_name,
|
93
105
|
timestamp: Time.now.utc.iso8601
|
94
106
|
}
|
95
107
|
end
|
108
|
+
|
109
|
+
def vendor_name
|
110
|
+
self.class.name.split('::').last.gsub('Client', '').downcase.to_sym
|
111
|
+
end
|
112
|
+
|
113
|
+
def configuration
|
114
|
+
LlmConductor.configuration
|
115
|
+
end
|
96
116
|
end
|
97
117
|
end
|
98
118
|
end
|
@@ -4,7 +4,7 @@
|
|
4
4
|
module LlmConductor
|
5
5
|
# Configuration class for managing API keys, endpoints, and default settings
|
6
6
|
class Configuration
|
7
|
-
attr_accessor :default_model, :default_vendor, :timeout, :max_retries, :retry_delay
|
7
|
+
attr_accessor :default_model, :default_vendor, :timeout, :max_retries, :retry_delay, :logger
|
8
8
|
attr_reader :providers
|
9
9
|
|
10
10
|
def initialize
|
@@ -14,6 +14,7 @@ module LlmConductor
|
|
14
14
|
@timeout = 30
|
15
15
|
@max_retries = 3
|
16
16
|
@retry_delay = 1.0
|
17
|
+
@logger = nil
|
17
18
|
|
18
19
|
# Provider configurations
|
19
20
|
@providers = {}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: llm_conductor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Zheng
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-10-01 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: activesupport
|