From d3b809197ffe1bf3ce002d252f78146c38150a5a Mon Sep 17 00:00:00 2001 From: Paulo Arruda Date: Mon, 21 Apr 2025 15:25:27 -0300 Subject: [PATCH] support options on completion calls --- lib/ruby_llm/chat.rb | 7 +++++++ lib/ruby_llm/provider.rb | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/ruby_llm/chat.rb b/lib/ruby_llm/chat.rb index 4660ae56..3ed5e172 100644 --- a/lib/ruby_llm/chat.rb +++ b/lib/ruby_llm/chat.rb @@ -25,6 +25,7 @@ def initialize(model: nil, provider: nil, assume_model_exists: false, context: n @temperature = 0.7 @messages = [] @tools = {} + @options = {} @on = { new_message: nil, end_message: nil @@ -80,6 +81,11 @@ def with_temperature(temperature) self end + def with_options(**options) + @options = options + self + end + def on_new_message(&block) @on[:new_message] = block self @@ -102,6 +108,7 @@ def complete(&) # rubocop:disable Metrics/MethodLength temperature: @temperature, model: @model.id, connection: @connection, + options: @options, & ) @on[:end_message]&.call(response) diff --git a/lib/ruby_llm/provider.rb b/lib/ruby_llm/provider.rb index 3a7d156f..48693a1f 100644 --- a/lib/ruby_llm/provider.rb +++ b/lib/ruby_llm/provider.rb @@ -10,14 +10,14 @@ module Provider module Methods extend Streaming - def complete(messages, tools:, temperature:, model:, connection:, &) # rubocop:disable Metrics/MethodLength + def complete(messages, tools:, temperature:, model:, connection:, options: {}, &) # rubocop:disable Metrics/MethodLength normalized_temperature = maybe_normalize_temperature(temperature, model) payload = render_payload(messages, tools: tools, temperature: normalized_temperature, model: model, - stream: block_given?) + stream: block_given?).merge(options) if block_given? stream_response connection, payload, &