Module: Vangrail::ScoreProviders
- Defined in:
- lib/vangrail/score_provider.rb
Overview
Versioned, dependency-free transports for optional risk readers.
Defined Under Namespace
Classes: Command, Endpoint, Transport
Constant Summary
collapse
- REQUEST_SCHEMA =
'vangrail-score-request-v1'
- RESPONSE_SCHEMA =
'vangrail-score-response-v1'
- DEFAULT_TIMEOUT =
30
- DEFAULT_MAX_INPUT_BYTES =
4 * 1024 * 1024
- DEFAULT_MAX_OUTPUT_BYTES =
1024 * 1024
Class Method Summary
collapse
Class Method Details
.json_value(value) ⇒ Object
42
43
44
45
46
47
48
49
50
|
# File 'lib/vangrail/score_provider.rb', line 42
def json_value(value)
case value
when Hash
value.to_h { |name, nested| [name.to_s, json_value(nested)] }
when Array then value.map { |nested| json_value(nested) }
when Symbol then value.to_s
else value
end
end
|
.request(reader_id:, model_id:, feature_schema:, text:, side:, context:) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/vangrail/score_provider.rb', line 19
def request(reader_id:, model_id:, feature_schema:, text:, side:, context:)
json_value(
schema: REQUEST_SCHEMA,
reader_id: reader_id,
model_id: model_id,
feature_schema: feature_schema,
text: text.to_s,
side: side.to_s,
context: context,
)
end
|
.response(raw) ⇒ Object
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/vangrail/score_provider.rb', line 31
def response(raw)
raise ProtocolError, 'score response must be a JSON object' unless raw.is_a?(Hash)
normalized = json_value(raw)
unless normalized['schema'] == RESPONSE_SCHEMA
raise ProtocolError, "score response schema must be #{RESPONSE_SCHEMA}"
end
normalized.except('schema')
end
|