ox-ai-workers 0.9.9 → 1.0.0

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: 9fde2ab33d3d1b89a4b351ff58f6c9f4d85c9d667770d6d258e5ee8215655666
4
- data.tar.gz: dbbd0c85cf70948b8c92342e3b57804bf0b62828a5276b29650e66a79ac34742
3
+ metadata.gz: '08d60458411dc13e70f540f8a9bb66a3ba81c56f7fdbd6811a490d369ee40ed5'
4
+ data.tar.gz: 9ee3658277f4fae153367216c4caca4f7c95335c12b0e13a3a008cb7cae547bf
5
5
  SHA512:
6
- metadata.gz: a6b1b2e7494c478266ba2044db4545006a28d2d7be61eeb62309b40eb360f8b5eed41672657c0e5b87c5efb0d2424572b5618df128b093f1e58b4eee9e49ea29
7
- data.tar.gz: '00697510a6c17ce5a98b9460b4446fece185a5f618286e18c7ae28907d3c7ddaa17a480648342dd947a73373bb61a7fa34353b967e22449f8acd7812e4ead33e'
6
+ metadata.gz: bc1cd562389dd943de6778a39fc3382e9f0b81fc6354869ff5ed9ade6df26278cd6d87f9cf240ccca00abba977d09865688ef59ecbe1ea3d07be1b2156cb3c9c
7
+ data.tar.gz: c9ac89a000577ca59d5b1ae577faf52c0212f746e562664d3c12250c651cd4be547028fd68749b9abf9fb30d35e3dc2ded8b6164564a83df2c405f8267af237d
data/CHANGELOG.md CHANGED
@@ -1,8 +1,12 @@
1
+ ## [1.0.0] - 2025-05-12
2
+
3
+ - Final version for 1.0.0 release
1
4
 
2
5
  ## [0.9.9] - 2025-05-12
3
6
 
4
7
  - Added `strict` parameter for `define_function`
5
8
  - Added `Wolfram` tool
9
+ - Added `Expert` assistant
6
10
 
7
11
  ## [0.9.6] - 2025-05-10
8
12
 
data/README.md CHANGED
@@ -529,6 +529,15 @@ OxAiWorkers provides several specialized assistant types:
529
529
  painter.task = "Create an image of a sunset over mountains"
530
530
  ```
531
531
 
532
+ - **Expert**: Mathematical and scientific problem solving using Wolfram Alpha
533
+
534
+ ```ruby
535
+ expert = OxAiWorkers::Assistant::Expert.new
536
+ # or with optional location parameter for location-aware queries
537
+ # expert = OxAiWorkers::Assistant::Expert.new(location: 'Berlin')
538
+ expert.task = "Calculate the derivative of x^3 + 5x^2 + 2x + 1"
539
+ ```
540
+
532
541
  - **Orchestrator**: Coordinates multiple assistants to work together on complex tasks
533
542
 
534
543
  ```ruby
@@ -43,3 +43,8 @@ en:
43
43
  description: "Creates and modifies images based on descriptions"
44
44
  capabilities: "image generation, image editing, style adaptation, visual concept creation"
45
45
  role: "You are an experienced digital artist who creates and modifies images based on descriptions. Your task is to generate visually appealing and accurate representations of concepts and ideas. Improve the user's prompt, add details that will help get a more accurate result."
46
+ expert:
47
+ title: "Expert"
48
+ description: "Provides accurate answers based on Wolfram|Alpha data"
49
+ capabilities: "mathematical calculations, factual information, scientific data, statistical analysis, interactive visualizations, charts and graphs, referenced data sources, formula visualization, educational examples, comparative analysis"
50
+ role: "You are an expert assistant who provides accurate answers based on data from Wolfram|Alpha. Your task is to deliver precise information and solve complex problems using reliable computational knowledge. You can generate and share relevant visualizations, charts, and graphs to illustrate concepts clearly. You have access to a vast database of factual information across mathematics, science, engineering, economics, statistics, cultural knowledge, and more. When appropriate, you should include visual representations to enhance understanding and provide links to relevant supplementary material."
@@ -47,6 +47,6 @@ en:
47
47
  file_name: 'File name for saving the generated image in png format. For example: image.png'
48
48
  wolfram_alpha:
49
49
  ask:
50
- description: 'Wolfram Alpha Tool: Query the Wolfram Alpha computational knowledge engine'
51
- prompt: 'The query to send to Wolfram Alpha'
52
- location: 'Location information to provide context for the query'
50
+ description: 'Wolfram Alpha Tool: Query the Wolfram Alpha computational knowledge engine. The function allows you to get up-to-date data from various fields of knowledge (economics, finance, weather, climate, astronomy, space, transport, law, sports).'
51
+ prompt: 'The query to send to Wolfram Alpha on **English language**'
52
+ location: 'Location information to provide context for the query on **English language**. For example: Berlin, Germany'
@@ -43,3 +43,8 @@ ru:
43
43
  description: "Создает и изменяет изображения на основе описаний"
44
44
  capabilities: "генерация изображений, редактирование изображений, адаптация стиля, создание визуальных концепций"
45
45
  role: "Ты опытный цифровой художник, который создает и изменяет изображения на основе описаний. Твоя задача - генерировать визуально привлекательные и точные представления концепций и идей. Улучши запрос пользователя, добавь в него детали, которые помогут получить более точный результат."
