maritaca-ai 1.0.0 → 1.1.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/.gitignore +1 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +25 -14
- data/README.md +44 -26
- data/controllers/client.rb +10 -5
- data/maritaca-ai.gemspec +2 -1
- data/static/gem.rb +1 -1
- data/tasks/generate-readme.clj +1 -1
- data/template.md +24 -7
- metadata +22 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6303b41bc438b8e903a651e906e695cca755c34820cb75c66a9f669b2b8bedc4
|
4
|
+
data.tar.gz: cf98f0c7cdd2580885e681077fb57d15c78b68d6908176bc1cff8b737adff174
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2107ca61810c3ac4c0ef71955cfd998b71451a6dd2c0ef91a3442448a38f0594d4791687c5852bf668736c5f5a3b9f954932f601cd7629c8e871592cc8a7002
|
7
|
+
data.tar.gz: bde4023b33d3afbd36cbe183a60c14fd558135d99f323686a8130b98e601d9910af4e3d81f97a08a49ffd51d1ecbec68704d3772c86c6f2a2fdaa27f982335d1
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,26 +1,34 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
maritaca-ai (1.
|
5
|
-
faraday (~> 2.
|
4
|
+
maritaca-ai (1.1.0)
|
5
|
+
faraday (~> 2.9)
|
6
|
+
faraday-typhoeus (~> 1.1)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
9
10
|
specs:
|
10
11
|
ast (2.4.2)
|
11
|
-
base64 (0.2.0)
|
12
12
|
byebug (11.1.3)
|
13
13
|
coderay (1.1.3)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
dotenv (2.8.1)
|
15
|
+
ethon (0.16.0)
|
16
|
+
ffi (>= 1.15.0)
|
17
|
+
faraday (2.9.0)
|
18
|
+
faraday-net_http (>= 2.0, < 3.2)
|
19
|
+
faraday-net_http (3.1.0)
|
20
|
+
net-http
|
21
|
+
faraday-typhoeus (1.1.0)
|
22
|
+
faraday (~> 2.0)
|
23
|
+
typhoeus (~> 1.4)
|
24
|
+
ffi (1.16.3)
|
19
25
|
json (2.7.1)
|
20
26
|
language_server-protocol (3.17.0.3)
|
21
27
|
method_source (1.0.0)
|
28
|
+
net-http (0.4.1)
|
29
|
+
uri
|
22
30
|
parallel (1.24.0)
|
23
|
-
parser (3.
|
31
|
+
parser (3.3.0.5)
|
24
32
|
ast (~> 2.4.1)
|
25
33
|
racc
|
26
34
|
pry (0.14.2)
|
@@ -31,13 +39,13 @@ GEM
|
|
31
39
|
pry (>= 0.13, < 0.15)
|
32
40
|
racc (1.7.3)
|
33
41
|
rainbow (3.1.1)
|
34
|
-
regexp_parser (2.
|
42
|
+
regexp_parser (2.9.0)
|
35
43
|
rexml (3.2.6)
|
36
|
-
rubocop (1.
|
44
|
+
rubocop (1.60.2)
|
37
45
|
json (~> 2.3)
|
38
46
|
language_server-protocol (>= 3.17.0)
|
39
47
|
parallel (~> 1.10)
|
40
|
-
parser (>= 3.
|
48
|
+
parser (>= 3.3.0.2)
|
41
49
|
rainbow (>= 2.2.2, < 4.0)
|
42
50
|
regexp_parser (>= 1.8, < 3.0)
|
43
51
|
rexml (>= 3.2.5, < 4.0)
|
@@ -47,16 +55,19 @@ GEM
|
|
47
55
|
rubocop-ast (1.30.0)
|
48
56
|
parser (>= 3.2.1.0)
|
49
57
|
ruby-progressbar (1.13.0)
|
50
|
-
|
58
|
+
typhoeus (1.4.1)
|
59
|
+
ethon (>= 0.9.0)
|
51
60
|
unicode-display_width (2.5.0)
|
61
|
+
uri (0.13.0)
|
52
62
|
|
53
63
|
PLATFORMS
|
54
64
|
x86_64-linux
|
55
65
|
|
56
66
|
DEPENDENCIES
|
67
|
+
dotenv (~> 2.8, >= 2.8.1)
|
57
68
|
maritaca-ai!
|
58
69
|
pry-byebug (~> 3.10, >= 3.10.1)
|
59
|
-
rubocop (~> 1.
|
70
|
+
rubocop (~> 1.60, >= 1.60.2)
|
60
71
|
|
61
72
|
BUNDLED WITH
|
62
73
|
2.4.22
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@ A Ruby gem for interacting with [MariTalk](https://chat.maritaca.ai) from [Marit
|
|
9
9
|
## TL;DR and Quick Start
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem 'maritaca-ai', '~> 1.
|
12
|
+
gem 'maritaca-ai', '~> 1.1.0'
|
13
13
|
```
|
14
14
|
|
15
15
|
```ruby
|
@@ -36,27 +36,28 @@ Result:
|
|
36
36
|
- [TL;DR and Quick Start](#tldr-and-quick-start)
|
37
37
|
- [Index](#index)
|
38
38
|
- [Setup](#setup)
|
39
|
-
|
40
|
-
|
39
|
+
- [Installing](#installing)
|
40
|
+
- [Credentials](#credentials)
|
41
41
|
- [Usage](#usage)
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
- [
|
53
|
-
|
54
|
-
|
55
|
-
|
42
|
+
- [Client](#client)
|
43
|
+
- [Custom Address](#custom-address)
|
44
|
+
- [Methods](#methods)
|
45
|
+
- [chat_inference](#chat_inference)
|
46
|
+
- [Chat](#chat)
|
47
|
+
- [Back-and-Forth Conversations](#back-and-forth-conversations)
|
48
|
+
- [Without Chat](#without-chat)
|
49
|
+
- [New Functionalities and APIs](#new-functionalities-and-apis)
|
50
|
+
- [Request Options](#request-options)
|
51
|
+
- [Adapter](#adapter)
|
52
|
+
- [Timeout](#timeout)
|
53
|
+
- [Error Handling](#error-handling)
|
54
|
+
- [Rescuing](#rescuing)
|
55
|
+
- [For Short](#for-short)
|
56
|
+
- [Errors](#errors)
|
56
57
|
- [Development](#development)
|
57
|
-
|
58
|
-
|
59
|
-
|
58
|
+
- [Purpose](#purpose)
|
59
|
+
- [Publish to RubyGems](#publish-to-rubygems)
|
60
|
+
- [Updating the README](#updating-the-readme)
|
60
61
|
- [Resources and References](#resources-and-references)
|
61
62
|
- [Disclaimer](#disclaimer)
|
62
63
|
|
@@ -65,11 +66,11 @@ Result:
|
|
65
66
|
### Installing
|
66
67
|
|
67
68
|
```sh
|
68
|
-
gem install maritaca-ai -v 1.
|
69
|
+
gem install maritaca-ai -v 1.1.0
|
69
70
|
```
|
70
71
|
|
71
72
|
```sh
|
72
|
-
gem 'maritaca-ai', '~> 1.
|
73
|
+
gem 'maritaca-ai', '~> 1.1.0'
|
73
74
|
```
|
74
75
|
|
75
76
|
### Credentials
|
@@ -116,7 +117,7 @@ client = Maritaca.new(
|
|
116
117
|
|
117
118
|
#### chat_inference
|
118
119
|
|
119
|
-
|
120
|
+
##### Chat
|
120
121
|
|
121
122
|
```ruby
|
122
123
|
result = client.chat_inference(
|
@@ -131,7 +132,7 @@ Result:
|
|
131
132
|
{ 'answer' => 'Oi! Como posso ajudá-lo(a) hoje?' }
|
132
133
|
```
|
133
134
|
|
134
|
-
|
135
|
+
##### Back-and-Forth Conversations
|
135
136
|
|
136
137
|
To maintain a back-and-forth conversation, you need to append the received responses and build a history for your requests:
|
137
138
|
|
@@ -152,7 +153,7 @@ Result:
|
|
152
153
|
{ 'answer' => 'Seu nome é Tamanduá.' }
|
153
154
|
```
|
154
155
|
|
155
|
-
|
156
|
+
##### Without Chat
|
156
157
|
|
157
158
|
You can prompt the model without using chat mode:
|
158
159
|
|
@@ -187,6 +188,21 @@ result = client.request(
|
|
187
188
|
|
188
189
|
### Request Options
|
189
190
|
|
191
|
+
#### Adapter
|
192
|
+
|
193
|
+
The gem uses [Faraday](https://github.com/lostisland/faraday) with the [Typhoeus](https://github.com/typhoeus/typhoeus) adapter by default.
|
194
|
+
|
195
|
+
You can use a different adapter if you want:
|
196
|
+
|
197
|
+
```ruby
|
198
|
+
require 'faraday/net_http'
|
199
|
+
|
200
|
+
client = Maritaca.new(
|
201
|
+
credentials: { api_key: ENV['MARITACA_API_KEY'] },
|
202
|
+
options: { connection: { adapter: :net_http } }
|
203
|
+
)
|
204
|
+
```
|
205
|
+
|
190
206
|
#### Timeout
|
191
207
|
|
192
208
|
You can set the maximum number of seconds to wait for the request to complete with the `timeout` option:
|
@@ -275,6 +291,8 @@ RequestError
|
|
275
291
|
```bash
|
276
292
|
bundle
|
277
293
|
rubocop -A
|
294
|
+
|
295
|
+
bundle exec ruby spec/tasks/run-client.rb
|
278
296
|
```
|
279
297
|
|
280
298
|
### Purpose
|
@@ -288,7 +306,7 @@ gem build maritaca-ai.gemspec
|
|
288
306
|
|
289
307
|
gem signin
|
290
308
|
|
291
|
-
gem push maritaca-ai-1.
|
309
|
+
gem push maritaca-ai-1.1.0.gem
|
292
310
|
```
|
293
311
|
|
294
312
|
### Updating the README
|
data/controllers/client.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'event_stream_parser'
|
4
3
|
require 'faraday'
|
4
|
+
require 'faraday/typhoeus'
|
5
5
|
require 'json'
|
6
6
|
|
7
|
-
require_relative '../
|
7
|
+
require_relative '../components/errors'
|
8
8
|
|
9
9
|
module Maritaca
|
10
10
|
module Controllers
|
@@ -13,6 +13,8 @@ module Maritaca
|
|
13
13
|
|
14
14
|
ALLOWED_REQUEST_OPTIONS = %i[timeout open_timeout read_timeout write_timeout].freeze
|
15
15
|
|
16
|
+
DEFAULT_FARADAY_ADAPTER = :typhoeus
|
17
|
+
|
16
18
|
def initialize(config)
|
17
19
|
@api_key = config.dig(:credentials, :api_key)
|
18
20
|
@server_sent_events = config.dig(:options, :server_sent_events)
|
@@ -24,7 +26,7 @@ module Maritaca
|
|
24
26
|
end
|
25
27
|
|
26
28
|
if @api_key.nil? && @address == "#{DEFAULT_ADDRESS}/"
|
27
|
-
raise MissingAPIKeyError, 'Missing API Key, which is required.'
|
29
|
+
raise Errors::MissingAPIKeyError, 'Missing API Key, which is required.'
|
28
30
|
end
|
29
31
|
|
30
32
|
@request_options = config.dig(:options, :connection, :request)
|
@@ -36,6 +38,8 @@ module Maritaca
|
|
36
38
|
else
|
37
39
|
{}
|
38
40
|
end
|
41
|
+
|
42
|
+
@faraday_adapter = config.dig(:options, :connection, :adapter) || DEFAULT_FARADAY_ADAPTER
|
39
43
|
end
|
40
44
|
|
41
45
|
def chat_inference(payload, server_sent_events: nil, &callback)
|
@@ -47,7 +51,7 @@ module Maritaca
|
|
47
51
|
url = "#{@address}#{path}"
|
48
52
|
|
49
53
|
if !callback.nil? && !server_sent_events_enabled
|
50
|
-
raise BlockWithoutServerSentEventsError,
|
54
|
+
raise Errors::BlockWithoutServerSentEventsError,
|
51
55
|
'You are trying to use a block without Server Sent Events (SSE) enabled.'
|
52
56
|
end
|
53
57
|
|
@@ -58,6 +62,7 @@ module Maritaca
|
|
58
62
|
partial_json = ''
|
59
63
|
|
60
64
|
response = Faraday.new(request: @request_options) do |faraday|
|
65
|
+
faraday.adapter @faraday_adapter
|
61
66
|
faraday.response :raise_error
|
62
67
|
end.send(method_to_call) do |request|
|
63
68
|
request.url url
|
@@ -95,7 +100,7 @@ module Maritaca
|
|
95
100
|
|
96
101
|
results.map { |result| result[:event] }
|
97
102
|
rescue Faraday::ServerError => e
|
98
|
-
raise RequestError.new(e.message, request: e, payload:)
|
103
|
+
raise Errors::RequestError.new(e.message, request: e, payload:)
|
99
104
|
end
|
100
105
|
|
101
106
|
def safe_parse_json_with_fallback_to_raw(raw)
|
data/maritaca-ai.gemspec
CHANGED
@@ -29,7 +29,8 @@ Gem::Specification.new do |spec|
|
|
29
29
|
|
30
30
|
spec.require_paths = ['ports/dsl']
|
31
31
|
|
32
|
-
spec.add_dependency 'faraday', '~> 2.
|
32
|
+
spec.add_dependency 'faraday', '~> 2.9'
|
33
|
+
spec.add_dependency 'faraday-typhoeus', '~> 1.1'
|
33
34
|
|
34
35
|
spec.metadata['rubygems_mfa_required'] = 'true'
|
35
36
|
end
|
data/static/gem.rb
CHANGED
data/tasks/generate-readme.clj
CHANGED
data/template.md
CHANGED
@@ -9,7 +9,7 @@ A Ruby gem for interacting with [MariTalk](https://chat.maritaca.ai) from [Marit
|
|
9
9
|
## TL;DR and Quick Start
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem 'maritaca-ai', '~> 1.
|
12
|
+
gem 'maritaca-ai', '~> 1.1.0'
|
13
13
|
```
|
14
14
|
|
15
15
|
```ruby
|
@@ -40,11 +40,11 @@ Result:
|
|
40
40
|
### Installing
|
41
41
|
|
42
42
|
```sh
|
43
|
-
gem install maritaca-ai -v 1.
|
43
|
+
gem install maritaca-ai -v 1.1.0
|
44
44
|
```
|
45
45
|
|
46
46
|
```sh
|
47
|
-
gem 'maritaca-ai', '~> 1.
|
47
|
+
gem 'maritaca-ai', '~> 1.1.0'
|
48
48
|
```
|
49
49
|
|
50
50
|
### Credentials
|
@@ -91,7 +91,7 @@ client = Maritaca.new(
|
|
91
91
|
|
92
92
|
#### chat_inference
|
93
93
|
|
94
|
-
|
94
|
+
##### Chat
|
95
95
|
|
96
96
|
```ruby
|
97
97
|
result = client.chat_inference(
|
@@ -106,7 +106,7 @@ Result:
|
|
106
106
|
{ 'answer' => 'Oi! Como posso ajudá-lo(a) hoje?' }
|
107
107
|
```
|
108
108
|
|
109
|
-
|
109
|
+
##### Back-and-Forth Conversations
|
110
110
|
|
111
111
|
To maintain a back-and-forth conversation, you need to append the received responses and build a history for your requests:
|
112
112
|
|
@@ -127,7 +127,7 @@ Result:
|
|
127
127
|
{ 'answer' => 'Seu nome é Tamanduá.' }
|
128
128
|
```
|
129
129
|
|
130
|
-
|
130
|
+
##### Without Chat
|
131
131
|
|
132
132
|
You can prompt the model without using chat mode:
|
133
133
|
|
@@ -162,6 +162,21 @@ result = client.request(
|
|
162
162
|
|
163
163
|
### Request Options
|
164
164
|
|
165
|
+
#### Adapter
|
166
|
+
|
167
|
+
The gem uses [Faraday](https://github.com/lostisland/faraday) with the [Typhoeus](https://github.com/typhoeus/typhoeus) adapter by default.
|
168
|
+
|
169
|
+
You can use a different adapter if you want:
|
170
|
+
|
171
|
+
```ruby
|
172
|
+
require 'faraday/net_http'
|
173
|
+
|
174
|
+
client = Maritaca.new(
|
175
|
+
credentials: { api_key: ENV['MARITACA_API_KEY'] },
|
176
|
+
options: { connection: { adapter: :net_http } }
|
177
|
+
)
|
178
|
+
```
|
179
|
+
|
165
180
|
#### Timeout
|
166
181
|
|
167
182
|
You can set the maximum number of seconds to wait for the request to complete with the `timeout` option:
|
@@ -250,6 +265,8 @@ RequestError
|
|
250
265
|
```bash
|
251
266
|
bundle
|
252
267
|
rubocop -A
|
268
|
+
|
269
|
+
bundle exec ruby spec/tasks/run-client.rb
|
253
270
|
```
|
254
271
|
|
255
272
|
### Purpose
|
@@ -263,7 +280,7 @@ gem build maritaca-ai.gemspec
|
|
263
280
|
|
264
281
|
gem signin
|
265
282
|
|
266
|
-
gem push maritaca-ai-1.
|
283
|
+
gem push maritaca-ai-1.1.0.gem
|
267
284
|
```
|
268
285
|
|
269
286
|
### Updating the README
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maritaca-ai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- gbaptista
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -16,22 +16,30 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 2.8.1
|
19
|
+
version: '2.9'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '2.
|
30
|
-
|
26
|
+
version: '2.9'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday-typhoeus
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
31
39
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
40
|
+
version: '1.1'
|
33
41
|
description: A Ruby gem for interacting with Maritaca AI's large language models.
|
34
|
-
email:
|
42
|
+
email:
|
35
43
|
executables: []
|
36
44
|
extensions: []
|
37
45
|
extra_rdoc_files: []
|
@@ -59,7 +67,7 @@ metadata:
|
|
59
67
|
homepage_uri: https://github.com/gbaptista/maritaca-ai
|
60
68
|
source_code_uri: https://github.com/gbaptista/maritaca-ai
|
61
69
|
rubygems_mfa_required: 'true'
|
62
|
-
post_install_message:
|
70
|
+
post_install_message:
|
63
71
|
rdoc_options: []
|
64
72
|
require_paths:
|
65
73
|
- ports/dsl
|
@@ -74,8 +82,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
82
|
- !ruby/object:Gem::Version
|
75
83
|
version: '0'
|
76
84
|
requirements: []
|
77
|
-
rubygems_version: 3.
|
78
|
-
signing_key:
|
85
|
+
rubygems_version: 3.3.3
|
86
|
+
signing_key:
|
79
87
|
specification_version: 4
|
80
88
|
summary: Interact with Maritaca AI.
|
81
89
|
test_files: []
|