intelligence 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/intelligence.gemspec +1 -1
  3. data/lib/intelligence/adapter/base.rb +15 -2
  4. data/lib/intelligence/adapter/class_methods/construction.rb +17 -0
  5. data/lib/intelligence/adapter/module_methods/construction.rb +43 -0
  6. data/lib/intelligence/adapter.rb +2 -2
  7. data/lib/intelligence/adapters/anthropic/adapter.rb +4 -15
  8. data/lib/intelligence/adapters/anthropic/chat_methods.rb +9 -8
  9. data/lib/intelligence/adapters/cerebras.rb +3 -3
  10. data/lib/intelligence/adapters/generic/adapter.rb +1 -12
  11. data/lib/intelligence/adapters/generic/chat_methods.rb +34 -10
  12. data/lib/intelligence/adapters/google/adapter.rb +2 -15
  13. data/lib/intelligence/adapters/google/chat_methods.rb +68 -21
  14. data/lib/intelligence/adapters/groq.rb +20 -1
  15. data/lib/intelligence/adapters/hyperbolic.rb +1 -1
  16. data/lib/intelligence/adapters/legacy/adapter.rb +0 -2
  17. data/lib/intelligence/adapters/legacy/chat_methods.rb +23 -6
  18. data/lib/intelligence/adapters/mistral.rb +57 -0
  19. data/lib/intelligence/adapters/open_ai/adapter.rb +2 -16
  20. data/lib/intelligence/adapters/open_ai/chat_methods.rb +39 -8
  21. data/lib/intelligence/adapters/open_router.rb +62 -0
  22. data/lib/intelligence/adapters/samba_nova.rb +1 -1
  23. data/lib/intelligence/adapters/together_ai.rb +1 -1
  24. data/lib/intelligence/chat_request.rb +57 -7
  25. data/lib/intelligence/chat_result.rb +4 -0
  26. data/lib/intelligence/chat_result_choice.rb +4 -2
  27. data/lib/intelligence/conversation.rb +37 -9
  28. data/lib/intelligence/message.rb +90 -23
  29. data/lib/intelligence/message_content/base.rb +10 -0
  30. data/lib/intelligence/message_content/binary.rb +6 -0
  31. data/lib/intelligence/message_content/file.rb +35 -0
  32. data/lib/intelligence/message_content/text.rb +5 -0
  33. data/lib/intelligence/message_content/tool_call.rb +8 -1
  34. data/lib/intelligence/message_content/tool_result.rb +8 -1
  35. data/lib/intelligence/message_content.rb +12 -3
  36. data/lib/intelligence/version.rb +1 -1
  37. data/lib/intelligence.rb +4 -3
  38. metadata +9 -5
  39. data/lib/intelligence/adapter/construction_methods.rb +0 -37
@@ -4,11 +4,20 @@ end
4
4
 
5
5
  module Intelligence
6
6
  module MessageContent
7
-
8
- def self.build( type, attributes )
7
+
8
+ def self.[]( type )
9
9
  type_name = type.to_s.split( '_' ).map { | word | word.capitalize }.join
10
10
  klass = Intelligence.const_get( "MessageContent::#{type_name}" ) rescue nil
11
- klass.nil? ? nil : klass.new( attributes )
11
+ raise TypeError, "An unknown content type '#{type}' was given." unless klass
12
+ klass
13
+ end
14
+
15
+ def self.build!( type, attributes = nil, &block )
16
+ self[ type ].build!( attributes, &block )
17
+ end
18
+
19
+ def self.build( type, attributes = nil, &block )
20
+ self[ type ].build( attributes, &block )
12
21
  end
13
22
 
14
23
  end
@@ -1,3 +1,3 @@
1
1
  module Intelligence
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
data/lib/intelligence.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'base64'
2
3
 
3
4
  require 'faraday'
4
5
  require 'adaptive_configuration'
@@ -11,14 +12,14 @@ require 'intelligence/adapter_error'
11
12
  require 'intelligence/unsupported_content_error'
12
13
 
13
14
  require 'intelligence/error_result'
