12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/legion/llm/pipeline/steps/confidence_scoring.rb', line 12
def step_confidence_scoring
return unless @raw_response
opts = {
json_expected: @request.response_format&.dig(:type) == :json,
quality_threshold: @request.&.dig(:quality_threshold),
confidence_score: @request.&.dig(:confidence_score),
confidence_bands: @request.&.dig(:confidence_bands)
}.compact
@confidence_score = ConfidenceScorer.score(@raw_response, **opts)
@timeline.record(
category: :internal, key: 'confidence:scored',
direction: :internal,
detail: "score=#{@confidence_score.score.round(3)} band=#{@confidence_score.band} source=#{@confidence_score.source}",
from: 'pipeline', to: 'pipeline'
)
rescue StandardError => e
@warnings << "confidence_scoring error: #{e.message}"
handle_exception(e, level: :warn, operation: 'llm.pipeline.steps.confidence_scoring')
@confidence_score = nil
end
|