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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +9 -0
- data/config/locales/en.oxaiworkers.assistant.yml +5 -0
- data/config/locales/en.oxaiworkers.tool.yml +3 -3
- data/config/locales/ru.oxaiworkers.assistant.yml +5 -0
- data/config/locales/ru.oxaiworkers.tool.yml +3 -3
- data/lib/ox-ai-workers.rb +1 -0
- data/lib/oxaiworkers/assistant/expert.rb +38 -0
- data/lib/oxaiworkers/module_request.rb +2 -2
- data/lib/oxaiworkers/tool_definition.rb +4 -0
- data/lib/oxaiworkers/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08d60458411dc13e70f540f8a9bb66a3ba81c56f7fdbd6811a490d369ee40ed5'
|
4
|
+
data.tar.gz: 9ee3658277f4fae153367216c4caca4f7c95335c12b0e13a3a008cb7cae547bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc1cd562389dd943de6778a39fc3382e9f0b81fc6354869ff5ed9ade6df26278cd6d87f9cf240ccca00abba977d09865688ef59ecbe1ea3d07be1b2156cb3c9c
|
7
|
+
data.tar.gz: c9ac89a000577ca59d5b1ae577faf52c0212f746e562664d3c12250c651cd4be547028fd68749b9abf9fb30d35e3dc2ded8b6164564a83df2c405f8267af237d
|
data/CHANGELOG.md
CHANGED
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
|
-
|
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.
|
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: }
|
data/lib/oxaiworkers/version.rb
CHANGED
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.
|
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
|