15
+ require 'intelligence/chat_error_result'
14
16
 
15
- require 'intelligence/conversation'
16
- require 'intelligence/message'
17
17
  require 'intelligence/message_content'
18
+ require 'intelligence/message'
19
+ require 'intelligence/conversation'
18
20
  require 'intelligence/adapter'
19
21
  require 'intelligence/chat_request'
20
22
  require 'intelligence/chat_result'
21
23
  require 'intelligence/chat_result_choice'
22
24
  require 'intelligence/chat_metrics'
23
- require 'intelligence/chat_error_result'
24
25
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intelligence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kristoph Cichocki-Romanov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-08 00:00:00.000000000 Z
11
+ date: 2024-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0.beta01
33
+ version: 1.0.0.beta08
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0.beta01
40
+ version: 1.0.0.beta08
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mime-types
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -112,7 +112,8 @@ files:
112
112
  - lib/intelligence.rb
113
113
  - lib/intelligence/adapter.rb
114
114
  - lib/intelligence/adapter/base.rb
115
- - lib/intelligence/adapter/construction_methods.rb
115
+ - lib/intelligence/adapter/class_methods/construction.rb
116
+ - lib/intelligence/adapter/module_methods/construction.rb
116
117
  - lib/intelligence/adapter_error.rb
117
118
  - lib/intelligence/adapters/anthropic.rb
118
119
  - lib/intelligence/adapters/anthropic/adapter.rb
@@ -128,9 +129,11 @@ files:
128
129
  - lib/intelligence/adapters/hyperbolic.rb
129
130
  - lib/intelligence/adapters/legacy/adapter.rb
130
131
  - lib/intelligence/adapters/legacy/chat_methods.rb
132
+ - lib/intelligence/adapters/mistral.rb
131
133
  - lib/intelligence/adapters/open_ai.rb
132
134
  - lib/intelligence/adapters/open_ai/adapter.rb
133
135
  - lib/intelligence/adapters/open_ai/chat_methods.rb
136
+ - lib/intelligence/adapters/open_router.rb
134
137
  - lib/intelligence/adapters/samba_nova.rb
135
138
  - lib/intelligence/adapters/together_ai.rb
136
139
  - lib/intelligence/chat_error_result.rb
@@ -146,6 +149,7 @@ files:
146
149
  - lib/intelligence/message_content.rb
147
150
  - lib/intelligence/message_content/base.rb
148
151
  - lib/intelligence/message_content/binary.rb
152
+ - lib/intelligence/message_content/file.rb
149
153
  - lib/intelligence/message_content/text.rb
150
154
  - lib/intelligence/message_content/tool_call.rb
151
155
  - lib/intelligence/message_content/tool_result.rb
@@ -1,37 +0,0 @@
1
- module Intelligence
2
- module Adapter
3
- module ConstructionMethods
4
-
5
- def []( adapter_type )
6
-
7
- raise ArgumentError.new( "An adapter type is required but nil was given." ) \
8
- if adapter_type.nil?
9
-
10
- class_name = adapter_type.to_s.split( '_' ).map( &:capitalize ).join
11
- class_name += "::Adapter"
12
-
13
- adapter_class = Intelligence.const_get( class_name ) rescue nil
14
- if adapter_class.nil?
15
- adapter_file = File.expand_path( "../../adapters/#{adapter_type}", __FILE__ )
16
- unless require adapter_file
17
- raise ArgumentError.new(
18
- "The Intelligence adapter file #{adapter_file} is missing or does not define #{class_name}."
19
- )
20
- end
21
- adapter_class = Intelligence.const_get( class_name ) rescue nil
22
- end
23
-
24
- raise ArgumentError.new( "An unknown Intelligence adapter #{adapter_type} was configured." ) \
25
- if adapter_class.nil?
26
-
27
- adapter_class
28
-
29
- end
30
-
31
- def build( adapter_type, attributes, &block )
32
- self.[]( adapter_type ).new( attributes, &block )
33
- end
34
-
35
- end
36
- end
37
- end