raix 0.5 → 0.6

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: 7537dc5f13d858d6fdd7e5fcdeb60e1d5fd99e0f2aa84e618096f959f2c44ed1
4
- data.tar.gz: 8af2e5eb06b2fdaf2c4da8e9b9df28750c6c449d63e5eec25478d61068de2742
3
+ metadata.gz: 4bb905086f308c10375b54337b9cb4effe9387ed7e7a6a0dd84875176984e29c
4
+ data.tar.gz: dbc3b0d67aa91d8dc9b8ba9504b84d52617529c2a8e69fd0d21f3ad4e59df31d
5
5
  SHA512:
6
- metadata.gz: a76e3c1ac764735f05b603c83f6410c5d83274e0d8ef5b80e6a08dfb4ca2338ed324b14db3b4383399ebbd9a88d76615deed4ad8533592ac3dee2ccc84f1ab6d
7
- data.tar.gz: c4c89a3d2feac21a80dd1be7f4c0626f48a09756af55b0f38dd0abc769ec4cdb989ae210baabcbbb896f869ec79dd1e26454cecd5df28ee3ff016661d612e7c3
6
+ metadata.gz: cbbaebe7bd8d18d2cd82b41b7a4bcf468eda1483485b2a707ff980d51068dea1e9ef5e20510dc7dd46bf1982fc7db14054399919842a28930cb12e37fa016022
7
+ data.tar.gz: 61037ede25456a15053e96dc1bae11125a9d3e0d5dc08e255087c9b69a2c4d096fc2e95d27f600a955bd93b421d8ed703b7c7b0df8de35812b82dbf9f0818858
data/.rubocop.yml CHANGED
@@ -30,3 +30,6 @@ Metrics/CyclomaticComplexity:
30
30
 
31
31
  Metrics/PerceivedComplexity:
32
32
  Enabled: false
33
+
34
+ Metrics/ParameterLists:
35
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.6.0] - 2024-11-12
4
+ - adds `save_response` option to `chat_completion` to control transcript updates
5
+ - fixes potential race conditions in transcript handling
6
+
3
7
  ## [0.1.0] - 2024-04-03
4
8
 
5
9
  - Initial release, placeholder gem
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- raix (0.5)
4
+ raix (0.6)
5
5
  activesupport (>= 6.0)
6
6
  open_router (~> 0.2)
7
7
  ruby-openai (~> 7.0)
@@ -44,7 +44,7 @@ module Raix
44
44
  # @option params [Boolean] :openai (false) Whether to use OpenAI's API instead of OpenRouter's.
45
45
  # @option params [Boolean] :raw (false) Whether to return the raw response or dig the text content.
46
46
  # @return [String|Hash] The completed chat response.
47
- def chat_completion(params: {}, loop: false, json: false, raw: false, openai: false)
47
+ def chat_completion(params: {}, loop: false, json: false, raw: false, openai: false, save_response: true)
48
48
  # set params to default values if not provided
49
49
  params[:cache_at] ||= cache_at.presence
50
50
  params[:frequency_penalty] ||= frequency_penalty.presence
@@ -84,7 +84,10 @@ module Raix
84
84
  self.model ||= Raix.configuration.model
85
85
 
86
86
  adapter = MessageAdapters::Base.new(self)
87
- messages = transcript.flatten.compact.map { |msg| adapter.transform(msg) }
87
+
88
+ # duplicate the transcript to avoid race conditions in situations where
89
+ # chat_completion is called multiple times in parallel
90
+ messages = transcript.flatten.compact.map { |msg| adapter.transform(msg) }.dup
88
91
  raise "Can't complete an empty transcript" if messages.blank?
89
92
 
90
93
  begin
@@ -119,6 +122,9 @@ module Raix
119
122
 
120
123
  response.tap do |res|
121
124
  content = res.dig("choices", 0, "message", "content")
125
+
126
+ transcript << { assistant: content } if save_response
127
+
122
128
  if json
123
129
  content = content.squish
124
130
  return JSON.parse(content)
data/lib/raix/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Raix
4
- VERSION = "0.5"
4
+ VERSION = "0.6"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raix
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Obie Fernandez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-10 00:00:00.000000000 Z
11
+ date: 2025-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport