Class: Riffer::Guardrail

Inherits:
Object
  • Object
show all
Defined in:
lib/riffer/guardrail.rb,
sig/generated/riffer/guardrail.rbs

Overview

Base class for guardrails that process input and output in the agent pipeline.

class MyGuardrail < Riffer::Guardrail
def process_input(messages, context:)
  # Return pass(messages), transform(modified_messages), or block(reason)
  pass(messages)
end

def process_output(response, messages:, context:)
  # Return pass(response), transform(modified_response), or block(reason)
  pass(response)
end
end

Instance Method Summary collapse

Instance Method Details

#block(reason, metadata: nil) ⇒ Riffer::Guardrails::Result

Creates a block result that halts execution.

: (String, ?metadata: Hash[Symbol, untyped]?) -> Riffer::Guardrails::Result

Parameters:

  • (String)
  • metadata: (Hash[Symbol, untyped], nil) (defaults to: nil)

Returns:



61
62
63
# File 'lib/riffer/guardrail.rb', line 61

def block(reason, metadata: nil)
  Riffer::Guardrails::Result.block(reason, metadata: )
end

#nameString

Returns the guardrail's identifier, used as the tracing span suffix and the riffer.guardrail.name attribute; override to label the span.

: () -> String

Returns:

  • (String)


38
39
40
# File 'lib/riffer/guardrail.rb', line 38

def name
  Riffer::Helpers::ClassNameConverter.convert(self.class.name)
end

#pass(data) ⇒ Riffer::Guardrails::Result

Creates a pass result that continues with unchanged data.

: (untyped) -> Riffer::Guardrails::Result

Parameters:

  • (Object)

Returns:



47
48
49
# File 'lib/riffer/guardrail.rb', line 47

def pass(data)
  Riffer::Guardrails::Result.pass(data)
end

#process_input(messages, context:) ⇒ Riffer::Guardrails::Result

Processes input messages before they're sent to the LLM; override in subclasses.

: (Array, context: untyped) -> Riffer::Guardrails::Result

Parameters:

Returns:



22
23
24
# File 'lib/riffer/guardrail.rb', line 22

def process_input(messages, context:)
  pass(messages)
end

#process_output(response, messages:, context:) ⇒ Riffer::Guardrails::Result

Processes the output response after it's received from the LLM; override in subclasses.

: (Riffer::Messages::Assistant, messages: Array, context: untyped) -> Riffer::Guardrails::Result

Parameters:

Returns:



30
31
32
# File 'lib/riffer/guardrail.rb', line 30

def process_output(response, messages:, context:)
  pass(response)
end

#transform(data) ⇒ Riffer::Guardrails::Result

Creates a transform result that continues with transformed data.

: (untyped) -> Riffer::Guardrails::Result

Parameters:

  • (Object)

Returns:



54
55
56
# File 'lib/riffer/guardrail.rb', line 54

def transform(data)
  Riffer::Guardrails::Result.transform(data)
end