Fatser commited on
Commit
4635488
·
verified ·
1 Parent(s): e8e9c13

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +9 -18
src/streamlit_app.py CHANGED
@@ -9,10 +9,9 @@ from prompts import SYSTEM_INSTRUCTIONS
9
 
10
  st.set_page_config(page_title="StepWise: Algorithmic Thinking Mentor", layout="wide")
11
  load_dotenv()
12
- os.environ.get("API_KEY")
13
 
14
  def call_gemini(messages):
15
- api_key = os.environ.get("API_KEY")
16
  url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-lite:generateContent?key={api_key}"
17
  headers = {'Content-Type': 'application/json'}
18
  contents = []
@@ -46,8 +45,8 @@ with st.sidebar:
46
 
47
  if st.button("📚 Konu Tekrarı", use_container_width=True):
48
  st.session_state.mode = "chat"
49
- st.session_state.messages = [{"role": "user", "content": f"SİSTEM: {SYSTEM_INSTRUCTIONS}\n\nGÖREV: Merhaba! Öğrenciye konuyu anlatmaya başla."}]
50
- with st.spinner("Hazırlanıyor..."):
51
  res = call_gemini(st.session_state.messages)
52
  st.session_state.messages.append({"role": "assistant", "content": res})
53
  st.rerun()
@@ -55,8 +54,7 @@ with st.sidebar:
55
  if st.button("📐 Akış Şeması İnşası", use_container_width=True):
56
  st.session_state.mode = "flowchart"
57
  st.session_state.flow_nodes, st.session_state.flow_edges = [], []
58
- flow_cmd = f"SİSTEM: {SYSTEM_INSTRUCTIONS}\n\nGÖREV: Öğrenciye içinde KARAR yapısı olan bir problem ver."
59
- st.session_state.messages.append({"role": "user", "content": flow_cmd})
60
  with st.spinner("Senaryo oluşturuluyor..."):
61
  res = call_gemini(st.session_state.messages)
62
  st.session_state.messages.append({"role": "assistant", "content": res})
@@ -64,9 +62,7 @@ with st.sidebar:
64
 
65
  if st.button("🎁 Girdi-Çıktı Kutusu", use_container_width=True):
66
  st.session_state.mode = "blackbox"
67
- st.session_state.messages = []
68
- box_cmd = f"SİSTEM: {SYSTEM_INSTRUCTIONS}\n\nGÖREV: Girdi-Çıktı oyununu başlat. Hemen bir örnek (Girdi: X, Çıktı: Y) ver."
69
- st.session_state.messages.append({"role": "user", "content": box_cmd})
70
  with st.spinner("Kutu hazırlanıyor..."):
71
  res = call_gemini(st.session_state.messages)
72
  st.session_state.messages.append({"role": "assistant", "content": res})
@@ -74,12 +70,7 @@ with st.sidebar:
74
 
75
  if st.button("🔧 Algoritma Tamirhanesi", use_container_width=True):
76
  st.session_state.mode = "repair"
77
- repair_cmd = (
78
- f"SİSTEM: {SYSTEM_INSTRUCTIONS}\n\n"
79
- "GÖREV: Algoritma Tamirhanesi modunu başlat. Karışık adımlı bir senaryo ver. "
80
- "ÖNEMLİ: Öğrenci yanlış bildiğinde asla doğru sırayı söyleme, sadece mantık hatasını bir soruyla hatırlat."
81
- )
82
- st.session_state.messages.append({"role": "user", "content": repair_cmd})
83
  with st.spinner("Arıza tespit ediliyor..."):
84
  res = call_gemini(st.session_state.messages)
85
  st.session_state.messages.append({"role": "assistant", "content": res})
@@ -93,7 +84,7 @@ with st.sidebar:
93
  st.title("🤖 StepWise: Algoritmik Düşünme Mentoru")
94
 
95
  if st.session_state.mode == "repair":
96
- st.info("🔧 **Tamirhane Modu:** Aşağıdaki adımlar birbirine karışmış! Onları mantıklı bir sıraya dizebilir misin? Cevabını harflerle (Örn: B-A-C) sohbet kısmına yazabilirsin.")
97
 
98
  elif st.session_state.mode == "flowchart":
99
  with st.container(border=True):
@@ -136,7 +127,7 @@ elif st.session_state.mode == "flowchart":
136
  if b2.button("✅ Bitti ve Kontrol Et"):
137
  node_map = {n['id']: n['text'] for n in st.session_state.flow_nodes}
138
  schema_desc = " | ".join([f"{node_map[e['from']]} -> {node_map[e['to']]} ({e['label']})" for e in st.session_state.flow_edges])
139
- st.session_state.messages.append({"role": "user", "content": f"Algoritma bitti: {schema_desc}"})
140
  with st.spinner("Kontrol ediliyor..."):
141
  res = call_gemini(st.session_state.messages)
