Class: RubyOpenrouter::Client
- Inherits:
-
Object
- Object
- RubyOpenrouter::Client
- Defined in:
- lib/ruby_openrouter/client.rb
Instance Method Summary collapse
- #assistant(content) ⇒ Object
-
#initialize(model:, api_key: nil, site_url: nil, site_name: nil, timeout: nil) ⇒ Client
constructor
A new instance of Client.
- #models ⇒ Object
- #reset ⇒ Object
- #system(content) ⇒ Object
- #user(content, &block) ⇒ Object
Constructor Details
#initialize(model:, api_key: nil, site_url: nil, site_name: nil, timeout: nil) ⇒ Client
Returns a new instance of Client.
3 4 5 6 7 |
# File 'lib/ruby_openrouter/client.rb', line 3 def initialize(model:, api_key: nil, site_url: nil, site_name: nil, timeout: nil) @model = model @config = build_config(api_key: api_key, site_url: site_url, site_name: site_name, timeout: timeout) @messages = [] end |
Instance Method Details
#assistant(content) ⇒ Object
32 33 34 35 |
# File 'lib/ruby_openrouter/client.rb', line 32 def assistant(content) @messages << { role: "assistant", content: content } self end |
#models ⇒ Object
43 44 45 |
# File 'lib/ruby_openrouter/client.rb', line 43 def models Http.get("/models", config: @config).fetch("data", []) end |
#reset ⇒ Object
37 38 39 40 41 |
# File 'lib/ruby_openrouter/client.rb', line 37 def reset system_msg = @messages.find { |m| m[:role] == "system" } @messages = system_msg ? [system_msg] : [] self end |
#system(content) ⇒ Object
9 10 11 12 13 |
# File 'lib/ruby_openrouter/client.rb', line 9 def system(content) @messages.reject! { |m| m[:role] == "system" } @messages.unshift(role: "system", content: content) self end |
#user(content, &block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/ruby_openrouter/client.rb', line 15 def user(content, &block) @messages << { role: "user", content: content } if block accumulated = "" Http.stream("/chat/completions", body: request_body(stream: true), config: @config) do |chunk| accumulated += chunk block.call(chunk) end @messages << { role: "assistant", content: accumulated } unless accumulated.empty? nil else text = complete @messages << { role: "assistant", content: text } text end end |