aia 0.9.4 → 0.9.6
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/.version +1 -1
- data/CHANGELOG.md +13 -1
- data/README.md +531 -536
- data/images/aia.png +0 -0
- data/lib/aia/chat_processor_service.rb +9 -8
- data/lib/aia/directive_processor.rb +18 -10
- data/lib/aia/ruby_llm_adapter.rb +5 -5
- data/lib/aia/utility.rb +1 -1
- data/lib/aia.rb +5 -1
- data/lib/extensions/ruby_llm/modalities.rb +30 -22
- metadata +34 -5
data/images/aia.png
ADDED
Binary file
|
@@ -94,21 +94,22 @@ module AIA
|
|
94
94
|
|
95
95
|
def determine_operation_type
|
96
96
|
mode = AIA.config.client.model.modalities
|
97
|
-
|
97
|
+
|
98
|
+
if mode.text_to_image?
|
98
99
|
:text_to_image
|
99
|
-
elsif mode.
|
100
|
+
elsif mode.image_to_text?
|
100
101
|
:image_to_text
|
101
|
-
elsif mode.
|
102
|
+
elsif mode.audio_to_text?
|
102
103
|
:audio_to_text
|
103
|
-
elsif mode.
|
104
|
+
elsif mode.text_to_audio?
|
104
105
|
:text_to_audio
|
105
|
-
elsif mode.
|
106
|
+
elsif mode.audio_to_audio?
|
106
107
|
:audio_to_audio
|
107
|
-
elsif mode.
|
108
|
+
elsif mode.image_to_image?
|
108
109
|
:image_to_image
|
109
|
-
elsif mode.
|
110
|
+
elsif mode.audio_to_image?
|
110
111
|
:audio_to_image
|
111
|
-
elsif mode.
|
112
|
+
elsif mode.image_to_audio?
|
112
113
|
:image_to_audio
|
113
114
|
else
|
114
115
|
:text_to_text
|
@@ -299,16 +299,16 @@ module AIA
|
|
299
299
|
desc "All Available models or query on [partial LLM or provider name] Examples: //llms ; //llms openai ; //llms claude"
|
300
300
|
def available_models( args=nil, context_manager=nil)
|
301
301
|
query = args
|
302
|
-
header = "
|
303
|
-
|
304
|
-
if query
|
305
|
-
header += " for #{query.join(' and ')}"
|
306
|
-
end
|
302
|
+
header = "\nAvailable LLMs"
|
303
|
+
header += " for #{query.join(' and ')}" if query
|
307
304
|
|
308
305
|
puts header + ':'
|
306
|
+
puts
|
307
|
+
|
308
|
+
q1 = query.select{|q| q.include?('_to_')}.map{|q| ':'==q[0] ? q[1...] : q}
|
309
|
+
q2 = query.reject{|q| q.include?('_to_')}
|
309
310
|
|
310
|
-
|
311
|
-
q2 = query.select{|q| q.start_with?(':')}
|
311
|
+
counter = 0
|
312
312
|
|
313
313
|
RubyLLM.models.all.each do |llm|
|
314
314
|
inputs = llm.modalities.input.join(',')
|
@@ -316,17 +316,25 @@ module AIA
|
|
316
316
|
entry = "- #{llm.id} (#{llm.provider}) #{inputs} to #{outputs}"
|
317
317
|
|
318
318
|
if query.nil? || query.empty?
|
319
|
+
counter += 1
|
319
320
|
puts entry
|
320
321
|
next
|
321
322
|
end
|
322
323
|
|
323
324
|
show_it = true
|
324
|
-
q1.each{|q| show_it &&=
|
325
|
-
q2.each{|q| show_it &&=
|
325
|
+
q1.each{|q| show_it &&= llm.modalities.send("#{q}?")}
|
326
|
+
q2.each{|q| show_it &&= entry.include?(q)}
|
326
327
|
|
327
|
-
|
328
|
+
if show_it
|
329
|
+
counter += 1
|
330
|
+
puts entry
|
331
|
+
end
|
328
332
|
end
|
329
333
|
|
334
|
+
puts if counter > 0
|
335
|
+
puts "#{counter} LLMs matching your query"
|
336
|
+
puts
|
337
|
+
|
330
338
|
""
|
331
339
|
end
|
332
340
|
alias_method :am, :available_models
|
data/lib/aia/ruby_llm_adapter.rb
CHANGED
@@ -96,17 +96,17 @@ module AIA
|
|
96
96
|
modes = @chat.model.modalities
|
97
97
|
|
98
98
|
# TODO: Need to consider how to handle multi-mode models
|
99
|
-
if modes.
|
99
|
+
if modes.text_to_text?
|
100
100
|
text_to_text(prompt)
|
101
101
|
|
102
|
-
elsif modes.
|
102
|
+
elsif modes.image_to_text?
|
103
103
|
image_to_text(prompt)
|
104
|
-
elsif modes.
|
104
|
+
elsif modes.text_to_image?
|
105
105
|
text_to_image(prompt)
|
106
106
|
|
107
|
-
elsif modes.
|
107
|
+
elsif modes.text_to_audio?
|
108
108
|
text_to_audio(prompt)
|
109
|
-
elsif modes.
|
109
|
+
elsif modes.audio_to_text?
|
110
110
|
audio_to_text(prompt)
|
111
111
|
|
112
112
|
else
|
data/lib/aia/utility.rb
CHANGED
@@ -21,7 +21,7 @@ module AIA
|
|
21
21
|
(O) using #{AIA.config.adapter} (v#{RubyLLM::VERSION})
|
22
22
|
__||__ \\) model db was last refreshed on
|
23
23
|
[/______\\] / #{AIA.config.last_refresh}
|
24
|
-
/ \\__AI__/ \\/ #{AIA.config.tool_paths.empty? ? '
|
24
|
+
/ \\__AI__/ \\/ #{AIA.config.tool_paths.empty? ? 'You can share my tools' : 'I will also use your tools'}
|
25
25
|
/ /__\\
|
26
26
|
(\\ /____\\ #{AIA.config.tool_paths.empty? ? '' : 'My Toolbox contains:'}
|
27
27
|
ROBOT
|
data/lib/aia.rb
CHANGED
@@ -5,15 +5,19 @@
|
|
5
5
|
# provides an interface for interacting with AI models and managing prompts.
|
6
6
|
|
7
7
|
require 'ruby_llm'
|
8
|
+
require 'ruby_llm/mcp'
|
9
|
+
require 'shared_tools'
|
10
|
+
require 'shared_tools/ruby_llm'
|
8
11
|
require 'prompt_manager'
|
9
12
|
|
13
|
+
|
10
14
|
require 'debug_me'
|
11
15
|
include DebugMe
|
12
16
|
$DEBUG_ME = false
|
13
17
|
DebugMeDefaultOptions[:skip1] = true
|
14
18
|
|
15
19
|
require_relative 'extensions/openstruct_merge' # adds self.merge self.get_value
|
16
|
-
require_relative 'extensions/ruby_llm/modalities' # adds model.modalities.
|
20
|
+
require_relative 'extensions/ruby_llm/modalities' # adds model.modalities.text_to_text? etc.
|
17
21
|
|
18
22
|
require_relative 'refinements/string.rb' # adds #include_any? #include_all?
|
19
23
|
|
@@ -1,26 +1,34 @@
|
|
1
1
|
# lib/extensions/ruby_llm/modalities.rb
|
2
|
-
# A models "modes" are often expressed in terms like:
|
3
|
-
# text-to-text
|
4
|
-
# text_to_audio
|
5
|
-
# audio to image
|
6
|
-
# image2image
|
7
|
-
# This new supports? method tests the models modalities against
|
8
|
-
# these common expressions
|
9
2
|
|
10
3
|
class RubyLLM::Model::Modalities
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
4
|
+
#
|
5
|
+
def text_to_text? = input.include?('text') && output.include?('text')
|
6
|
+
def text_to_embeddings? = input.include?('text') && output.include?('embeddings')
|
7
|
+
def text_to_audio? = input.include?('text') && output.include?('audio')
|
8
|
+
def text_to_image? = input.include?('text') && output.include?('image')
|
9
|
+
def text_to_moderation? = input.include?('text') && output.include?('moderation')
|
10
|
+
#
|
11
|
+
def image_to_text? = input.include?('image') && output.include?('text')
|
12
|
+
def image_to_embeddings? = input.include?('image') && output.include?('embeddings')
|
13
|
+
def image_to_audio? = input.include?('image') && output.include?('audio')
|
14
|
+
def image_to_image? = input.include?('image') && output.include?('image')
|
15
|
+
def image_to_moderation? = input.include?('image') && output.include?('moderation')
|
16
|
+
#
|
17
|
+
def pdf_to_text? = input.include?('pdf') && output.include?('text')
|
18
|
+
def pdf_to_embeddings? = input.include?('pdf') && output.include?('embeddings')
|
19
|
+
def pdf_to_audio? = input.include?('pdf') && output.include?('audio')
|
20
|
+
def pdf_to_image? = input.include?('pdf') && output.include?('image')
|
21
|
+
def pdf_to_moderation? = input.include?('pdf') && output.include?('moderation')
|
22
|
+
#
|
23
|
+
def audio_to_text? = input.include?('audio') && output.include?('text')
|
24
|
+
def audio_to_embeddings? = input.include?('audio') && output.include?('embeddings')
|
25
|
+
def audio_to_audio? = input.include?('audio') && output.include?('audio')
|
26
|
+
def audio_to_image? = input.include?('audio') && output.include?('image')
|
27
|
+
def audio_to_moderation? = input.include?('audio') && output.include?('moderation')
|
28
|
+
#
|
29
|
+
def file_to_text? = input.include?('file') && output.include?('text')
|
30
|
+
def file_to_embeddings? = input.include?('file') && output.include?('embeddings')
|
31
|
+
def file_to_audio? = input.include?('file') && output.include?('audio')
|
32
|
+
def file_to_image? = input.include?('file') && output.include?('image')
|
33
|
+
def file_to_moderation? = input.include?('file') && output.include?('moderation')
|
26
34
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dewayne VanHoozer
|
@@ -43,28 +43,42 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0.5.
|
46
|
+
version: 0.5.6
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.5.
|
53
|
+
version: 0.5.6
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
55
|
name: ruby_llm
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 1.3.
|
60
|
+
version: 1.3.1
|
61
61
|
type: :runtime
|
62
62
|
prerelease: false
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: 1.3.
|
67
|
+
version: 1.3.1
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: ruby_llm-mcp
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
type: :runtime
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
68
82
|
- !ruby/object:Gem::Dependency
|
69
83
|
name: reline
|
70
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -79,6 +93,20 @@ dependencies:
|
|
79
93
|
- - ">="
|
80
94
|
- !ruby/object:Gem::Version
|
81
95
|
version: '0'
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: shared_tools
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
type: :runtime
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
82
110
|
- !ruby/object:Gem::Dependency
|
83
111
|
name: shellwords
|
84
112
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,6 +320,7 @@ files:
|
|
292
320
|
- examples/tools/list_files.rb
|
293
321
|
- examples/tools/read_file.rb
|
294
322
|
- examples/tools/run_shell_command.rb
|
323
|
+
- images/aia.png
|
295
324
|
- justfile
|
296
325
|
- lib/aia.rb
|
297
326
|
- lib/aia/aia_completion.bash
|