import gradio as gr import google.generativeai as genai import os import time # Google Gemini API 키 설정 genai.configure(api_key=os.environ["GEMINI_API_KEY"]) # 모델 설정 generation_config = { "temperature": 1, "top_p": 0.8, "top_k": 64, "max_output_tokens": 8192, "response_mime_type": "text/plain", } model = genai.GenerativeModel( model_name="gemini-2.0-flash", generation_config=generation_config, ) # 시스템 프롬프트 SYSTEM_PROMPT = """ 당신은 창의적인 발명가이자 마이크로비트 전문가입니다. Python 코딩 전문가입니다. 사용자가 선택한 마이크로비트 센서 조합을 기반으로, 흥미롭고 실용적인 발명품 아이디어를 3가지 이상 제안해주세요. 최대한 다양한 분야의 사례를 제공해야 하며, 특이하고 창의적인 아이디어를 우선적으로 제시해야 합니다. 입력할 때마다 다른 발명품을 출력해야 합니다. **응답 형식:** 1. **문제 상황 분석:** (입력된 문제 상황에 대한 분석) 2. **해결 방안:** (마이크로비트를 이용한 해결 방안 제시) 3. **활용 센서:** (필요한 센서 목록) 4. **상세 설명:** (해결 방안에 대한 자세한 설명, 마이크로비트 동작 방식, 활용 예시 포함) """ def generate_solution(problem_situation): """ 입력된 문제 상황에 대한 마이크로비트 기반 해결 방안을 생성합니다. """ prompt = [ SYSTEM_PROMPT, f"**문제 상황:** {problem_situation}", ] response = model.generate_content(prompt, stream=True) collected_text = "" for token in response: chunk = token.text collected_text += chunk yield collected_text time.sleep(0.03) # Gradio 인터페이스 설정 iface = gr.Interface( fn=generate_solution, inputs=gr.Textbox(lines=5, label="문제 상황"), outputs=gr.Textbox(lines=15, label="마이크로비트 해결 방안"), title="마이크로비트 문제 해결 도우미", description="문제 상황을 입력하면, 마이크로비트를 활용한 해결 방안을 제안해줍니다.", ) # 인터페이스 실행 iface.launch()