46
+ expert:
47
+ title: "Эксперт"
48
+ description: "Предоставляет точные ответы на основе данных из Wolfram|Alpha"
49
+ capabilities: "математические вычисления, фактическая информация, научные данные, статистический анализ, интерактивные визуализации, диаграммы и графики, ссылки на источники данных, визуализация формул, образовательные примеры, сравнительный анализ"
50
+ role: "Ты эксперт, который предоставляет точные ответы на основе данных из Wolfram|Alpha. Твоя задача - предоставлять точную информацию и решать сложные задачи, используя надёжные вычислительные знания. Ты можешь генерировать и делиться соответствующими визуализациями, диаграммами и графиками для наглядной иллюстрации концепций. У тебя есть доступ к обширной базе фактической информации по математике, науке, инженерии, экономике, статистике, культурным знаниям и многому другому. Когда это уместно, ты должен включать визуальные представления для улучшения понимания и предоставлять ссылки на соответствующие дополнительные материалы."
@@ -51,6 +51,6 @@ ru:
51
51
  prompt: 'Текстовое описание действий для редактирования изображения'
52
52
  wolfram_alpha:
53
53
  ask:
54
- description: 'Инструмент Wolfram Alpha: Запрос к вычислительной базе знаний Wolfram Alpha'
55
- prompt: 'Запрос для отправки в Wolfram Alpha'
56
- location: 'Информация о местоположении для контекста запроса'
54
+ description: 'Инструмент Wolfram Alpha: Запрос к вычислительной базе знаний Wolfram Alpha. Функция позволяет получать актуальные данные из различных областей знаний (экономика, финансы, погода, климат, астрономия, космос, транспорт, право, спорт).'
55
+ prompt: 'Запрос для отправки в Wolfram Alpha на **английском** языке'
56
+ location: 'Информация о местоположении для контекста запроса на **английском** языке. Например: Moscow, Russia'
data/lib/ox-ai-workers.rb CHANGED
@@ -36,6 +36,7 @@ require_relative 'oxaiworkers/assistant/coder'
36
36
  require_relative 'oxaiworkers/assistant/localizer'
37
37
  require_relative 'oxaiworkers/assistant/orchestrator'
38
38
  require_relative 'oxaiworkers/assistant/painter'
39
+ require_relative 'oxaiworkers/assistant/expert'
39
40
 
40
41
  require_relative 'oxaiworkers/models/llm_base'
41
42
  require_relative 'oxaiworkers/models/openai_max'
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OxAiWorkers
4
+ module Assistant
5
+ class Expert
6
+ include OxAiWorkers::Assistant::ModuleBase
7
+
8
+ def initialize(delayed: false, model: nil, location: nil)
9
+ store_locale
10
+
11
+ with_locale do
12
+ @id = 'expert'
13
+ @role = I18n.t('oxaiworkers.assistant.expert.role')
14
+ @description = I18n.t('oxaiworkers.assistant.expert.description')
15
+ @capabilities = I18n.t('oxaiworkers.assistant.expert.capabilities').split(',').map(&:strip)
16
+ @title = I18n.t('oxaiworkers.assistant.expert.title')
17
+ end
18
+
19
+ worker = init_worker(delayed:, model:)
20
+ tool = Tool::Wolfram.new(location:)
21
+
22
+ @iterator = Iterator.new(
23
+ worker:,
24
+ role: @role,
25
+ tools: [tool],
26
+ call_stack: [
27
+ OxAiWorkers::Iterator.full_function_name(:inner_monologue),
28
+ tool.full_function_name(:ask),
29
+ OxAiWorkers::Iterator.full_function_name(:outer_voice)
30
+ ],
31
+ locale: @locale,
32
+ on_inner_monologue: ->(text:) { puts "monologue: #{text}".colorize(:yellow) },
33
+ on_outer_voice: ->(text:) { puts "voice: #{text}".colorize(:green) }
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
@@ -58,7 +58,7 @@ module OxAiWorkers
58
58
  tool_name = f[:function][:name]
59
59
  tool_name == @last_call && @stop_double_calls.include?(tool_name)
60
60
  end
61
- OxAiWorkers.logger.info("tools: #{parameters[:tools]} last_call=#{@last_call} stop_double_calls=#{@stop_double_calls}", for: self.class)
61
+
62
62
  if @call_stack&.any?
63
63
  func1 = @call_stack.first
64
64
  @call_stack = @call_stack.drop(1)
@@ -141,7 +141,7 @@ module OxAiWorkers
141
141
  # Skipping for now, as partial args are likely useless.
142
142
  next
143
143
  end
144
- OxAiWorkers.logger.info("function: #{function.inspect}", for: self.class)
144
+ OxAiWorkers.logger.debug("function: #{function.inspect}", for: self.class)
145
145
  # Accumulate parsed tool calls
146
146
  next if function['name'].empty?
147
147
 
@@ -115,6 +115,10 @@ module OxAiWorkers
115
115
  raise ArgumentError,
116
116
  'Function parameters must have at least one property defined within it, if a block is provided'
117
117
  end
118
+ else
119
+ # Create an empty parameters object with additionalProperties: false when strict is true
120
+ parameters = { type: 'object', properties: {} }
121
+ parameters[:additionalProperties] = false if strict
118
122
  end
119
123
 
120
124
  function_params = { name:, description:, parameters: }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OxAiWorkers
4
- VERSION = '0.9.9'
4
+ VERSION = '1.0.0'
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: 0.9.9
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Smolev
@@ -143,6 +143,7 @@ files:
143
143
  - exe/start
144
144
  - lib/ox-ai-workers.rb
145
145
  - lib/oxaiworkers/assistant/coder.rb
146
+ - lib/oxaiworkers/assistant/expert.rb
146
147
  - lib/oxaiworkers/assistant/localizer.rb
147
148
  - lib/oxaiworkers/assistant/module_base.rb
148
149
  - lib/oxaiworkers/assistant/orchestrator.rb