riffer 0.37.1 → 0.38.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/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +7 -0
- data/docs/16_TRACING.md +1 -0
- data/lib/riffer/providers/base.rb +2 -0
- data/lib/riffer/tracing/stream_recorder.rb +9 -2
- data/lib/riffer/version.rb +1 -1
- data/sig/generated/riffer/tracing/stream_recorder.rbs +8 -2
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 201c994ac795b1563165552d686a38b103b83f718ceae14b102213ecb17984fd
|
|
4
|
+
data.tar.gz: 933ede064f5446e7634a446c9cf8ad502c99728ee87f18498fdb564303f2dce1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 064e68be4a2c9916e6a33fed5952501722434396c82eed7da754cadaef509ecce764b67297f61bc1dca5e0cef1ec4447bb99013fb6cc4ac70dc74c274ecc746a
|
|
7
|
+
data.tar.gz: fbeda57bbc9611d9f1be65f01560faf26e93c7d723e2e9116e6fb0d7c1f7b005488fd123c14f3917c4e73345b6554e7b10e8a7b104fe6bb5b65cf547f86de859
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.38.0](https://github.com/janeapp/riffer/compare/riffer/v0.37.1...riffer/v0.38.0) (2026-07-21)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* record time to first chunk on streaming chat spans ([#369](https://github.com/janeapp/riffer/issues/369)) ([133b019](https://github.com/janeapp/riffer/commit/133b0197dd358ae1cd37adbeb7b5df7446b0cbde))
|
|
14
|
+
|
|
8
15
|
## [0.37.1](https://github.com/janeapp/riffer/compare/riffer/v0.37.0...riffer/v0.37.1) (2026-07-13)
|
|
9
16
|
|
|
10
17
|
|
data/docs/16_TRACING.md
CHANGED
|
@@ -147,6 +147,7 @@ Usage on this span is the run total, aggregated across every step. See [Token us
|
|
|
147
147
|
| `riffer.cost` | float | When the call's model was priced |
|
|
148
148
|
| `gen_ai.response.finish_reasons` | string[] | When the provider reported a finish reason |
|
|
149
149
|
| `riffer.finish_reason.raw` | string | When the raw value differs from the normalized one |
|
|
150
|
+
| `gen_ai.response.time_to_first_chunk` | float | Streaming only — seconds from request issuance to the first stream event |
|
|
150
151
|
| `gen_ai.input.messages` | string | When `capture_messages` is on (JSON; see [capture](#message-content-capture)) |
|
|
151
152
|
| `gen_ai.system_instructions` | string | When `capture_messages` is on and a system prompt exists |
|
|
152
153
|
| `gen_ai.output.messages` | string | When `capture_messages` is on (JSON) |
|
|
@@ -263,6 +263,8 @@ class Riffer::Providers::Base
|
|
|
263
263
|
def record_stream_outcome(span, recorder)
|
|
264
264
|
Riffer::Tracing.record_usage(span, recorder.token_usage)
|
|
265
265
|
record_finish_reason(span, recorder.finish_reason, recorder.raw_finish_reason)
|
|
266
|
+
time_to_first_chunk = recorder.time_to_first_chunk
|
|
267
|
+
span.set_attribute("gen_ai.response.time_to_first_chunk", time_to_first_chunk) if time_to_first_chunk
|
|
266
268
|
capture_output(span, content: recorder.content, tool_calls: recorder.tool_calls, finish_reason: recorder.finish_reason)
|
|
267
269
|
end
|
|
268
270
|
|
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
# forwarding every event downstream untouched.
|
|
6
6
|
class Riffer::Tracing::StreamRecorder # :nodoc: all
|
|
7
7
|
# @rbs @yielder: Enumerator::Yielder
|
|
8
|
+
# @rbs @clock: ^() -> Float
|
|
9
|
+
# @rbs @started_at: Float
|
|
8
10
|
|
|
9
11
|
attr_reader :token_usage #: Riffer::Providers::TokenUsage?
|
|
10
12
|
|
|
13
|
+
attr_reader :time_to_first_chunk #: Float?
|
|
14
|
+
|
|
11
15
|
attr_reader :finish_reason #: Symbol?
|
|
12
16
|
|
|
13
17
|
attr_reader :raw_finish_reason #: String?
|
|
@@ -17,15 +21,18 @@ class Riffer::Tracing::StreamRecorder # :nodoc: all
|
|
|
17
21
|
attr_reader :tool_calls #: Array[Riffer::Messages::Assistant::ToolCall]
|
|
18
22
|
|
|
19
23
|
#--
|
|
20
|
-
#: (Enumerator::Yielder) -> void
|
|
21
|
-
def initialize(yielder)
|
|
24
|
+
#: (Enumerator::Yielder, ?clock: ^() -> Float) -> void
|
|
25
|
+
def initialize(yielder, clock: -> { Process.clock_gettime(Process::CLOCK_MONOTONIC) })
|
|
22
26
|
@yielder = yielder
|
|
27
|
+
@clock = clock
|
|
28
|
+
@started_at = clock.call
|
|
23
29
|
@tool_calls = [] #: Array[Riffer::Messages::Assistant::ToolCall]
|
|
24
30
|
end
|
|
25
31
|
|
|
26
32
|
#--
|
|
27
33
|
#: (Riffer::StreamEvents::Base) -> self
|
|
28
34
|
def <<(event)
|
|
35
|
+
@time_to_first_chunk ||= @clock.call - @started_at
|
|
29
36
|
record(event)
|
|
30
37
|
@yielder << event
|
|
31
38
|
self
|
data/lib/riffer/version.rb
CHANGED
|
@@ -5,8 +5,14 @@
|
|
|
5
5
|
class Riffer::Tracing::StreamRecorder
|
|
6
6
|
@yielder: Enumerator::Yielder
|
|
7
7
|
|
|
8
|
+
@clock: ^() -> Float
|
|
9
|
+
|
|
10
|
+
@started_at: Float
|
|
11
|
+
|
|
8
12
|
attr_reader token_usage: Riffer::Providers::TokenUsage?
|
|
9
13
|
|
|
14
|
+
attr_reader time_to_first_chunk: Float?
|
|
15
|
+
|
|
10
16
|
attr_reader finish_reason: Symbol?
|
|
11
17
|
|
|
12
18
|
attr_reader raw_finish_reason: String?
|
|
@@ -16,8 +22,8 @@ class Riffer::Tracing::StreamRecorder
|
|
|
16
22
|
attr_reader tool_calls: Array[Riffer::Messages::Assistant::ToolCall]
|
|
17
23
|
|
|
18
24
|
# --
|
|
19
|
-
# : (Enumerator::Yielder) -> void
|
|
20
|
-
def initialize: (Enumerator::Yielder) -> void
|
|
25
|
+
# : (Enumerator::Yielder, ?clock: ^() -> Float) -> void
|
|
26
|
+
def initialize: (Enumerator::Yielder, ?clock: ^() -> Float) -> void
|
|
21
27
|
|
|
22
28
|
# --
|
|
23
29
|
# : (Riffer::StreamEvents::Base) -> self
|
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.38.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jake Bottrall
|
|
@@ -35,14 +35,14 @@ dependencies:
|
|
|
35
35
|
requirements:
|
|
36
36
|
- - "~>"
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
|
-
version: 1.
|
|
38
|
+
version: 1.56.0
|
|
39
39
|
type: :development
|
|
40
40
|
prerelease: false
|
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
42
42
|
requirements:
|
|
43
43
|
- - "~>"
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 1.
|
|
45
|
+
version: 1.56.0
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: aws-sdk-bedrockruntime
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -91,14 +91,14 @@ dependencies:
|
|
|
91
91
|
requirements:
|
|
92
92
|
- - "~>"
|
|
93
93
|
- !ruby/object:Gem::Version
|
|
94
|
-
version: 0.
|
|
94
|
+
version: 0.71.0
|
|
95
95
|
type: :development
|
|
96
96
|
prerelease: false
|
|
97
97
|
version_requirements: !ruby/object:Gem::Requirement
|
|
98
98
|
requirements:
|
|
99
99
|
- - "~>"
|
|
100
100
|
- !ruby/object:Gem::Version
|
|
101
|
-
version: 0.
|
|
101
|
+
version: 0.71.0
|
|
102
102
|
- !ruby/object:Gem::Dependency
|
|
103
103
|
name: async
|
|
104
104
|
requirement: !ruby/object:Gem::Requirement
|