142
  st.session_state.messages.append({"role": "assistant", "content": res})
@@ -155,7 +146,7 @@ elif st.session_state.mode == "blackbox":
155
 
156
  st.divider()
157
  for message in st.session_state.messages:
158
- if not message["content"].startswith("SİSTEM:"):
159
  with st.chat_message(message["role"]):
160
  st.markdown(message["content"])
161
 
 
9
 
10
  st.set_page_config(page_title="StepWise: Algorithmic Thinking Mentor", layout="wide")
11
  load_dotenv()
12
+ api_key = os.getenv("API_KEY")
13
 
14
  def call_gemini(messages):
 
15
  url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-lite:generateContent?key={api_key}"
16
  headers = {'Content-Type': 'application/json'}
17
  contents = []
 
45
 
46
  if st.button("📚 Konu Tekrarı", use_container_width=True):
47
  st.session_state.mode = "chat"
48
+ st.session_state.messages = [{"role": "user", "content": f"SİSTEM: {SYSTEM_INSTRUCTIONS}\n\nGÖREV: Merhaba! Lütfen öğrenciye konuyu en baştan anlatmaya başla."}]
49
+ with st.spinner("Öğretmen hazırlanıyor..."):
50
  res = call_gemini(st.session_state.messages)
51
  st.session_state.messages.append({"role": "assistant", "content": res})
52
  st.rerun()
 
54
  if st.button("📐 Akış Şeması İnşası", use_container_width=True):
55
  st.session_state.mode = "flowchart"
56
  st.session_state.flow_nodes, st.session_state.flow_edges = [], []
57
+ st.session_state.messages = [{"role": "user", "content": f"SİSTEM: {SYSTEM_INSTRUCTIONS}\n\nGÖREV: Akış Şeması modundayız. Lütfen öğrenciye içinde mutlaka bir KARAR yapısı olan orta zorlukta bir problem ver ve çizmesini iste."}]
 
58
  with st.spinner("Senaryo oluşturuluyor..."):
59
  res = call_gemini(st.session_state.messages)
60
  st.session_state.messages.append({"role": "assistant", "content": res})
 
62
 
63
  if st.button("🎁 Girdi-Çıktı Kutusu", use_container_width=True):
64
  st.session_state.mode = "blackbox"
65
+ st.session_state.messages = [{"role": "user", "content": f"SİSTEM: {SYSTEM_INSTRUCTIONS}\n\nGÖREV: Girdi-Çıktı oyun modundayız. Gizli bir kural belirle, kategoriyi söyle ve ilk Girdi: X, Çıktı: Y örneğini ver."}]
 
 
66
  with st.spinner("Kutu hazırlanıyor..."):
67
  res = call_gemini(st.session_state.messages)
68
  st.session_state.messages.append({"role": "assistant", "content": res})
 
70
 
71
  if st.button("🔧 Algoritma Tamirhanesi", use_container_width=True):
72
  st.session_state.mode = "repair"
73
+ st.session_state.messages = [{"role": "user", "content": f"SİSTEM: {SYSTEM_INSTRUCTIONS}\n\nGÖREV: Tamirhane modundayız. Lütfen adımları birbirine karışmış bozuk bir senaryo ver ve öğrenciden doğru sıralamayı (A-B-C gibi) iste."}]
 
 
 
 
 
74
  with st.spinner("Arıza tespit ediliyor..."):
75
  res = call_gemini(st.session_state.messages)
76
  st.session_state.messages.append({"role": "assistant", "content": res})
 
84
  st.title("🤖 StepWise: Algoritmik Düşünme Mentoru")
85
 
86
  if st.session_state.mode == "repair":
87
+ st.info("🔧 **Tamirhane Modu:** Aşağıdaki adımları mantıklı bir sıraya dizebilir misin? Tahminini aşağıya yaz!")
88
 
89
  elif st.session_state.mode == "flowchart":
90
  with st.container(border=True):
 
127
  if b2.button("✅ Bitti ve Kontrol Et"):
128
  node_map = {n['id']: n['text'] for n in st.session_state.flow_nodes}
129
  schema_desc = " | ".join([f"{node_map[e['from']]} -> {node_map[e['to']]} ({e['label']})" for e in st.session_state.flow_edges])
130
+ st.session_state.messages.append({"role": "user", "content": f"SİSTEM: Öğrenci şemayı bitirdi. Yapı şu şekilde: {schema_desc}. Lütfen analiz et ve geri bildirim ver."})
131
  with st.spinner("Kontrol ediliyor..."):
132
  res = call_gemini(st.session_state.messages)
133
  st.session_state.messages.append({"role": "assistant", "content": res})
 
146
 
147
  st.divider()
148
  for message in st.session_state.messages:
149
+ if not message["content"].startswith("SİSTEM"):
150
  with st.chat_message(message["role"]):
151
  st.markdown(message["content"])
152