riffer 0.40.0 → 0.41.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/.agents/providers.md +10 -1
- data/.agents/rbs-inline.md +2 -2
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +11 -0
- data/README.md +20 -24
- data/docs/AGENTS.md +0 -11
- data/docs/CONFIGURATION.md +105 -21
- data/docs/SERIALIZATION.md +4 -3
- data/docs/providers/AMAZON_BEDROCK.md +14 -8
- data/docs/providers/ANTHROPIC.md +9 -7
- data/docs/providers/AZURE_OPENAI.md +12 -12
- data/docs/providers/CUSTOM_PROVIDERS.md +32 -16
- data/docs/providers/GEMINI.md +28 -5
- data/docs/providers/OPENAI.md +21 -5
- data/docs/providers/OPENROUTER.md +11 -6
- data/docs/providers/PROVIDERS.md +16 -1
- data/lib/riffer/agent/config.rb +0 -6
- data/lib/riffer/agent/serializer.rb +0 -2
- data/lib/riffer/agent.rb +1 -9
- data/lib/riffer/config.rb +6 -6
- data/lib/riffer/evals/judge.rb +3 -5
- data/lib/riffer/providers/amazon_bedrock.rb +31 -19
- data/lib/riffer/providers/anthropic.rb +19 -8
- data/lib/riffer/providers/azure_open_ai.rb +19 -11
- data/lib/riffer/providers/base.rb +28 -0
- data/lib/riffer/providers/gemini/client.rb +120 -0
- data/lib/riffer/providers/gemini.rb +13 -62
- data/lib/riffer/providers/mock.rb +5 -4
- data/lib/riffer/providers/open_ai.rb +23 -8
- data/lib/riffer/providers/open_router.rb +23 -9
- data/lib/riffer/version.rb +1 -1
- data/sig/_private/riffer/providers/amazon_bedrock.rbs +4 -2
- data/sig/_private/riffer/providers/anthropic.rbs +4 -2
- data/sig/_private/riffer/providers/gemini.rbs +7 -0
- data/sig/_private/riffer/providers/open_ai.rbs +4 -2
- data/sig/_private/riffer/providers/open_router.rbs +4 -2
- data/sig/generated/riffer/agent/config.rbs +1 -5
- data/sig/generated/riffer/agent.rbs +0 -6
- data/sig/generated/riffer/config.rbs +25 -15
- data/sig/generated/riffer/evals/judge.rbs +2 -4
- data/sig/generated/riffer/providers/amazon_bedrock.rbs +13 -2
- data/sig/generated/riffer/providers/anthropic.rbs +13 -2
- data/sig/generated/riffer/providers/azure_open_ai.rbs +14 -4
- data/sig/generated/riffer/providers/base.rbs +20 -0
- data/sig/generated/riffer/providers/gemini/client.rbs +65 -0
- data/sig/generated/riffer/providers/gemini.rbs +7 -23
- data/sig/generated/riffer/providers/mock.rbs +4 -3
- data/sig/generated/riffer/providers/open_ai.rbs +13 -2
- data/sig/generated/riffer/providers/open_router.rbs +16 -3
- metadata +4 -1
|
@@ -2,20 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# Google Gemini provider for Gemini models via the Gemini REST API.
|
|
4
4
|
class Riffer::Providers::Gemini < Riffer::Providers::Base
|
|
5
|
-
@read_timeout: Integer
|
|
6
|
-
|
|
7
|
-
@open_timeout: Integer
|
|
8
|
-
|
|
9
|
-
@api_key: String?
|
|
10
|
-
|
|
11
|
-
BASE_URI: URI::Generic
|
|
12
|
-
|
|
13
5
|
VALID_MODEL_PATTERN: Regexp
|
|
14
6
|
|
|
15
|
-
DEFAULT_OPEN_TIMEOUT: Integer
|
|
16
|
-
|
|
17
|
-
DEFAULT_READ_TIMEOUT: Integer
|
|
18
|
-
|
|
19
7
|
FINISH_REASONS: Hash[String, Symbol]
|
|
20
8
|
|
|
21
9
|
# The GenAI semconv well-known provider name.
|
|
@@ -23,11 +11,15 @@ class Riffer::Providers::Gemini < Riffer::Providers::Base
|
|
|
23
11
|
# : () -> String
|
|
24
12
|
def self.semconv_provider_name: () -> String
|
|
25
13
|
|
|
14
|
+
private
|
|
15
|
+
|
|
26
16
|
# --
|
|
27
|
-
# : (
|
|
28
|
-
def
|
|
17
|
+
# : () -> untyped
|
|
18
|
+
def global_client: () -> untyped
|
|
29
19
|
|
|
30
|
-
|
|
20
|
+
# --
|
|
21
|
+
# : () -> untyped
|
|
22
|
+
def build_client: () -> untyped
|
|
31
23
|
|
|
32
24
|
# --
|
|
33
25
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
@@ -89,10 +81,6 @@ class Riffer::Providers::Gemini < Riffer::Providers::Base
|
|
|
89
81
|
# : (untyped) -> String
|
|
90
82
|
def encode_tool_arguments: (untyped) -> String
|
|
91
83
|
|
|
92
|
-
# --
|
|
93
|
-
# : (String, Hash[Symbol, untyped]) -> Net::HTTPResponse
|
|
94
|
-
def post_request: (String, Hash[Symbol, untyped]) -> Net::HTTPResponse
|
|
95
|
-
|
|
96
84
|
# --
|
|
97
85
|
# : (String, String) -> String
|
|
98
86
|
def api_path: (String, String) -> String
|
|
@@ -104,8 +92,4 @@ class Riffer::Providers::Gemini < Riffer::Providers::Base
|
|
|
104
92
|
# --
|
|
105
93
|
# : (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
106
94
|
def strip_additional_properties: (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
107
|
-
|
|
108
|
-
# --
|
|
109
|
-
# : (Net::HTTPResponse) -> void
|
|
110
|
-
def handle_api_error!: (Net::HTTPResponse) -> void
|
|
111
95
|
end
|
|
@@ -23,7 +23,8 @@ class Riffer::Providers::Mock < Riffer::Providers::Base
|
|
|
23
23
|
attr_reader calls: Array[Hash[Symbol, untyped]]
|
|
24
24
|
|
|
25
25
|
# +responses:+ pre-configures canned responses (same shape as
|
|
26
|
-
# +#stub_response+)
|
|
26
|
+
# +#stub_response+) for standalone use; agent tests queue responses on
|
|
27
|
+
# <tt>agent.provider</tt> via +#stub_response+ instead.
|
|
27
28
|
#
|
|
28
29
|
# Riffer::Providers::Mock.new(responses: [
|
|
29
30
|
# {content: "", tool_calls: [{name: "tool_a", arguments: "{}"}]},
|
|
@@ -31,8 +32,8 @@ class Riffer::Providers::Mock < Riffer::Providers::Base
|
|
|
31
32
|
# ])
|
|
32
33
|
#
|
|
33
34
|
# --
|
|
34
|
-
# : (
|
|
35
|
-
def initialize: (
|
|
35
|
+
# : (?responses: Array[Hash[Symbol, untyped]]) -> void
|
|
36
|
+
def initialize: (?responses: Array[Hash[Symbol, untyped]]) -> void
|
|
36
37
|
|
|
37
38
|
# Stubs the next response; call repeatedly to queue several. +finish_reason+
|
|
38
39
|
# defaults to +:tool_calls+ when tool calls are present, else +:stop+.
|
|
@@ -10,11 +10,22 @@ class Riffer::Providers::OpenAI < Riffer::Providers::Base
|
|
|
10
10
|
def self.semconv_provider_name: () -> String
|
|
11
11
|
|
|
12
12
|
# --
|
|
13
|
-
# : (
|
|
14
|
-
def initialize: (
|
|
13
|
+
# : () -> void
|
|
14
|
+
def initialize: () -> void
|
|
15
15
|
|
|
16
16
|
private
|
|
17
17
|
|
|
18
|
+
# --
|
|
19
|
+
# : () -> untyped
|
|
20
|
+
def global_client: () -> untyped
|
|
21
|
+
|
|
22
|
+
# Compacted so an unset value stays absent: the SDK reads +OPENAI_API_KEY+ /
|
|
23
|
+
# +OPENAI_BASE_URL+ only for a missing argument, and an explicit nil would
|
|
24
|
+
# suppress that fallback.
|
|
25
|
+
# --
|
|
26
|
+
# : () -> untyped
|
|
27
|
+
def build_client: () -> untyped
|
|
28
|
+
|
|
18
29
|
# --
|
|
19
30
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
20
31
|
def build_request_params: (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# OpenRouter provider (https://openrouter.ai). Requires the +openai+ gem —
|
|
4
4
|
# OpenRouter exposes an OpenAI-compatible endpoint, so this reuses the OpenAI
|
|
5
|
-
# SDK with a +base_url+ override. +api_key+
|
|
5
|
+
# SDK with a +base_url+ override. +api_key+ resolves from config, then
|
|
6
6
|
# +OPENROUTER_API_KEY+.
|
|
7
7
|
class Riffer::Providers::OpenRouter < Riffer::Providers::Base
|
|
8
8
|
BASE_URL: String
|
|
@@ -15,11 +15,24 @@ class Riffer::Providers::OpenRouter < Riffer::Providers::Base
|
|
|
15
15
|
def self.semconv_provider_name: () -> String
|
|
16
16
|
|
|
17
17
|
# --
|
|
18
|
-
# : (
|
|
19
|
-
def initialize: (
|
|
18
|
+
# : () -> void
|
|
19
|
+
def initialize: () -> void
|
|
20
20
|
|
|
21
21
|
private
|
|
22
22
|
|
|
23
|
+
# --
|
|
24
|
+
# : () -> untyped
|
|
25
|
+
def global_client: () -> untyped
|
|
26
|
+
|
|
27
|
+
# Deliberately not compacted: this borrows the OpenAI SDK to talk to a
|
|
28
|
+
# different vendor, so omitting an unset +api_key+ would let the SDK fall
|
|
29
|
+
# back to +OPENAI_API_KEY+ and send an OpenAI credential to OpenRouter.
|
|
30
|
+
# Passing nil raises in the SDK instead. +OPENROUTER_API_KEY+ is read here
|
|
31
|
+
# rather than left to the SDK for the same reason.
|
|
32
|
+
# --
|
|
33
|
+
# : () -> untyped
|
|
34
|
+
def build_client: () -> untyped
|
|
35
|
+
|
|
23
36
|
# --
|
|
24
37
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
25
38
|
def build_request_params: (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: riffer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.41.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jake Bottrall
|
|
@@ -151,6 +151,7 @@ files:
|
|
|
151
151
|
- lib/riffer/providers/base.rb
|
|
152
152
|
- lib/riffer/providers/finish_reason.rb
|
|
153
153
|
- lib/riffer/providers/gemini.rb
|
|
154
|
+
- lib/riffer/providers/gemini/client.rb
|
|
154
155
|
- lib/riffer/providers/mock.rb
|
|
155
156
|
- lib/riffer/providers/open_ai.rb
|
|
156
157
|
- lib/riffer/providers/open_router.rb
|
|
@@ -209,6 +210,7 @@ files:
|
|
|
209
210
|
- sig/_private/opentelemetry.rbs
|
|
210
211
|
- sig/_private/riffer/providers/amazon_bedrock.rbs
|
|
211
212
|
- sig/_private/riffer/providers/anthropic.rbs
|
|
213
|
+
- sig/_private/riffer/providers/gemini.rbs
|
|
212
214
|
- sig/_private/riffer/providers/open_ai.rbs
|
|
213
215
|
- sig/_private/riffer/providers/open_router.rbs
|
|
214
216
|
- sig/_private/zeitwerk.rbs
|
|
@@ -268,6 +270,7 @@ files:
|
|
|
268
270
|
- sig/generated/riffer/providers/base.rbs
|
|
269
271
|
- sig/generated/riffer/providers/finish_reason.rbs
|
|
270
272
|
- sig/generated/riffer/providers/gemini.rbs
|
|
273
|
+
- sig/generated/riffer/providers/gemini/client.rbs
|
|
271
274
|
- sig/generated/riffer/providers/mock.rbs
|
|
272
275
|
- sig/generated/riffer/providers/open_ai.rbs
|
|
273
276
|
- sig/generated/riffer/providers/open_router.rbs
|