Class: GuardrailsRuby::Checks::HallucinatedURLs

Inherits:
GuardrailsRuby::Check show all
Defined in:
lib/guardrails_ruby/checks/hallucinated_urls.rb

Constant Summary collapse

URL_PATTERN =
%r{https?://[^\s<>"{}|\\^`\[\]]+}

Instance Attribute Summary

Attributes inherited from GuardrailsRuby::Check

#options

Instance Method Summary collapse

Methods inherited from GuardrailsRuby::Check

check_name, direction, #initialize, lookup

Constructor Details

This class inherits a constructor from GuardrailsRuby::Check

Instance Method Details

#call(text, context: {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/guardrails_ruby/checks/hallucinated_urls.rb', line 11

def call(text, context: {})
  urls = text.scan(URL_PATTERN)
  return pass! if urls.empty?

  source_context = context[:source_context] || ""
  source_urls = source_context.scan(URL_PATTERN)

  hallucinated = urls.reject do |url|
    source_urls.any? { |s| normalize(url).start_with?(normalize(s)) }
  end

  if hallucinated.any?
    fail! "Potentially hallucinated URLs: #{hallucinated.join(', ')}",
      action: @options.fetch(:action, :warn),
      matches: hallucinated
  else
    pass!
  end
end