ox-ai-workers 1.1.2.11 → 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: 63d9ca70771dbbec0b74012de87f34ffe91ab276c7de091cb3549faf6e392cf8
4
- data.tar.gz: 2398e642b2f629bb27e58c3bf30ac3413c0bf71c975846bea9fa79b227b2c875
3
+ metadata.gz: '05159101c78d6f6cf56d925fab18fd9e1bd0346889be8bbb04d1fe1e29f0f070'
4
+ data.tar.gz: 6ca247c2fa78ef1f1e13a5b6e0c8fffafcad6efaf9ab0f71a162135e03252892
5
5
  SHA512:
6
- metadata.gz: 9cd61338687ef76e06ac571c301f5cdd526d9fbc4f44076a824e3b36a9dd329a121a6ca801db8e4a35c1394af5aa7dcce3efc7977c5149f725408962a882e696
7
- data.tar.gz: 63f512d56319f96a5a4e86b300ca5cfcc76ed0b4c6ae0f6267a3053ba95bb9aa6be580dac3ab2927fec257354435e2329e73ba9ba57b3bbccaed038d1e75db8e
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
 
@@ -91,7 +93,7 @@ module OxAiWorkers
91
93
  else
92
94
  OxAiWorkers.logger.warn "Iterator::inner_monologue is not available: #{speach}"
93
95
  end
94
- nil
96
+ speach
95
97
  end
96
98
 
97
99
  def outer_voice(text:)
@@ -103,7 +105,7 @@ module OxAiWorkers
103
105
  inner_monologue(speach: text)
104
106
  end
105
107
 
106
- nil
108
+ text
107
109
  end
108
110
 
109
111
  def finish_it
@@ -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,9 +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
183
+ OxAiWorkers.logger.warn "Iterator::Next iteration: #{@messages.count}/#{@queue.count}"
184
+ # И только потом очищаем очередь
174
185
  @queue = []
175
- @worker.append(messages: @messages)
176
186
  request!
177
187
  end
178
188
 
@@ -241,17 +251,20 @@ module OxAiWorkers
241
251
  out:
242
252
  )
243
253
  end
244
- @worker.finish
254
+ @worker.finish_without_cleanup if @worker.respond_to?(:finish_without_cleanup)
245
255
  iterate! if can_iterate?
246
256
  end
247
257
  result = @worker.result || @worker.errors
248
- OxAiWorkers.logger.warn "Iterator::No tool calls: #{result}"
249
- outer_voice text: result if result.present?
258
+ if result.present?
259
+ OxAiWorkers.logger.warn "Iterator::No tool calls: #{result}"
260
+ outer_voice text: result
261
+ end
250
262
  end
251
263
 
252
264
  def complete_iteration
253
265
  @queue = []
254
- @worker.finish
266
+ # Используем finish_without_cleanup вместо finish
267
+ @worker.finish_without_cleanup if @worker.respond_to?(:finish_without_cleanup)
255
268
  end
256
269
 
257
270
  def add_task(task)
@@ -63,7 +63,7 @@ module OxAiWorkers
63
63
  {
64
64
  type: 'tool_result',
65
65
  tool_use_id: "call_#{call_id}",
66
- content: out.present? ? out : "Tool call #{name} successful."
66
+ content: out.present? ? out : "Successful"
67
67
  }
68
68
  ]
69
69
  }
@@ -41,12 +41,14 @@ module OxAiWorkers
41
41
  @messages.each do |message|
42
42
  content = message[:content]
43
43
  if content.is_a?(String)
44
- OxAiWorkers.logger.info "Request (String): #{content.truncate(500)}"
44
+ OxAiWorkers.logger.warn "Request (String)[#{message[:role]}]: #{content.truncate(500)}"
45
45
  elsif content.is_a?(Array)
46
- types = content.map { |item| "#{item[:type]}: #{item[:content]&.truncate(500)}" }.compact.join(', ')
47
- OxAiWorkers.logger.info "Request (Array): [#{types}]"
46
+ types = content.map do |item|
47
+ "#{item[:type]}: #{item[:content]&.truncate(500)}"
48
+ end.compact.join(', ')
49
+ OxAiWorkers.logger.warn "Request (Array): [#{types}]"
48
50
  else
49
- OxAiWorkers.logger.info "Request (Other): #{message.inspect}"
51
+ OxAiWorkers.logger.warn "Request (Other): #{message.inspect}"
50
52
  end
51
53
  end
52
54
 
@@ -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.11'
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.11
4
+ version: 1.1.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Smolev