ssboost commited on
Commit
2f8b048
·
verified ·
1 Parent(s): 52a3369

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -15
app.py CHANGED
@@ -3,17 +3,20 @@ from google import genai
3
  from google.genai import types
4
  import os
5
 
6
- # Gemini API 클라이언트 초기화
7
- client = genai.Client(api_key=os.environ.get("GEMINI_API_KEY"))
8
-
9
- def correct_grammar(text):
10
  """
11
  입력된 텍스트의 문법을 자연스럽게 교정하는 함수
12
  """
 
 
 
13
  if not text.strip():
14
- return "텍스트를 입력해주세요."
15
 
16
  try:
 
 
 
17
  # 시스템 지시문과 함께 API 호출
18
  response = client.models.generate_content(
19
  model="gemini-2.5-flash",
@@ -22,8 +25,8 @@ def correct_grammar(text):
22
  사용자가 입력한 문장의 문법, 맞춤법, 어순을 자연스럽게 교정해주세요.
23
  교정된 문장만 출력하고, 별도의 설명은 하지 마세요.
24
  만약 문장이 이미 완벽하다면 '교정할 내용이 없습니다.'라고 답변하세요.""",
25
- temperature=0.3, # 일관된 교정을 위해 낮은 temperature 설정
26
- thinking_config=types.ThinkingConfig(thinking_budget=0) # 빠른 응답을 위해 thinking 비활성화
27
  ),
28
  contents=f"다음 문장을 교정해주세요: {text}"
29
  )
@@ -31,39 +34,57 @@ def correct_grammar(text):
31
  return response.text
32
 
33
  except Exception as e:
34
- return f"오류가 발생했습니다: {str(e)}"
35
 
36
  # Gradio 인터페이스 생성
37
- with gr.Blocks(title="한국어 문법 교정기") as demo:
38
  gr.Markdown(
39
  """
40
  # 🔤 한국어 문법 교정기
41
  **Gemini 2.5 Flash** 모델을 사용하여 한국어 문장을 자연스럽게 교정합니다.
 
 
 
 
 
42
  """
43
  )
44
 
 
 
 
 
 
 
 
 
45
  with gr.Row():
46
  with gr.Column():
47
  input_text = gr.Textbox(
48
  label="원본 문장",
49
  placeholder="교정할 문장을 입력하세요...",
50
- lines=5
51
  )
52
- submit_btn = gr.Button("교정하기", variant="primary")
 
53
 
54
  with gr.Column():
55
  output_text = gr.Textbox(
56
  label="교정된 문장",
57
- lines=5
 
58
  )
59
 
 
60
  gr.Examples(
61
  examples=[
62
  ["나는 어제 학교에 갔다왔어요"],
63
  ["저는 밥을 먹고있어요"],
64
  ["그는 매우 빨리 달릴수있다"],
65
  ["이것은 정말 좋은 방법인것같아"],
66
- ["안녕하세요 저는 AI를 공부하고있는 학생입니다"]
 
 
67
  ],
68
  inputs=input_text
69
  )
@@ -71,16 +92,32 @@ with gr.Blocks(title="한국어 문법 교정기") as demo:
71
  # 버튼 클릭 이벤트
72
  submit_btn.click(
73
  fn=correct_grammar,
74
- inputs=input_text,
75
  outputs=output_text
76
  )
77
 
78
  # Enter 키로도 제출 가능
79
  input_text.submit(
80
  fn=correct_grammar,
81
- inputs=input_text,
82
  outputs=output_text
83
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
 
85
  # 앱 실행
86
  if __name__ == "__main__":
 
3
  from google.genai import types
4
  import os
5
 
6
+ def correct_grammar(text, api_key):
 
 
 
7
  """
8
  입력된 텍스트의 문법을 자연스럽게 교정하는 함수
9
  """
10
+ if not api_key or not api_key.strip():
11
+ return "❌ API 키를 입력해주세요."
12
+
13
  if not text.strip():
14
+ return "텍스트를 입력해주세요."
15
 
16
  try:
17
+ # API 키로 클라이언트 초기화
18
+ client = genai.Client(api_key=api_key.strip())
19
+
20
  # 시스템 지시문과 함께 API 호출
21
  response = client.models.generate_content(
22
  model="gemini-2.5-flash",
 
25
  사용자가 입력한 문장의 문법, 맞춤법, 어순을 자연스럽게 교정해주세요.
26
  교정된 문장만 출력하고, 별도의 설명은 하지 마세요.
27
  만약 문장이 이미 완벽하다면 '교정할 내용이 없습니다.'라고 답변하세요.""",
28
+ temperature=0.3,
29
+ thinking_config=types.ThinkingConfig(thinking_budget=0)
30
  ),
