ox-ai-workers 1.1.2.12 → 1.1.2.13

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: 704080bc78407750192bb2249b5ef0f5cbeedca9507ddb3baea55be6651e749d
4
- data.tar.gz: 263201940715ffa90b444f578aac5b2506d9a112d848de26e3ebbd312e75add1
3
+ metadata.gz: '05159101c78d6f6cf56d925fab18fd9e1bd0346889be8bbb04d1fe1e29f0f070'
4
+ data.tar.gz: 6ca247c2fa78ef1f1e13a5b6e0c8fffafcad6efaf9ab0f71a162135e03252892
5
5
  SHA512:
6
- metadata.gz: eeaceeba70ed5ce6c628116fc739b100cbb5cead8702f92fb1e55cfa750a012f9b1dd9558870741fbe03f5a66a17388a06e47921609e4ccd0ed6d076c83e1382
7
- data.tar.gz: 2a819f6f7ea6b780796a9b37fc9c19f75cdb49da3797f36972c3d5bca4db118c5b84e11e2bea3befa2d9178d1b5a43cb12ff5bb2074e37c53205f3b68d80f1ff
6
+ metadata.gz: b5aac3e0f145beedd1166ed4844fe8813f6b75fb21ed3b9f9e4353cbe7781a0971a464586e0d9b5e3959d193c7123e3b8472e370257dc643746d6e0250812e31
7
+ data.tar.gz: 35f03218b1f2de4d99741de669736a18c7aff8c7b7e5a25ca4d3f8e414fe9af5f24015248d2bf69f78c18767d006059ab6e609bd564342feca651e4665037106
@@ -76,6 +76,8 @@ module OxAiWorkers
76
76
  @tasks = []
77
77
  @messages = []
78
78
  @call_id = 0
79
+ # Очищаем сообщения в worker, если он существует
80
+ @worker.messages = [] if @worker&.respond_to?(:messages=)
79
81
  complete_iteration
80
82
  end
81
83
 
@@ -121,6 +123,8 @@ module OxAiWorkers
121
123
  # @worker.last_call = nil
122
124
  @worker.call_stack = @call_stack.dup
123
125
  @worker.stop_double_calls = @stop_double_calls
126
+ # Не очищаем сообщения, а сохраняем их в переменной
127
+ current_messages = @worker.messages || []
124
128
  @worker.messages = []
125
129
  @worker.append(role: :system, content: "<role>\n#{@role}\n</role>") if @role.present?
126
130
 
@@ -130,6 +134,8 @@ module OxAiWorkers
130
134
  @tools.each do |tool|
131
135
  @worker.append(role: :user, content: tool.context) if tool.respond_to?(:context) && tool.context.present?
132
136
  end
137
+ # Добавляем сохраненные сообщения обратно, если они не пустые
138
+ @worker.append(messages: current_messages) if current_messages.present?
133
139
  @worker.append(messages: @messages)
134
140
  # @tasks.each { |task| @worker.append(role: :user, content: "<task>\n#{task}\n</task>") }
135
141
  @worker.tools = [function_schemas]
@@ -170,10 +176,13 @@ module OxAiWorkers
170
176
  end
171
177
 
172
178
  def next_iteration
179
+ # Сначала добавляем сообщения из очереди к worker
180
+ @worker.append(messages: @queue)
181
+ # Затем добавляем их к локальным сообщениям
173
182
  @messages += @queue
174
183
  OxAiWorkers.logger.warn "Iterator::Next iteration: #{@messages.count}/#{@queue.count}"
184
+ # И только потом очищаем очередь
175
185
  @queue = []
176
- @worker.append(messages: @messages)
177
186
  request!
178
187
  end
179
188
 
@@ -242,7 +251,7 @@ module OxAiWorkers
242
251
  out:
243
252
  )
244
253
  end
245
- @worker.finish
254
+ @worker.finish_without_cleanup if @worker.respond_to?(:finish_without_cleanup)
246
255
  iterate! if can_iterate?
247
256
  end
248
257
  result = @worker.result || @worker.errors
@@ -254,7 +263,8 @@ module OxAiWorkers
254
263
 
255
264
  def complete_iteration
256
265
  @queue = []
257
- @worker.finish
266
+ # Используем finish_without_cleanup вместо finish
267
+ @worker.finish_without_cleanup if @worker.respond_to?(:finish_without_cleanup)
258
268
  end
259
269
 
260
270
  def add_task(task)
@@ -44,7 +44,7 @@ module OxAiWorkers
44
44
  OxAiWorkers.logger.warn "Request (String)[#{message[:role]}]: #{content.truncate(500)}"
45
45
  elsif content.is_a?(Array)
46
46
  types = content.map do |item|
47
- "#{item[:type]}: #{item[:content]&.truncate(500)} #{item[:input]&.truncate(500)}"
47
+ "#{item[:type]}: #{item[:content]&.truncate(500)}"
48
48
  end.compact.join(', ')
49
49
  OxAiWorkers.logger.warn "Request (Array): [#{types}]"
50
50
  else
@@ -9,6 +9,16 @@ module OxAiWorkers
9
9
  cleanup
10
10
  end
11
11
 
12
+ # Метод для завершения без очистки сообщений
13
+ def finish_without_cleanup
14
+ @custom_id = SecureRandom.uuid
15
+ # Очищаем только результат и ошибки, но не сообщения
16
+ @result = nil
17
+ @errors = nil
18
+ @tool_calls = nil
19
+ @is_truncated = false
20
+ end
21
+
12
22
  def request!
13
23
  response = @model.request(params)
14
24
  parse_choices(response)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OxAiWorkers
4
- VERSION = '1.1.2.12'
4
+ VERSION = '1.1.2.13'
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.1.2.12
4
+ version: 1.1.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Smolev