Module: PWN::AI::Introspection
- Defined in:
- lib/pwn/ai/introspection.rb
Overview
This plugin interacts with PWN::Env’s ai data structure when PWN::Env[:ai][:introspection] is set to true.
Class Method Summary collapse
-
.authors ⇒ Object
- Author(s)
-
0day Inc.
-
.help ⇒ Object
Display Usage for this Module.
-
.reflect_on(opts = {}) ⇒ Object
- Supported Method Parameters
-
response = PWN::AI::Introspection.reflect_on( request: ‘required - String - What you want the AI to reflect on’, system_role_content: ‘optional - context to set up the model behavior for reflection’, spinner: ‘optional - Boolean - Display spinner during operation (default: false)’, suppress_pii_warning: ‘optional - Boolean - Suppress PII Warnings (default: false)’ ).
Class Method Details
.authors ⇒ Object
- Author(s)
-
0day Inc. <[email protected]>
78 79 80 81 82 |
# File 'lib/pwn/ai/introspection.rb', line 78 public_class_method def self. "AUTHOR(S): 0day Inc. <[email protected]> " end |
.help ⇒ Object
Display Usage for this Module
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/pwn/ai/introspection.rb', line 86 public_class_method def self.help puts "USAGE: #{self}.reflect_on( request: 'required - String - What you want the AI to reflect on', system_role_content: 'optional - context to set up the model behavior for reflection', spinner: 'optional - Boolean - Display spinner during operation (default: false)', suppress_pii_warning: 'optional - Boolean - Suppress PII Warnings (default: false)' ) #{self}.authors " end |
.reflect_on(opts = {}) ⇒ Object
- Supported Method Parameters
-
response = PWN::AI::Introspection.reflect_on(
request: 'required - String - What you want the AI to reflect on', system_role_content: 'optional - context to set up the model behavior for reflection', spinner: 'optional - Boolean - Display spinner during operation (default: false)', suppress_pii_warning: 'optional - Boolean - Suppress PII Warnings (default: false)')
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/pwn/ai/introspection.rb', line 19 public_class_method def self.reflect_on(opts = {}) request = opts[:request] raise 'ERROR: request must be provided' if request.nil? system_role_content = opts[:system_role_content] spinner = opts[:spinner] || false suppress_pii_warning = opts[:suppress_pii_warning] || false response = nil ai_introspection = PWN::Env[:ai][:introspection] if ai_introspection && request.length.positive? valid_ai_engines = PWN::AI.help.reject { |e| e.downcase == :introspection }.map(&:downcase) engine = PWN::Env[:ai][:active].to_s.downcase.to_sym raise "ERROR: Unsupported AI engine. Supported engines are: #{valid_ai_engines}" unless valid_ai_engines.include?(engine) puts "WARNING: AI Introspection is enabled. Ensure #{engine} has been authorized for use and/or requests are sanitized properly." unless suppress_pii_warning case engine when :grok response = PWN::AI::Grok.chat( request: request.chomp, system_role_content: system_role_content, spinner: spinner ) response = response[:choices].last[:content] if response.is_a?(Hash) && response.key?(:choices) && response[:choices].last.keys.include?(:content) when :ollama response = PWN::AI::Ollama.chat( request: request.chomp, system_role_content: system_role_content, spinner: spinner ) response = response[:choices].last[:content] if response.is_a?(Hash) && response.key?(:choices) && response[:choices].last.keys.include?(:content) when :openai response = PWN::AI::OpenAI.chat( request: request.chomp, system_role_content: system_role_content, spinner: spinner ) if response.is_a?(Hash) && response.key?(:choices) response = response[:choices].last[:text] if response[:choices].last.keys.include?(:text) response = response[:choices].last[:content] if response[:choices].last.keys.include?(:content) end end end response rescue StandardError => e raise e end |