File tree Expand file tree Collapse file tree 2 files changed +50
-0
lines changed Expand file tree Collapse file tree 2 files changed +50
-0
lines changed Original file line number Diff line number Diff line change 1+ # Artificial Intelligence  
2+ 
3+ ## Security  
4+ 
5+ -  Filter sensitive information before sending data to an LLM.
6+   [ Example] ( ./how-to/filter_sensitive_information.md ) .
Original file line number Diff line number Diff line change 1+ # Filter Sensitive Information  
2+ 
3+ Before sending free text to an LLM or chatbot, filter all messages for
4+ potentially sensitive information first.
5+ 
6+ ``` ruby 
7+ require  " openai" 
8+ require  " top_secret" 
9+ 
10+ openai =  OpenAI ::Client .new (
11+   api_key:  Rails .application.credentials.openai.api_key!
12+ )
13+ 
14+ original_messages =  [
15+   " Ralph lives in Boston." 
16+   " You can reach them at ralph@thoughtbot.com or 877-976-2687" 
17+ ]
18+ 
19+ #  Filter all messages
20+ result =  TopSecret ::Text .filter_all(original_messages)
21+ filtered_messages =  result.items.map(& :output )
22+ 
23+ user_messages =  filtered_messages.map { {role:  " user" content:  it} }
24+ 
25+ #  Instruct LLM how to handle filtered messages
26+ instructions =  <<~TEXT 
27+   I'm going to send filtered information to you in the form of free text. 
28+   If you need to refer to the filtered information in a response, just reference it by the filter. 
29+ TEXT 
30+ 
31+ messages =  [
32+   {role:  " system" content:  instructions},
33+   * user_messages
34+ ]
35+ 
36+ chat_completion =  openai.chat.completions.create(messages: , model:  :"gpt-5" )
37+ response =  chat_completion.choices.last.message.content
38+ 
39+ #  Restore the response from the mapping
40+ mapping =  result.mapping
41+ restored_response =  TopSecret ::FilteredText .restore(response, mapping: ).output
42+ 
43+ puts (restored_response)
44+ ``` 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments