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": 40, "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_invention_idea(selected_sensors): """ 선택된 센서 조합을 기반으로 발명품 아이디어를 생성합니다. """ sensor_list = ", ".join(selected_sensors) prompt = [ SYSTEM_PROMPT, f"**선택된 센서:** {sensor_list}", ] 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) # 센서 목록 (체크박스 옵션) sensor_options = [ "가속도 센서", "자기장 센서", "광 센서", "온도 센서", "터치 센서", "버튼", "초음파 센서", "토양 수분 센서", "조도 센서", "소리 센서", "온습도 센서", "가스 센서", "적외선 센서", "컬러 센서", "GPS 모듈", "RFID 모듈" ] # Gradio 인터페이스 설정 iface = gr.Interface( fn=generate_invention_idea, inputs=gr.CheckboxGroup(choices=sensor_options, label="마이크로비트 센서 선택"), outputs=gr.Textbox(lines=15, label="발명품 아이디어"), title="마이크로비트 발명품 아이디어 생성기", description="원하는 센서를 선택하면, 마이크로비트를 활용한 발명품 아이디어를 제안해줍니다.", ) # 인터페이스 실행 iface.launch()