| | import gradio as gr |
| | import google.generativeai as genai |
| | import os |
| | import time |
| |
|
| | |
| | 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 λͺ¨λ" |
| | ] |
| |
|
| | |
| | iface = gr.Interface( |
| | fn=generate_invention_idea, |
| | inputs=gr.CheckboxGroup(choices=sensor_options, label="λ§μ΄ν¬λ‘λΉνΈ μΌμ μ ν"), |
| | outputs=gr.Textbox(lines=15, label="λ°λͺ
ν μμ΄λμ΄"), |
| | title="λ§μ΄ν¬λ‘λΉνΈ λ°λͺ
ν μμ΄λμ΄ μμ±κΈ°", |
| | description="μνλ μΌμλ₯Ό μ ννλ©΄, λ§μ΄ν¬λ‘λΉνΈλ₯Ό νμ©ν λ°λͺ
ν μμ΄λμ΄λ₯Ό μ μν΄μ€λλ€.", |
| | ) |
| |
|
| | |
| | iface.launch() |