ll7098ll commited on
Commit
85cbf3c
·
verified ·
1 Parent(s): 2d890fe

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -33
app.py CHANGED
@@ -1,64 +1,80 @@
1
  import os
2
  import time
3
-
4
  import google.generativeai as genai
5
  import gradio as gr
6
 
7
- # Google Gemini API 키 설정
8
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
9
 
10
  # 모델 설정
11
  generation_config = {
12
- "temperature": 0.8,
13
  "top_p": 0.95,
14
  "top_k": 64,
15
- "max_output_tokens": 1024,
16
  "response_mime_type": "text/plain",
17
  }
18
- model = genai.GenerativeModel(
19
- model_name="gemini-1.5-pro",
20
- generation_config=generation_config,
21
- system_instruction="""뛰어난 전문성을 갖춘 언어 치료 전문가, 한글 교육 전문가, 한국어 발음 교정 전문가로서 친절하고 공감하는 태도로 사용자와 상담을 진행하세요.""",
22
- )
23
-
24
- # 상담 내용 저장
25
- chat_history = []
26
  chat_session = None
27
 
28
 
29
- def predict(message, history):
30
  global chat_session
31
- if chat_session is None:
32
- chat_session = model.start_chat()
 
 
 
 
 
 
 
 
 
 
33
 
34
- if message.strip() == "":
35
- return history, ""
36
 
37
- history = history + [[message, None]]
38
- response = chat_session.send_message(message).text
39
 
40
- # 타이핑 효과를 위해 한 글자씩 출력
41
- for i in range(len(response) + 1):
42
- time.sleep(0.03)
43
- yield history + [[message, response[:i]]]
 
 
 
 
 
 
 
 
44
 
45
 
46
- def new_session(chatbot, msg):
47
- global chat_session, chat_history
48
- chat_session = None
49
- chat_history = []
50
- chatbot = []
51
- msg = ""
52
- return chatbot, msg, "새로운 상담을 시작합니다."
53
 
54
 
55
- # Gradio 인터페이스 설정
56
  with gr.Blocks() as demo:
 
 
 
 
 
 
57
  chatbot = gr.Chatbot(label="채팅창")
58
  msg = gr.Textbox(label="입력")
59
  clear = gr.Button("초기화")
60
 
61
- msg.submit(predict, [msg, chatbot], [chatbot, msg])
62
- clear.click(new_session, [chatbot, msg], [chatbot, msg, msg])
 
63
 
64
  demo.launch(share=True)
 
1
  import os
2
  import time
 
3
  import google.generativeai as genai
4
  import gradio as gr
5
 
 
6
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
7
 
8
  # 모델 설정
9
  generation_config = {
10
+ "temperature": 1,
11
  "top_p": 0.95,
12
  "top_k": 64,
13
+ "max_output_tokens": 15000,
14
  "response_mime_type": "text/plain",
15
  }
16
+ safety_settings = [
17
+ {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
18
+ {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
19
+ {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
20
+ {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
21
+ ]
22
+
23
+ # 전역 변수로 chat_session 초기화
24
  chat_session = None
25
 
26
 
27
+ def start_new_chat_session():
28
  global chat_session
29
+ chat_session = (
30
+ genai.GenerativeModel(
31
+ model_name="gemini-1.5-pro",
32
+ safety_settings=safety_settings,
33
+ generation_config=generation_config,
34
+ system_instruction="""당신은 뛰어난 전문성을 갖춘 언어 치료 전문가, 한글 교육 전문가, 한국어 발음 교정 전문가입니다.
35
+ 선생님이 학생의 언어 발달, 발음, 문장 표현 등에 대해 질문하면, 친절하고 공감하는 태도로 상담을 진행하세요.
36
+ 선생님에게 학생을 지도하기 위한 조언과 핵심적인 팁을 제공하여, 선생님이 학생의 언어 능력을 향상시키도록 도와주세요.""",
37
+ )
38
+ .start_chat(history=[])
39
+ )
40
+
41
 
42
+ # 초기 세션 시작
43
+ start_new_chat_session()
44
 
 
 
45
 
46
+ def respond(user_input, history):
47
+ global chat_session
48
+ history.append((user_input, ""))
49
+ yield "", history
50
+
51
+ response = chat_session.send_message(user_input)
52
+ full_response = ""
53
+ for chunk in response.text.split():
54
+ full_response += chunk + " "
55
+ history[-1] = (user_input, full_response)
56
+ yield "", history
57
+ time.sleep(0.05)
58
 
59
 
60
+ def clear_chat():
61
+ start_new_chat_session()
62
+ return []
 
 
 
 
63
 
64
 
 
65
  with gr.Blocks() as demo:
66
+ gr.Markdown(
67
+ "<div style='font-size: 30px; font-weight: bold;'>AI 언어 교육 상담</div>"
68
+ )
69
+ gr.Markdown(
70
+ "학생의 언어 발달, 발음, 문장 표현 등에 대해 궁금한 점을 AI 언어 교육 전문가에게 질문하세요."
71
+ )
72
  chatbot = gr.Chatbot(label="채팅창")
73
  msg = gr.Textbox(label="입력")
74
  clear = gr.Button("초기화")
75
 
76
+ msg.submit(respond, [msg, chatbot], [msg, chatbot])
77
+ # chatbot 상태 초기화 새로운 세션 시작
78
+ clear.click(clear_chat, outputs=chatbot, queue=False)
79
 
80
  demo.launch(share=True)