ll7098ll commited on
Commit
6ff3a41
·
verified ·
1 Parent(s): 95eeea9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -52
app.py CHANGED
@@ -1,76 +1,73 @@
1
- import gradio as gr
2
- import google.generativeai as genai
3
  import os
4
  import time
5
 
6
- # Google Gemini API 키 설정
 
 
 
7
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
8
 
9
- # 모델 설정
10
  generation_config = {
11
  "temperature": 1,
12
- "top_p": 0.8,
13
  "top_k": 64,
14
- "max_output_tokens": 15000,
15
  "response_mime_type": "text/plain",
16
  }
17
 
18
  model = genai.GenerativeModel(
19
- model_name="gemini-1.5-pro-exp-0827",
20
  generation_config=generation_config,
21
  )
22
 
23
- # 시스템 프롬프트
24
- SYSTEM_PROMPT = """
25
- 당신은 창의적인 발명가이자 마이크로비트 전문가입니다. Python 코딩 전문가입니다.
26
- 사용자가 선택한 크로비트 센서 조합을 기반으로,
27
- 흥미롭고 실용적인 발명품 아이디어를 3가지 이상 제안해주세요.
28
- 최대한 다양한 분야의 사례를 제공해야 하며(가능하면 식물과 관련된 것은 피해), 특이하고 창의적인 아이디어를 우선적으로 제시해야 합니다.
29
- 입력할 때마다 다른 발명품을 출력해야 합니다.
30
-
31
- **응답 형식:**
32
-
33
- 1. **발명품 아이디어:** (간략한 설명)
34
- 2. **활용 센서:** (선택된 센서 목록)
35
- 3. **상세 설명:** (아이디어에 대한 자세한 설명, 작동 방식, 활용 예시 포함)
36
- 4. **추가 정보:** (프로그래밍 팁, 관련 튜토리얼 링크 등)
 
 
 
 
37
  """
38
 
 
 
 
39
 
40
- def generate_invention_idea(selected_sensors):
41
- """
42
- 선택된 센서 조합을 기반으로 발명품 아이디어를 생성합니다.
43
- """
44
- sensor_list = ", ".join(selected_sensors)
45
-
46
- prompt = [
47
- SYSTEM_PROMPT,
48
- f"**선택된 센서:** {sensor_list}",
49
- ]
50
-
51
- response = model.generate_content(prompt, stream=True)
52
- collected_text = ""
53
- for token in response:
54
- chunk = token.text
55
- collected_text += chunk
56
- yield collected_text
57
- time.sleep(0.03)
58
-
59
 
60
- # 센서 목록 (체크박스 옵션)
61
- sensor_options = [
62
- "가속도 센서", "자기장 센서", "광 센서", "온도 센서", "터치 센서", "버튼",
63
- "초음파 센서", "토양 수분 센서", "조도 센서", "소리 센서", "온습도 센서",
64
- "가스 센서", "적외선 센서", "컬러 센서", "GPS 모듈", "RFID 모듈"
65
- ]
 
 
 
66
 
67
- # Gradio 인터페이스
68
  iface = gr.Interface(
69
- fn=generate_invention_idea,
70
- inputs=gr.CheckboxGroup(choices=sensor_options, label="마이크로비트 센서 선택"),
71
- outputs=gr.Textbox(lines=15, label="발명품 아이디어"),
72
- title="마이크로비트 발명품 아이디어 생성기",
73
- description="원하는 센서를 선택하면, 마이크로비트를 활용한 발명품 아이디어를 제안해줍니다.",
 
 
 
74
  )
75
 
76
  # 인터페이스 실행
 
 
 
1
  import os
2
  import time
3
 
4
+ import google.generativeai as genai
5
+ import gradio as gr
6
+
7
+ # Google Gemini API 설정
8
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
9
 
 
10
  generation_config = {
11
  "temperature": 1,
12
+ "top_p": 0.95,
13
  "top_k": 64,
14
+ "max_output_tokens": 8192,
15
  "response_mime_type": "text/plain",
16
  }
17
 
18
  model = genai.GenerativeModel(
19
+ model_name="gemini-1.5-pro",
20
  generation_config=generation_config,
21
  )
22
 
23
+ # 프롬프트 생성 함수
24
+ def generate_prompt(food, atmosphere):
25
+ return f"""주류 전문가, 주류 페어링 전문가가 되어 음 질문에 답변해줘.
26
+ ## 안주 정보와 분위기에 맞는 술을 5가지 추천해줘. 최대 8개까지만 추천하고, 표 형식활용해서 보좋게 정리해줘.
27
+ ### 입력:
28
+ * 안주 정보: {food}
29
+ * 분위기 상황: {atmosphere}
30
+ ### 출력:
31
+ 0. 안주 정보와 분위기 분석
32
+ * 안주의 맛, 향, 식감 등 특징
33
+ * 분위기 분석 (어떤 분위기에 어울리는지)
34
+ 1. 추천 주류 목록 (안주 특성, 분위기 및 상황과 주류 특징을 연결지어줘)
35
+ | 주류 카테고리 | 추천 주류 | 페어링 이유 |
36
+ |---|---|---|
37
+ | 예시 | 예시 | 예시 |
38
+ 2. 주류 정보 (목록 중 추천하는 주류 1~2개만 골라서 소개)
39
+ * 기본 정보 (종류, 도수, 원산지 등)
40
+ * 간단한 맛이나 향 설명
41
  """
42
 
43
+ # 술 추천 함수 (실시간 텍스트 출력)
44
+ def recommend_drinks(food, atmosphere):
45
+ prompt = generate_prompt(food, atmosphere)
46
 
47
+ # 초기 빈 텍스트 설정
48
+ full_text = ""
49
+ yield full_text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
+ try:
52
+ # 스트림 모드 활성화
53
+ response = model.generate_content([prompt], stream=True)
54
+ for chunk in response.response:
55
+ full_text += chunk.text
56
+ yield full_text
57
+ time.sleep(0.05) # 약간의 지연 추가
58
+ except Exception as e:
59
+ yield f"에러 발생: {str(e)}"
60
 
61
+ # Gradio 인터페이스 정
62
  iface = gr.Interface(
63
+ fn=recommend_drinks,
64
+ inputs=[
65
+ gr.Textbox(label="안주 정보"),
66
+ gr.Textbox(label="분위기 상황"),
67
+ ],
68
+ outputs=gr.Textbox(label="추천 결과", lines=20), # 출력 텍스트 박스 크기 조정
69
+ title="AI 술 추천",
70
+ description="안주 정보와 분위기 및 상황을 입력하면 어울리는 술을 추천해줍니다.",
71
  )
72
 
73
  # 인터페이스 실행