Update app.py
Browse files
app.py
CHANGED
|
@@ -2,63 +2,56 @@ import os
|
|
| 2 |
import streamlit as st
|
| 3 |
import google.generativeai as genai
|
| 4 |
|
| 5 |
-
#
|
| 6 |
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
|
| 7 |
|
| 8 |
# 모델 설정
|
| 9 |
generation_config = {
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
}
|
| 16 |
|
| 17 |
model = genai.GenerativeModel(
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
)
|
| 22 |
|
| 23 |
|
| 24 |
-
# Streamlit 앱
|
| 25 |
-
st.
|
| 26 |
|
| 27 |
-
|
| 28 |
-
"""
|
| 29 |
-
<div style='font-size: 30px; font-weight: bold; text-align: center;'>질문하는 AI 선생님</div>
|
| 30 |
-
<div style='text-align: center; margin-bottom: 20px;'>학습주제를 입력하면, AI가 끊임 없는 질문을 통해 스스로 학습하게 도와줍니다.</div>
|
| 31 |
-
""",
|
| 32 |
-
unsafe_allow_html=True
|
| 33 |
-
)
|
| 34 |
-
|
| 35 |
-
# 세션 상태 초기화 (채팅 기록 저장)
|
| 36 |
if "messages" not in st.session_state:
|
| 37 |
st.session_state.messages = []
|
| 38 |
|
| 39 |
-
# 학습 목표 입력
|
| 40 |
-
learning_objective = st.text_input("학습 목표를 입력하세요:")
|
| 41 |
-
if learning_objective and st.session_state.messages == []:
|
| 42 |
-
st.session_state.messages.append({"role": "user", "content": learning_objective})
|
| 43 |
-
|
| 44 |
# 채팅 기록 표시
|
| 45 |
for message in st.session_state.messages:
|
| 46 |
-
|
| 47 |
-
st.
|
|
|
|
|
|
|
| 48 |
|
| 49 |
# 사용자 입력 받기
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
|
|
|
| 56 |
|
| 57 |
-
chat_session = model.start_chat(history=st.session_state.messages[:-1])
|
| 58 |
-
response = chat_session.send_message_streaming(prompt)
|
| 59 |
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
|
|
|
|
|
|
|
|
|
| 63 |
|
| 64 |
-
|
|
|
|
|
|
|
|
|
| 2 |
import streamlit as st
|
| 3 |
import google.generativeai as genai
|
| 4 |
|
| 5 |
+
# Gemini API 키 설정
|
| 6 |
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
|
| 7 |
|
| 8 |
# 모델 설정
|
| 9 |
generation_config = {
|
| 10 |
+
"temperature": 0.5,
|
| 11 |
+
"top_p": 0.95,
|
| 12 |
+
"top_k": 64,
|
| 13 |
+
"max_output_tokens": 8192,
|
| 14 |
+
"response_mime_type": "text/plain",
|
| 15 |
}
|
| 16 |
|
| 17 |
model = genai.GenerativeModel(
|
| 18 |
+
model_name="learnlm-1.5-pro-experimental",
|
| 19 |
+
generation_config=generation_config,
|
| 20 |
+
system_instruction="친절하고 든든한 튜터가 되어 학생이 목표를 달성하도록 안내하고, 학생이 주제에서 벗어나면 부드럽게 다시 집중하도록 도와주세요. 학생이 큰 개념을 단계적으로 이해하도록 돕는 질문을 하고, 그 개념을 깊이 파고들 수 있도록 탐구 질문을 던지세요. 학생이 부담을 느끼지 않도록 한 번에 한 질문만 하세요. 학생이 이해한 것을 보여주면 대화를 마무리하세요.",
|
| 21 |
)
|
| 22 |
|
| 23 |
|
| 24 |
+
# Streamlit 앱
|
| 25 |
+
st.title("AI 튜터 챗봇")
|
| 26 |
|
| 27 |
+
# 채팅 기록 저장
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
if "messages" not in st.session_state:
|
| 29 |
st.session_state.messages = []
|
| 30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
# 채팅 기록 표시
|
| 32 |
for message in st.session_state.messages:
|
| 33 |
+
if message["role"] == "user":
|
| 34 |
+
st.chat_message("user").write(message["content"])
|
| 35 |
+
else:
|
| 36 |
+
st.chat_message("assistant").write(message["content"])
|
| 37 |
|
| 38 |
# 사용자 입력 받기
|
| 39 |
+
user_input = st.chat_input("질문을 입력하세요.")
|
| 40 |
+
|
| 41 |
+
# 사용자 입력 처리
|
| 42 |
+
if user_input:
|
| 43 |
+
# 채팅 기록에 사용자 입력 추가
|
| 44 |
+
st.session_state.messages.append({"role": "user", "content": user_input})
|
| 45 |
+
st.chat_message("user").write(user_input)
|
| 46 |
|
|
|
|
|
|
|
| 47 |
|
| 48 |
+
# Gemini API 호출
|
| 49 |
+
chat_session = model.start_chat(
|
| 50 |
+
history=st.session_state.messages
|
| 51 |
+
)
|
| 52 |
+
|
| 53 |
+
response = chat_session.send_message(user_input)
|
| 54 |
|
| 55 |
+
# 응답 처리 및 채팅 기록에 추가
|
| 56 |
+
st.session_state.messages.append({"role": "assistant", "content": response.text})
|
| 57 |
+
st.chat_message("assistant").write(response.text)
|