31
  contents=f"다음 문장을 교정해주세요: {text}"
32
  )
 
34
  return response.text
35
 
36
  except Exception as e:
37
+ return f"오류가 발생했습니다: {str(e)}"
38
 
39
  # Gradio 인터페이스 생성
40
+ with gr.Blocks(title="한국어 문법 교정기", theme=gr.themes.Soft()) as demo:
41
  gr.Markdown(
42
  """
43
  # 🔤 한국어 문법 교정기
44
  **Gemini 2.5 Flash** 모델을 사용하여 한국어 문장을 자연스럽게 교정합니다.
45
+
46
+ ### 📌 사용 방법
47
+ 1. [Google AI Studio](https://aistudio.google.com/app/apikey)에서 API 키를 발급받으세요
48
+ 2. 아래에 API 키를 입력하세요
49
+ 3. 교정할 문장을 입력하고 "교정하기" 버튼을 클릭하세요
50
  """
51
  )
52
 
53
+ with gr.Row():
54
+ api_key_input = gr.Textbox(
55
+ label="🔑 Gemini API Key",
56
+ placeholder="여기에 API 키를 입력하세요...",
57
+ type="password",
58
+ info="API 키는 저장되지 않으며 현재 세션에서만 사용됩니다."
59
+ )
60
+
61
  with gr.Row():
62
  with gr.Column():
63
  input_text = gr.Textbox(
64
  label="원본 문장",
65
  placeholder="교정할 문장을 입력하세요...",
66
+ lines=6
67
  )
68
+ submit_btn = gr.Button("교정하기", variant="primary", size="lg")
69
+ clear_btn = gr.Button("🗑️ 지우기", variant="secondary")
70
 
71
  with gr.Column():
72
  output_text = gr.Textbox(
73
  label="교정된 문장",
74
+ lines=6,
75
+ show_copy_button=True
76
  )
77
 
78
+ gr.Markdown("### 📝 예시 문장들")
79
  gr.Examples(
80
  examples=[
81
  ["나는 어제 학교에 갔다왔어요"],
82
  ["저는 밥을 먹고있어요"],
83
  ["그는 매우 빨리 달릴수있다"],
84
  ["이것은 정말 좋은 방법인것같아"],
85
+ ["안녕하세요 저는 AI를 공부하고있는 학생입니다"],
86
+ ["오늘 날씨가 너무 좋은것 같애요"],
87
+ ["저희 회사는 AI기술을 개발하고 있습니다"]
88
  ],
89
  inputs=input_text
90
  )
 
92
  # 버튼 클릭 이벤트
93
  submit_btn.click(
94
  fn=correct_grammar,
95
+ inputs=[input_text, api_key_input],
96
  outputs=output_text
97
  )
98
 
99
  # Enter 키로도 제출 가능
100
  input_text.submit(
101
  fn=correct_grammar,
102
+ inputs=[input_text, api_key_input],
103
  outputs=output_text
104
  )
105
+
106
+ # 지우기 버튼
107
+ clear_btn.click(
108
+ fn=lambda: ("", ""),
109
+ outputs=[input_text, output_text]
110
+ )
111
+
112
+ gr.Markdown(
113
+ """
114
+ ---
115
+ ### ℹ️ 안내사항
116
+ - API 키는 서버에 저장되지 않습니다
117
+ - Gemini API는 무료 tier에서도 사용 가능합니다
118
+ - 문제가 발생하면 API 키가 올바른지 확인해��세요
119
+ """
120
+ )
121
 
122
  # 앱 실행
123
  if __name__ == "__main__":