ll7098ll commited on
Commit
06c54b2
·
verified ·
1 Parent(s): 6f8e047

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -22
app.py CHANGED
@@ -1,8 +1,6 @@
1
  import os
2
- import time
3
  import openai
4
  import streamlit as st
5
- from streamlit_chat import message
6
 
7
  # OpenAI API 설정
8
  openai_api_key = os.getenv("OPENAI_API_KEY")
@@ -11,11 +9,8 @@ openai.api_key = openai_api_key
11
  def openai_chat(text):
12
  try:
13
  response = openai.ChatCompletion.create(
14
- model="gpt-4o",
15
- messages=[
16
- {"role": "system", "content": "학생들이 수업 주제나 내용을 입력하면, 질문을 통해서 학생들 스스로가 그 주제나 내용을 이해할 수 있도록, 마치 소크라테스처럼 끊임 없는 질문을 통해서 스스로 깨달을 수 있도록 도와주세요. 친절하고 든든한 튜터가 되어 학생이 목표를 달성하도록 안내하고, 학생이 주제에서 벗어나면 부드럽게 다시 집중하도록 도와주세요. 학생이 큰 개념을 단계적으로 이해하도록 돕는 질문을 하고, 그 개념을 깊이 파고들 수 있도록 탐구 질문을 던지세요. 학생이 부담을 느끼지 않도록 한 번에 한 질문만 하세요. 학생이 이해한 것을 보여주면 대화를 마무리하세요. 정답을 제시하기 보다는 질문을 통해서 학생이 스스로 이해에 도달할 수 있도록 도와주세요."},
17
- {"role": "user", "content": text}
18
- ],
19
  temperature=0.7,
20
  max_tokens=2000,
21
  top_p=0.9,
@@ -102,39 +97,39 @@ st.markdown(
102
  st.markdown("<div class='main-title'>AI 튜터 🎓</div>", unsafe_allow_html=True)
103
 
104
  # 채팅 세션 초기화
105
- if "chat_session" not in st.session_state:
106
- st.session_state.chat_session = []
107
-
108
- # 채팅 메시지 표시
109
  if "messages" not in st.session_state:
110
- st.session_state.messages = []
 
 
111
 
112
  # 사용자와 AI의 아이콘 URL 설정
113
  user_icon_url = "https://cdn-icons-png.flaticon.com/512/1995/1995531.png" # 학생 아이콘 (책을 든 학생)
114
  assistant_icon_url = "https://cdn-icons-png.flaticon.com/512/4323/4323008.png" # 튜터 아이콘 (안경 쓴 선생님)
115
 
 
116
  for message in st.session_state.messages:
117
- role_class = "chat-message-user" if message["role"] == "user" else "chat-message-assistant"
118
- avatar_url = user_icon_url if message["role"] == "user" else assistant_icon_url
119
- avatar_class = "chat-avatar-user" if message["role"] == "user" else "chat-avatar"
120
- st.markdown(
121
- f"<div class='chat-message {role_class}'><img src='{avatar_url}' class='chat-avatar {avatar_class}'>{message['content']}</div>",
122
- unsafe_allow_html=True
123
- )
 
124
 
125
  # 사용자 입력 받기
126
  if prompt := st.chat_input("🖋학습 내용을 입력하면 AI 튜터가 질문을 통해서 개념을 이해하도록 도와줍니다."):
 
127
  st.session_state.messages.append({"role": "user", "content": prompt})
128
  st.markdown(f"<div class='chat-message chat-message-user'><img src='{user_icon_url}' class='chat-avatar chat-avatar-user'>{prompt}</div>", unsafe_allow_html=True)
129
 
130
  # OpenAI API 호출
131
  response = openai_chat(prompt)
132
- st.markdown(f"<div class='chat-message chat-message-assistant'><img src='{assistant_icon_url}' class='chat-avatar'>{response}</div>", unsafe_allow_html=True)
133
  st.session_state.messages.append({"role": "assistant", "content": response})
 
134
 
135
  # ���기화 버튼을 사이드바로 이동
136
  with st.sidebar:
137
  if st.button("💡 초기화"):
138
- st.session_state.chat_session = []
139
- st.session_state.messages = []
140
  st.rerun()
 
1
  import os
 
2
  import openai
3
  import streamlit as st
 
4
 
5
  # OpenAI API 설정
6
  openai_api_key = os.getenv("OPENAI_API_KEY")
 
9
  def openai_chat(text):
10
  try:
11
  response = openai.ChatCompletion.create(
12
+ model="gpt-4",
13
+ messages=st.session_state.messages, # 전체 대화 세션 전달
 
 
 
14
  temperature=0.7,
15
  max_tokens=2000,
16
  top_p=0.9,
 
97
  st.markdown("<div class='main-title'>AI 튜터 🎓</div>", unsafe_allow_html=True)
98
 
99
  # 채팅 세션 초기화
 
 
 
 
100
  if "messages" not in st.session_state:
101
+ st.session_state.messages = [
102
+ {"role": "system", "content": "학생들이 수업 주제나 내용을 입력하면, 질문을 통해서 학생들 스스로가 그 주제나 내용을 이해할 수 있도록, 마치 소크라테스처럼 끊임 없는 질문을 통해 스스로 깨달을 수 있도록 도와주세요. 친절하고 든든한 튜터가 되어 학생이 목표를 달성하도록 안내하고, 학생이 주제에서 벗어나면 부드럽게 다시 집중하도록 도와주세요. 학생이 큰 개념을 단계적으로 이해하도록 돕는 질문을 하고, 그 개념을 깊이 파고들 수 있도록 탐구 질문을 던지세요. 학생이 부담을 느끼지 않도록 한 번에 한 질문만 하세요. 학생이 이해한 것을 보여주면 대화를 마무리하세요. 정답을 제시하기 보다는 질문을 통해서 학생이 스스로 이해에 도달할 수 있도록 도와주세요."}
103
+ ]
104
 
105
  # 사용자와 AI의 아이콘 URL 설정
106
  user_icon_url = "https://cdn-icons-png.flaticon.com/512/1995/1995531.png" # 학생 아이콘 (책을 든 학생)
107
  assistant_icon_url = "https://cdn-icons-png.flaticon.com/512/4323/4323008.png" # 튜터 아이콘 (안경 쓴 선생님)
108
 
109
+ # 채팅 메시지 표시
110
  for message in st.session_state.messages:
111
+ if message["role"] != "system":
112
+ role_class = "chat-message-user" if message["role"] == "user" else "chat-message-assistant"
113
+ avatar_url = user_icon_url if message["role"] == "user" else assistant_icon_url
114
+ avatar_class = "chat-avatar-user" if message["role"] == "user" else "chat-avatar"
115
+ st.markdown(
116
+ f"<div class='chat-message {role_class}'><img src='{avatar_url}' class='chat-avatar {avatar_class}'>{message['content']}</div>",
117
+ unsafe_allow_html=True
118
+ )
119
 
120
  # 사용자 입력 받기
121
  if prompt := st.chat_input("🖋학습 내용을 입력하면 AI 튜터가 질문을 통해서 개념을 이해하도록 도와줍니다."):
122
+ # 사용자의 메시지를 세션에 추가
123
  st.session_state.messages.append({"role": "user", "content": prompt})
124
  st.markdown(f"<div class='chat-message chat-message-user'><img src='{user_icon_url}' class='chat-avatar chat-avatar-user'>{prompt}</div>", unsafe_allow_html=True)
125
 
126
  # OpenAI API 호출
127
  response = openai_chat(prompt)
 
128
  st.session_state.messages.append({"role": "assistant", "content": response})
129
+ st.markdown(f"<div class='chat-message chat-message-assistant'><img src='{assistant_icon_url}' class='chat-avatar'>{response}</div>", unsafe_allow_html=True)
130
 
131
  # ���기화 버튼을 사이드바로 이동
132
  with st.sidebar:
133
  if st.button("💡 초기화"):
134
+ del st.session_state.messages # 메시지 세션 상태 삭제
 
135
  st.rerun()