Download app.py from ssboost/test1: direct link, hf CLI and curl.
- Browser
- Download file 4.3 kB
-
https://huggingface.co/spaces/ssboost/test1/resolve/main/app.py
- Command line
-
hf download hf://spaces/ssboost/test1/app.py
-
curl -L -o app.py https://huggingface.co/spaces/ssboost/test1/resolve/main/app.py
4.3 kB
| 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() |