File size: 4,302 Bytes
cb40b3b 27a0174 cb40b3b 2f8b048 27a0174 2f8b048 27a0174 2f8b048 cb40b3b 27a0174 2f8b048 27a0174 2f8b048 27a0174 23fa4e3 27a0174 2f8b048 27a0174 2f8b048 27a0174 2f8b048 27a0174 23fa4e3 2f8b048 27a0174 2f8b048 27a0174 2f8b048 23fa4e3 27a0174 2f8b048 27a0174 23fa4e3 2f8b048 27a0174 2f8b048 27a0174 cb40b3b 27a0174 2f8b048 27a0174 2f8b048 27a0174 2f8b048 27a0174 cb40b3b 27a0174 |
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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
import gradio as gr
from google import genai
from google.genai import types
import os
def correct_grammar(text, api_key):
"""
입력된 텍스트의 문법을 자연스럽게 교정하는 함수
"""
if not api_key or not api_key.strip():
return "❌ API 키를 입력해주세요."
if not text.strip():
return "❌ 텍스트를 입력해주세요."
try:
# API 키로 클라이언트 초기화
client = genai.Client(api_key=api_key.strip())
# 시스템 지시문과 함께 API 호출
response = client.models.generate_content(
model="gemini-2.5-flash",
config=types.GenerateContentConfig(
system_instruction="""당신은 한국어 문법 교정 전문가입니다.
사용자가 입력한 문장의 문법, 맞춤법, 어순을 자연스럽게 교정해주세요.
교정된 문장만 출력하고, 별도의 설명은 하지 마세요.
만약 문장이 이미 완벽하다면 '교정할 내용이 없습니다.'라고 답변하세요.""",
temperature=0.3,
thinking_config=types.ThinkingConfig(thinking_budget=0)
),
contents=f"다음 문장을 교정해주세요: {text}"
)
return response.text
except Exception as e:
return f"❌ 오류가 발생했습니다: {str(e)}"
# Gradio 인터페이스 생성
with gr.Blocks(title="한국어 문법 교정기", theme=gr.themes.Soft()) as demo:
gr.Markdown(
"""
# 🔤 한국어 문법 교정기
**Gemini 2.5 Flash** 모델을 사용하여 한국어 문장을 자연스럽게 교정합니다.
### 📌 사용 방법
1. [Google AI Studio](https://aistudio.google.com/app/apikey)에서 API 키를 발급받으세요
2. 아래에 API 키를 입력하세요
3. 교정할 문장을 입력하고 "교정하기" 버튼을 클릭하세요
"""
)
with gr.Row():
api_key_input = gr.Textbox(
label="🔑 Gemini API Key",
placeholder="여기에 API 키를 입력하세요...",
type="password",
info="API 키는 저장되지 않으며 현재 세션에서만 사용됩니다."
)
with gr.Row():
with gr.Column():
input_text = gr.Textbox(
label="원본 문장",
placeholder="교정할 문장을 입력하세요...",
lines=6
)
submit_btn = gr.Button("✨ 교정하기", variant="primary", size="lg")
clear_btn = gr.Button("🗑️ 지우기", variant="secondary")
with gr.Column():
output_text = gr.Textbox(
label="교정된 문장",
lines=6,
show_copy_button=True
)
gr.Markdown("### 📝 예시 문장들")
gr.Examples(
examples=[
["나는 어제 학교에 갔다왔어요"],
["저는 밥을 먹고있어요"],
["그는 매우 빨리 달릴수있다"],
["이것은 정말 좋은 방법인것같아"],
["안녕하세요 저는 AI를 공부하고있는 학생입니다"],
["오늘 날씨가 너무 좋은것 같애요"],
["저희 회사는 AI기술을 개발하고 있습니다"]
],
inputs=input_text
)
# 버튼 클릭 이벤트
submit_btn.click(
fn=correct_grammar,
inputs=[input_text, api_key_input],
outputs=output_text
)
# Enter 키로도 제출 가능
input_text.submit(
fn=correct_grammar,
inputs=[input_text, api_key_input],
outputs=output_text
)
# 지우기 버튼
clear_btn.click(
fn=lambda: ("", ""),
outputs=[input_text, output_text]
)
gr.Markdown(
"""
---
### ℹ️ 안내사항
- API 키는 서버에 저장되지 않습니다
- Gemini API는 무료 tier에서도 사용 가능합니다
- 문제가 발생하면 API 키가 올바른지 확인해주세요
"""
)
# 앱 실행
if __name__ == "__main__":
demo.launch() |