JanviMl commited on
Commit
1f3da77
·
verified ·
1 Parent(s): f7b7064

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -38
app.py CHANGED
@@ -3,30 +3,48 @@ import torch
3
  from transformers import GPT2LMHeadModel, GPT2Tokenizer
4
  import random
5
 
6
- # Load GPT-2 model and tokenizer
7
  @st.cache_resource
8
  def load_model():
9
- tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
10
- model = GPT2LMHeadModel.from_pretrained("gpt2")
11
- return tokenizer, model
 
 
 
 
 
 
 
12
 
13
  tokenizer, model = load_model()
14
 
15
- # Honest AI response logic (open to any prompt)
16
  def honest_ai_response(user_input):
17
- prompt = f"Provide a factual and balanced answer to the question: {user_input}"
18
- inputs = tokenizer.encode(prompt, return_tensors="pt")
19
- outputs = model.generate(
20
- inputs,
21
- max_length=100,
22
- temperature=0.7,
23
- top_k=50,
24
- num_return_sequences=1,
25
- pad_token_id=tokenizer.eos_token_id
26
- )
27
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
28
- answer = response.replace(prompt, "").strip()
29
- return answer if answer else "I’m not sure, but I can try to provide a general perspective."
 
 
 
 
 
 
 
 
 
 
 
30
 
31
  # Echo Chamber AI response logic
32
  def echo_chamber_ai_response(user_input):
@@ -40,27 +58,35 @@ def echo_chamber_ai_response(user_input):
40
  return f"{agreement} {user_input}"
41
 
42
  # Streamlit UI
43
- st.title("AI That Only Tells You What You Want to Hear")
44
- st.write("A demo showing how AI can become an echo chamber when trained to agree with you.")
 
45
 
46
- # Mode selection
47
- mode = st.radio("Select AI Mode:", ("Honest AI", "Echo Chamber AI"))
48
 
49
- # User input
50
- user_input = st.text_input("Say something to the AI:", "Is AI dangerous?")
51
 
52
- # Generate response based on mode
53
- if st.button("Get Response"):
54
- if mode == "Honest AI":
55
- response = honest_ai_response(user_input)
56
- else: # Echo Chamber AI
57
- response = echo_chamber_ai_response(user_input)
58
- st.write("**AI Response:**", response)
 
 
 
 
59
 
60
- # Explanation
61
- st.write("### What’s Happening?")
62
- st.write("""
63
- - **Honest AI**: Attempts to provide a factual and balanced response based on general knowledge (generated by AI).
64
- - **Echo Chamber AI**: Trained to agree with you, no matter what you say, reinforcing your input.
65
- This demo shows how AI can shift from truth-seeking to bias-reinforcing with feedback.
66
- """)
 
 
 
 
3
  from transformers import GPT2LMHeadModel, GPT2Tokenizer
4
  import random
5
 
6
+ # Load GPT-2 model and tokenizer with error handling
7
  @st.cache_resource
8
  def load_model():
9
+ try:
10
+ tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
11
+ model = GPT2LMHeadModel.from_pretrained("gpt2")
12
+ # Set pad token if not already set
13
+ if tokenizer.pad_token is None:
14
+ tokenizer.pad_token = tokenizer.eos_token
15
+ return tokenizer, model
16
+ except Exception as e:
17
+ st.error(f"Error loading model: {str(e)}")
18
+ return None, None
19
 
20
  tokenizer, model = load_model()
21
 
22
+ # Honest AI response logic
23
  def honest_ai_response(user_input):
24
+ if tokenizer is None or model is None:
25
+ return "Sorry, model failed to load."
26
+
27
+ try:
28
+ prompt = f"Provide a factual and balanced answer to: {user_input}"
29
+ inputs = tokenizer.encode(prompt, return_tensors="pt", add_special_tokens=True)
30
+ attention_mask = torch.ones(inputs.shape, dtype=torch.long)
31
+
32
+ outputs = model.generate(
33
+ inputs,
34
+ max_length=150, # Increased for more complete responses
35
+ temperature=0.7,
36
+ top_k=50,
37
+ num_return_sequences=1,
38
+ pad_token_id=tokenizer.eos_token_id,
39
+ attention_mask=attention_mask,
40
+ do_sample=True, # Added for more natural responses
41
+ no_repeat_ngram_size=2 # Prevent repetition
42
+ )
43
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
44
+ answer = response.replace(prompt, "").strip()
45
+ return answer if answer else "I don’t have enough information to answer definitively, but I can provide a general perspective."
46
+ except Exception as e:
47
+ return f"Error generating response: {str(e)}"
48
 
49
  # Echo Chamber AI response logic
50
  def echo_chamber_ai_response(user_input):
 
58
  return f"{agreement} {user_input}"
59
 
60
  # Streamlit UI
61
+ def main():
62
+ st.title("AI Response Demo")
63
+ st.write("Compare an honest AI response with an echo chamber AI response.")
64
 
65
+ # Mode selection
66
+ mode = st.radio("Select AI Mode:", ("Honest AI", "Echo Chamber AI"))
67
 
68
+ # User input
69
+ user_input = st.text_input("Say something to the AI:", "Is AI dangerous?")
70
 
71
+ # Generate response based on mode
72
+ if st.button("Get Response"):
73
+ if not user_input:
74
+ st.warning("Please enter a question or statement.")
75
+ else:
76
+ with st.spinner("Generating response..."):
77
+ if mode == "Honest AI":
78
+ response = honest_ai_response(user_input)
79
+ else: # Echo Chamber AI
80
+ response = echo_chamber_ai_response(user_input)
81
+ st.write("**AI Response:**", response)
82
 
83
+ # Explanation
84
+ with st.expander("What’s Happening?", expanded=False):
85
+ st.write("""
86
+ - **Honest AI**: Uses GPT-2 to generate a factual and balanced response based on its training.
87
+ - **Echo Chamber AI**: Simply agrees with whatever you say, reinforcing your input without critical analysis.
88
+ This demo illustrates how AI behavior can shift from truth-seeking to bias-reinforcing depending on its design.
89
+ """)
90
+
91
+ if __name__ == "__main__":
92
+ main()