intelli_agent 0.2.13 → 0.2.14
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0316292d323a05a6e573a22aedb01706c5f5e2458acf33cbb59393a3821ee3ef'
|
4
|
+
data.tar.gz: c77fb697c72ce71ca89ee866f10e7d3c4fbd1f39719f6f95742dd9c130edbb22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a235150a5f8790a7662c1d72bb2f644c3da98d2d16ce13eb1337873221efd8fa1d871eea38828f6d942329e66b0afabc94b2d617ae4decc2d10609f296764999
|
7
|
+
data.tar.gz: 3d002f5c352348ba7e975f229f8f3831d3ee8875b82749b14ff31eb4c58f85b6c178c73e716abe872acc2d646a15a906d7158d477e0045016f74ba0a3c2b0a81
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -1,5 +1,4 @@
|
|
1
1
|
class IntelliAgent::OpenAI::Messages < Array
|
2
|
-
# VALID_ROLES = %i[system user assistant function tool].freeze
|
3
2
|
|
4
3
|
def initialize messages = nil
|
5
4
|
super parse_messages(messages)
|
@@ -22,6 +21,9 @@ Important note: the content can be either a string or an array.
|
|
22
21
|
return [] if messages.nil?
|
23
22
|
|
24
23
|
messages = [messages] unless messages.is_a?(Array)
|
24
|
+
|
25
|
+
# if first element is ok, then do not parse the rest
|
26
|
+
return messages if messages.first in { role: String | Symbol, content: String | Array | Hash}
|
25
27
|
|
26
28
|
messages.flat_map do |msg|
|
27
29
|
if msg.is_a?(Hash)
|
data/lib/intelli_agent/openai.rb
CHANGED
@@ -80,7 +80,6 @@ module IntelliAgent::OpenAI
|
|
80
80
|
parameters = { model:, messages:, store: }
|
81
81
|
parameters[:metadata] = metadata if metadata
|
82
82
|
|
83
|
-
|
84
83
|
# o1 family models doesn't support max_tokens params. Instead, use max_completion_tokens
|
85
84
|
parameters[:max_completion_tokens] = max_tokens if is_o1_model
|
86
85
|
parameters[:max_tokens] = max_tokens unless is_o1_model
|
@@ -88,7 +87,11 @@ module IntelliAgent::OpenAI
|
|
88
87
|
parameters[:response_format] = { type: 'json_object' } if response_format.eql?(:json)
|
89
88
|
parameters[:tools] = tools if tools
|
90
89
|
|
91
|
-
|
90
|
+
begin
|
91
|
+
response = OpenAI::Client.new.chat(parameters:)
|
92
|
+
rescue => e
|
93
|
+
raise "Error in OpenAI chat: #{e.message}\nParameters: #{parameters.inspect}"
|
94
|
+
end
|
92
95
|
|
93
96
|
response[:chat_params] = parameters
|
94
97
|
response.extend(ResponseExtender)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: intelli_agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gedean Dias
|
@@ -65,8 +65,8 @@ files:
|
|
65
65
|
- lib/intelli_agent/agent_test.rb_
|
66
66
|
- lib/intelli_agent/anthropic.rb
|
67
67
|
- lib/intelli_agent/openai.rb
|
68
|
+
- lib/intelli_agent/openai/message_collection.rb
|
68
69
|
- lib/intelli_agent/openai/messages.rb
|
69
|
-
- lib/intelli_agent/openai/messages_helper copy.rb
|
70
70
|
homepage: https://github.com/gedean/intelli_agent
|
71
71
|
licenses:
|
72
72
|
- MIT
|
@@ -1,40 +0,0 @@
|
|
1
|
-
class IntelliAgent::OpenAI::Messages < Array
|
2
|
-
VALID_ROLES = %i[system user assistant tool].freeze
|
3
|
-
|
4
|
-
def initialize(messages = [])
|
5
|
-
@messages = self.class.parse_messages(messages)
|
6
|
-
end
|
7
|
-
|
8
|
-
def add(message) = @messages.concat(self.class.parse_messages(message))
|
9
|
-
|
10
|
-
=begin
|
11
|
-
O Formato de saída deve ser um array de hashes com as chaves `role` e `content`.
|
12
|
-
|
13
|
-
A entrada pode ser:
|
14
|
-
- um hash simples { user: 'mensagem do usuário' }, deve ser transformado em { role: 'user', content: 'mensagem do usuário' }
|
15
|
-
- um hash com várias chaves {system: 'mensagem', user: 'mensagem do usuário' }, deve ser transformado em [{ role: 'system', content: 'mensagem'}, { role: 'user', content: 'mensagem do usuário' }]
|
16
|
-
- um array de hashes [{ system: 'mensagem'}, { user: 'mensagem do usuário' }], deve ser transformado em [{ role: 'system', content: 'mensagem'}, { role: 'user', content: 'mensagem do usuário' }]
|
17
|
-
Obervação imporante: o content pode ser uma string ou um array
|
18
|
-
=end
|
19
|
-
|
20
|
-
def self.parse_messages(messages)
|
21
|
-
return [] if messages.empty?
|
22
|
-
|
23
|
-
messages = [messages] unless messages.is_a?(Array)
|
24
|
-
|
25
|
-
messages.flat_map do |msg|
|
26
|
-
if msg.is_a?(Hash)
|
27
|
-
if msg.keys.size == 1
|
28
|
-
role, content = msg.first
|
29
|
-
{ role: role.to_s, content: content }
|
30
|
-
elsif msg.key?(:role) && msg.key?(:content)
|
31
|
-
{ role: msg[:role].to_s, content: msg[:content] }
|
32
|
-
else
|
33
|
-
msg.map { |role, content| { role: role.to_s, content: content } }
|
34
|
-
end
|
35
|
-
else
|
36
|
-
raise ArgumentError, "Invalid message format: #{msg}"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|