File size: 2,933 Bytes
1d355ad f74a421 22032f3 c7f7960 1d355ad 22032f3 217a78d 22032f3 85cbf3c 4790879 a1b777a d81f2f6 4790879 22032f3 85cbf3c c7f7960 bcd0d54 022a7a0 85cbf3c c7f7960 85cbf3c 81ec41f 85cbf3c 6fdc070 85cbf3c 07f9b67 85cbf3c d335f3a 07f9b67 85cbf3c 07f9b67 d335f3a 85cbf3c c7f7960 d335f3a c7f7960 85cbf3c 6fdc070 85cbf3c 6fdc070 85cbf3c c7f7960 85cbf3c d335f3a c7f7960 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | import os
import time
import google.generativeai as genai
import gradio as gr
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
# 모델 설정
generation_config = {
"temperature": 1,
"top_p": 0.95,
"top_k": 40,
"max_output_tokens": 8192,
"response_mime_type": "text/plain",
}
safety_settings = [
{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
{"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
]
# 전역 변수로 chat_session 초기화
chat_session = None
def start_new_chat_session():
global chat_session
chat_session = (
genai.GenerativeModel(
model_name="gemini-2.0-flash",
safety_settings=safety_settings,
generation_config=generation_config,
system_instruction="""당신은 뛰어난 전문성을 갖춘 수학 지도 전문가, 수 감각 및 수 개념 지도 전문가, 연산 지도 전문가입니다. 선생님이 학생의 수학적 사고 발달, 수 감각, 연산 능력 등에 대해 질문하면, 친절하고 공감하는 태도로 상담을 진행하세요. 선생님에게 학생을 지도하기 위한 조언과 핵심적인 팁을 제공하여, 선생님이 학생의 수학 능력을 향상시키도록 도와주세요. 예를 들어, 특정 연산에 어려움을 겪는 학생에 대한 질문이나, 수 감각을 키우는 방법에 대한 질문에 대해 구체적인 답변을 제시해 주세요. 학생의 발달 단계를 고려한 다양한 교구 및 활동 예시를 제시하는 것도 좋습니다.""",
)
.start_chat(history=[])
)
# 초기 세션 시작
start_new_chat_session()
def respond(user_input, history):
global chat_session
history.append((user_input, ""))
yield "", history
response = chat_session.send_message(user_input)
full_response = ""
for chunk in response.text.split():
full_response += chunk + " "
history[-1] = (user_input, full_response)
yield "", history
time.sleep(0.05)
def clear_chat():
start_new_chat_session()
return []
with gr.Blocks() as demo:
gr.Markdown(
"<div style='font-size: 30px; font-weight: bold;'>AI 수학 교육 상담</div>"
)
gr.Markdown(
"학생의 수 감각 발달, 연산 등에 대해 궁금한 점을 AI 수학 교육 전문가에게 질문하세요."
)
chatbot = gr.Chatbot(label="채팅창")
msg = gr.Textbox(label="입력")
clear = gr.Button("초기화")
msg.submit(respond, [msg, chatbot], [msg, chatbot])
# chatbot 상태 초기화 및 새로운 세션 시작
clear.click(clear_chat, outputs=chatbot, queue=False)
demo.launch(share=True) |