OpenAI.Agents.Guardrail behaviour (openai_agents v0.1.2)

Defines the behavior for guardrails that validate agent inputs and outputs.

Guardrails can halt agent execution if they detect problematic content.

Example

defmodule MyApp.Guardrails.ContentFilter do
  use OpenAI.Agents.Guardrail

  @impl true
  def validate_input(input, context) do
    if contains_prohibited_content?(input) do
      {:error, "Prohibited content detected", %{reason: "content_policy"}}
    else
      :ok
    end
  end

  @impl true
  def validate_output(output, context) do
    :ok
  end
end

Summary

Functions

Runs input guardrails on the given input.

Runs output guardrails on the given output.

Validates a guardrail module has the correct structure.

Types

context()

@type context() :: any()

input()

@type input() :: String.t() | [map()]

output()

@type output() :: any()

validation_result()

@type validation_result() :: :ok | {:error, String.t(), map()}

Callbacks

validate_input(input, context)

(optional)
@callback validate_input(input(), context()) :: validation_result()

validate_output(output, context)

(optional)
@callback validate_output(output(), context()) :: validation_result()

Functions

run_input_guardrails(guardrails, input, state)

@spec run_input_guardrails([module()], input(), map()) :: :ok | {:error, term()}

Runs input guardrails on the given input.

run_output_guardrails(guardrails, output, state)

@spec run_output_guardrails([module()], output(), map()) ::
  {:ok, output()} | {:error, term()}

Runs output guardrails on the given output.

validate_guardrail(guardrail_module)

@spec validate_guardrail(module()) :: :ok | {:error, String.t()}

Validates a guardrail module has the correct structure.