ox-ai-workers 1.0.2 → 1.0.2.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: 645f1edf77d22df8ca5a9afb6498c2cc3c599531f5ea0875baea83c572f902b6
4
- data.tar.gz: 5ecc6f8ac7de22fe8b46281789afb5a0a6907512077341a42d13c72d2445407a
3
+ metadata.gz: 33177f5c822272383d00d96fadd552db0b966af7ddb2ec494538ca8cace7fadf
4
+ data.tar.gz: e3f756943f16fb8be2823f493156e261eb2d4d02a99d9c0373e8a3ed606c8726
5
5
  SHA512:
6
- metadata.gz: 4e4e6d35f2d930c71aab9463b3cb7a445cf033036d80247b46259366f03c8bde177555ab9b6cadfc101f144e886f621c200236a6d912687c2e1a32da7c8c1fb1
7
- data.tar.gz: a7b60320582364dea278357b4df37435ccb2ea548c7613263c18f78ad2ab20079222ce419753b378b245006f7cc6f508c9842259613ffc5792a19239f7afeb40
6
+ metadata.gz: a64203d85443d9b812c2d36aa0718283fb21fd784043a4d1346ec96a3386bec3766f4ed127d41c1c6f149af7abb4af6241fad089caf72b058037b7bc323b08cb
7
+ data.tar.gz: f0e1ec3b3be53fbe00f31dddc6e16e6a3befb7457d307cbc9906160b02e94bc66d8d18ec1c0095c2e6a53c9d48d4f256515da6ac0ea1ae4bb327ab07fb0772a0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## [1.0.2] - 2025-05-17
2
+
3
+ - Added `openai_whisper` model
4
+ - Added `openai_transcribe` model
5
+ - Added `tool_call_id` for `Iterator`
6
+
1
7
  ## [1.0.1] - 2025-05-13
2
8
 
3
9
  - Property `required` parameter is now `true` by default in `define_function`
data/README.md CHANGED
@@ -409,7 +409,9 @@ class MyTool
409
409
  end
410
410
  ```
411
411
 
412
- The `define_function` method accepts an optional `strict` parameter (defaults to `true`) that controls whether additional properties are allowed in the input. When `strict: true` (default), the schema will include `additionalProperties: false`, enforcing that only defined properties can be used. Tools can also implement a `context` method that returns information to be included in assistant conversations before each request, which is particularly useful when multiple assistants share a common tool to maintain shared state or history.
412
+ The `define_function` method accepts an optional `strict` parameter (defaults to `true`) that controls whether additional properties are allowed in the input. When `strict: true` (default), the schema will include `additionalProperties: false`, enforcing that only defined properties can be used.
413
+
414
+ Tools can also implement a `context` method that returns information to be included in assistant conversations before each request, which is particularly useful when multiple assistants share a common tool to maintain shared state or history.
413
415
 
414
416
  ### Working with Files and Images
415
417
 
data/lib/ox-ai-workers.rb CHANGED
@@ -43,6 +43,7 @@ require_relative 'oxaiworkers/models/openai_max'
43
43
  require_relative 'oxaiworkers/models/openai_mini'
44
44
  require_relative 'oxaiworkers/models/openai_nano'
45
45
  require_relative 'oxaiworkers/models/deepseek_max'
46
+ require_relative 'oxaiworkers/models/openai_whisper'
46
47
 
47
48
  require_relative 'oxaiworkers/models/images_base'
48
49
  require_relative 'oxaiworkers/models/stability_images'
@@ -9,13 +9,14 @@ module OxAiWorkers
9
9
 
10
10
  attr_accessor :worker, :role, :messages, :context, :tools, :queue, :monologue, :tasks,
11
11
  :on_inner_monologue, :on_outer_voice, :on_finish, :def_except, :def_only,
12
- :call_stack, :stop_double_calls
12
+ :call_stack, :stop_double_calls, :call_id
13
13
 
14
14
  def initialize(worker:, role: nil, tools: [], on_inner_monologue: nil, on_outer_voice: nil,
15
15
  on_finish: nil, steps: nil, def_except: [], def_only: nil, locale: nil,
16
16
  call_stack: nil, stop_double_calls: [])
17
17
 
18
18
  @locale = locale || I18n.locale
19
+ @call_id = 0
19
20
 
20
21
  with_locale do
21
22
  define_function :inner_monologue, description: I18n.t('oxaiworkers.iterator.inner_monologue.description') do
@@ -71,6 +72,7 @@ module OxAiWorkers
71
72
  @queue = []
72
73
  @tasks = []
73
74
  @messages = []
75
+ @call_id = 0
74
76
  complete_iteration
75
77
  end
76
78
 
@@ -223,10 +225,16 @@ module OxAiWorkers
223
225
  end.first
224
226
  next if tool.nil?
225
227
 
228
+ @call_id += 1
226
229
  out = tool.send(external_call[:name], **external_call[:args])
227
230
  @queue << { role: :assistant,
228
231
  content: "Tool call #{external_call[:name]} completed." }
229
- @queue << { role: :system, content: "Result: #{out}" } if out.present?
232
+ @queue << if out.present?
233
+ { role: :tool, content: out, tool_call_id: "call_#{@call_id}" }
234
+ else
235
+ { role: :tool, content: "Tool call #{external_call[:name]} successful.",
236
+ tool_call_id: "call_#{@call_id}" }
237
+ end
230
238
  end
231
239
  @worker.finish
232
240
  iterate! if can_iterate?
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OxAiWorkers
4
+ module Models
5
+ class OpenaiWhisper
6
+ def initialize(uri_base: nil, api_key: nil, model: 'whisper-1')
7
+ @api_key = api_key || OxAiWorkers.configuration.access_token_openai
8
+ @uri_base = uri_base
9
+ @client = OpenAI::Client.new(access_token: @api_key, uri_base:)
10
+ @model = model
11
+ end
12
+
13
+ def transcribe(binary:, language: nil)
14
+ response = @client.audio.transcribe(
15
+ parameters: {
16
+ model: @model,
17
+ file: binary,
18
+ language:
19
+ }
20
+ )
21
+ response['text']
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OxAiWorkers
4
- VERSION = '1.0.2'
4
+ VERSION = '1.0.2.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ox-ai-workers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Smolev
@@ -165,6 +165,7 @@ files:
165
165
  - lib/oxaiworkers/models/openai_max.rb
166
166
  - lib/oxaiworkers/models/openai_mini.rb
167
167
  - lib/oxaiworkers/models/openai_nano.rb
168
+ - lib/oxaiworkers/models/openai_whisper.rb
168
169
  - lib/oxaiworkers/models/stability_images.rb
169
170
  - lib/oxaiworkers/module_request.rb
170
171
  - lib/oxaiworkers/present_compat.rb
@@ -206,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
207
  - !ruby/object:Gem::Version
207
208
  version: '0'
208
209
  requirements: []
209
- rubygems_version: 3.6.8
210
+ rubygems_version: 3.6.9
210
211
  specification_version: 4
211
212
  summary: A powerful state machine with OpenAI generative intelligence integration
212
213
  test_files: []