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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c692236c5d26b598a2275a3a6591022312aec4e4a4d4ee57a186abc774bc39ce
4
- data.tar.gz: 3c20edc85442b8e5227fb6896d3899f08495fa1296306042c07c8bc62a883941
3
+ metadata.gz: 00742db531ea95e6247acbb8b7ea7e92619df851b0d558fd33a4f20d8cf23873
4
+ data.tar.gz: 9492982bc533d2552b9b55f8e0892fc523c2340d75086ade217651bf9d72730a
5
5
  SHA512:
6
- metadata.gz: 8ed23461382c3a8ee2fddea05fdaef5c72111bac8e4b820e4310a40105a8b0bd78b8f1c36c9176f9ac7ddf8c7b4300e9208b45711a129ab0531dd579f9a52964
7
- data.tar.gz: d446efb23252acee7ea453361d402089b87c56450e20ed7e45b1aab2cd0381bff442ed51ea7e2a52a544c39f3117795ad17ac2208dc12514f211d12ba150bb2c
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: self.class.name.split('::').last.gsub('Client', '').downcase.to_sym,
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 = {}
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LlmConductor
4
- VERSION = '1.0.0'
4
+ VERSION = '1.0.1'
5
5
  end
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.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-09-26 00:00:00.000000000 Z
10
+ date: 2025-10-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activesupport