lugiiing commited on
Commit
18d821d
1 Parent(s): 13defc9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +107 -104
app.py CHANGED
@@ -1,104 +1,107 @@
1
- import os
2
- from openai import OpenAI
3
- import streamlit as st
4
- #from dotenv import load_dotenv
5
-
6
-
7
- # from streamlit_chat import message
8
-
9
- # 스트림릿이랑 파이썬, vs코드 같은 폴더에
10
- # 이 파일도 같은 폴더에 넣어야하는지는 모르겠움,,
11
-
12
- # import streamlit as st
13
- # from io import StringIO
14
-
15
- # 경로 /Users/gyuribyun/Documents/legoapp
16
- # 경로 터미널에 입력 후(cd 경로 복붙)
17
- # streamlit run app.py로 링크 받기
18
-
19
-
20
- # 타이틀 적용, # 특수 이모티콘 삽입 예시
21
- # emoji: https://streamlit-emoji-shortcodes-streamlit-app-gwckff.streamlit.app/
22
- st.title(':santa:레고스파이크 할아버지')
23
-
24
- # 캡션 적용
25
- st.caption('레고스파이크 프라임을 이용한 코드를 구성할 때 어떤 블럭을 사용해야할 지 상황에 맞는 도움을 제공하는 친절한 레고할아버지 입니다. 선물:gift:같은 도움을 받아보세요!')
26
-
27
-
28
- # 마크다운 부가설명
29
- st.markdown('###### openAI key를 입력하고, 코드가 필요한 상황, 작동 내용, 작동 조건, 입력장치, 출력장치를 각각 입력한다음 :red[코드블럭 추천받기] 버튼을 눌러주세요.:sparkles:')
30
-
31
- # api key
32
- api_key = st.text_input(label='openAI의 api key를 입력하세요.', placeholder='sk-...', type='password')
33
-
34
-
35
- client = OpenAI()
36
- OpenAI.api_key = api_key
37
-
38
-
39
- # 텍스트 입력
40
- situation = st.text_input(
41
- label='무슨 상황인가요?',
42
- placeholder='예시: 자율주행'
43
- )
44
- st.write(f'선택한 상황: :violet[{situation}]')
45
-
46
-
47
- # 텍스트 입력
48
- condition = st.text_input(
49
- label='작동 조건이 있나요?',
50
- placeholder='예시: 벽에 닿음'
51
- )
52
- st.write(f'선택한 상황: :violet[{condition}]')
53
-
54
-
55
- # 텍스트 입력
56
- reaction = st.text_input(
57
- label='어떤 작동이 일어나야 하나요?',
58
- placeholder='예시: 모터 멈춤'
59
- )
60
- st.write(f'선택한 상황: :violet[{reaction}]')
61
-
62
-
63
- # 텍스트 입력
64
- input_sensor = st.text_input(
65
- label='입력 장치로 무엇을 사용하나요?',
66
- placeholder='예시: 거리 센서'
67
- )
68
- st.write(f'선택한 상황: :violet[{input_sensor}]')
69
-
70
-
71
- # 텍스트 입력
72
- output = st.text_input(
73
- label='출력 장치로 무엇을 사용하나요?',
74
- placeholder='예시: 모터'
75
- )
76
- st.write(f'선택한 상황: :violet[{output}]')
77
-
78
- prompt = f'user:[상황- 금고 잠그기, 작동- 모터 돌리기, 조건- 프로그램이 시작될 때, 입력장치- 없음,출력장치- A모터, B모터], bot: [프로그램을 시작할 때, A모터 속도 설정, 지정된 시간만큼 A모터 작동, A모터를 위치로 이동, 상대 모터 위치를 설정, 부드러운 정지], user: [상황- 인식한 색에 따라 소리 내기, 작동- 효과음 재생, 조건- 노란색 인식, 입력장치- 컬러 센서, 출력장치- 스피커], bot: [허브 버튼을 누를 때, 조건 기다리기, 색상?, 재생하기], user: [상황- 힘센서를 눌러 집게 오므렸다 펴기, 작동- 모터 동작, 조건- 힘센서를 누르고 있을 때, 입력장치- 힘센서, 출력장치- 모터], bot:[프로그램을 시작할 때, 무한 루프, 만약 ~라면, 누름?, 모터 시동 출력, 아니면, 지정된 시간만큼 모터 작동, 모터 멈추기], user: [상황- 달리기 경주, 작동- 모터 동작, 조건- 프로그램 시작, 입력장치- 없음, 출력장치- 모터], bot: [프로그램을 시작할 때, 모터 동작 설정, 동작 속도 설정, 지정된 값만큼 이동], user: [상황- 벽에 부딪히면 멈추기, 작동- 모터 멈추기, 조건- 힘센서가 눌림, 입력장치- 힘센서, 출력장치- 모터], bot: [프로그램을 시작할 때, 무한 루프, 만약 ~라면, 누름?, 모터 시동, 아니면, 모터 멈추기], user: [상황- 밝기에 따라 불 끄고 켜기, 작동- 불 끄기, 조건- 밝음, 입력장치- 컬러센서, 출력장치- 라이트 매트릭스], bot: [프로그램을 시작할 때, 무한 루프, 만약 ~라면, 반사광?, 라이트 매트릭스 픽셀 밝기 설정 100. 아니면, 라이트 매트릭스 픽셀 밝기 설정 0], user: [상황- 허브가 흔들릴 때 라이트 픽셀 깜빡임, 흔들리지 않으면 멈추기, 작동- 라이트 픽셀 깜빡임, 조건- 허브 흔들림, 입력장치- 허브 자이로센서, 출력장치- 라이트 매트릭스], bot: [프로그램을 시작할 때, 무한 루프, 만약 ~라면, 허브 흔들림?, 라이트 매트릭스 픽셀 깜빡임, 아니면, 라이트 매트릭스 멈춤], user: [상황- {situation}, 작동- {reaction}, 조건- {condition}, 입력장치- {input_sensor}, 출력장치- {output}], bot'
79
-
80
-
81
- # 버튼 클릭
82
- button = st.button(':gift:코드블럭 추천받기')
83
-
84
- def generate_recommend(prompt):
85
- completions = client.completions.create (
86
- model="gpt-3.5-turbo-instruct",
87
- #engine="text-davinci-003",
88
- prompt=prompt,
89
- temperature=0,
90
- max_tokens=400,
91
- top_p=1,
92
- frequency_penalty=0,
93
- presence_penalty=0
94
- )
95
-
96
- message = completions.choices[0].text.replace(",", " ] [ ")
97
- return message
98
-
99
- # load_dotenv()
100
-
101
-
102
- if button:
103
- output = generate_recommend(prompt)
104
- st.write(f'{output}')
 
 
 
 
1
+ import os
2
+ import openai
3
+ import streamlit as st
4
+ #from dotenv import load_dotenv
5
+
6
+
7
+ # from streamlit_chat import message
8
+
9
+ # 스트림릿이랑 파이썬, vs코드 같은 폴더에
10
+ # 이 파일도 같은 폴더에 넣어야하는지는 모르겠움,,
11
+
12
+ # import streamlit as st
13
+ # from io import StringIO
14
+
15
+ # 경로 /Users/gyuribyun/Documents/legoapp
16
+ # 경로 터미널에 입력 후(cd 경로 복붙)
17
+ # streamlit run app.py로 링크 받기
18
+
19
+
20
+ # 타이틀 적용, # 특수 이모티콘 삽입 예시
21
+ # emoji: https://streamlit-emoji-shortcodes-streamlit-app-gwckff.streamlit.app/
22
+ st.title(':santa:레고스파이크 할아버지')
23
+
24
+ # 캡션 적용
25
+ st.caption('레고스파이크 프라임을 이용한 코드를 구성할 때 어떤 블럭을 사용해야할 지 상황에 맞는 도움을 제공하는 친절한 레고할아버지 입니다. 선물:gift:같은 도움을 받아보세요!')
26
+
27
+
28
+ # 마크다운 부가설명
29
+ st.markdown('###### openAI key를 입력하고, 코드가 필요한 상황, 작동 내용, 작동 조건, 입력장치, 출력장치를 각각 입력한다음 :red[코드블럭 추천받기] 버튼을 눌러주세요.:sparkles:')
30
+
31
+ # api key
32
+ api_key = st.text_input(label='openAI의 api key를 입력하세요.', placeholder='sk-...', type='password')
33
+
34
+
35
+ def generate_recommend(prompt):
36
+ completions = client.completions.create (
37
+ model="gpt-3.5-turbo-instruct",
38
+ #engine="text-davinci-003",
39
+ prompt=prompt,
40
+ temperature=0,
41
+ max_tokens=400,
42
+ top_p=1,
43
+ frequency_penalty=0,
44
+ presence_penalty=0
45
+ )
46
+
47
+ message = completions.choices[0].text.replace(",", " ] [ ")
48
+ return message
49
+
50
+ # load_dotenv()
51
+
52
+ if api_key:
53
+ openai.api_key = api_key
54
+ client = openai.Client()
55
+ else:
56
+ st.warning("유효한 API 키를 입력해 주세요.")
57
+
58
+
59
+ if api_key:
60
+ # 텍스트 입력
61
+ situation = st.text_input(
62
+ label='무슨 상황인가요?',
63
+ placeholder='예시: 자율주행'
64
+ )
65
+ st.write(f'선택한 상황: :violet[{situation}]')
66
+
67
+
68
+ # 텍스트 입력
69
+ condition = st.text_input(
70
+ label='작동 조건이 있나요?',
71
+ placeholder='예시: 벽에 닿음'
72
+ )
73
+ st.write(f'선택한 상황: :violet[{condition}]')
74
+
75
+
76
+ # 텍스트 입력
77
+ reaction = st.text_input(
78
+ label='어떤 작동이 일어나야 하나요?',
79
+ placeholder='예시: 모터 멈춤'
80
+ )
81
+ st.write(f'선택한 상황: :violet[{reaction}]')
82
+
83
+
84
+ # 텍스트 입력
85
+ input_sensor = st.text_input(
86
+ label='입력 장치로 무엇을 사용하나요?',
87
+ placeholder='예시: 거리 센서'
88
+ )
89
+ st.write(f'선택한 상황: :violet[{input_sensor}]')
90
+
91
+
92
+ # 텍스트 입력
93
+ output = st.text_input(
94
+ label='출력 장치로 무엇을 사용하나요?',
95
+ placeholder='예시: 모터'
96
+ )
97
+ st.write(f'선택한 상황: :violet[{output}]')
98
+
99
+ prompt = f'user:[상황- 금고 잠그기, 작동- 모터 돌리기, 조건- 프로그램이 시작될 때, 입력장치- 없음,출력장치- A모터, B모터], bot: [프로그램을 시작할 때, A모터 속도 설정, 지정된 시간만큼 A모터 작동, A모터를 위치로 이동, 상대 모터 위치를 설정, 부드러운 정지], user: [상황- 인식한 색에 따라 소리 내기, 작동- 효과음 재생, 조건- 노란색 인식, 입력장치- 컬러 센서, 출력장치- 스피커], bot: [허브 버튼을 누를 때, 조건 기다리기, 색상?, 재생하기], user: [상황- 힘센서를 눌러 집게 오므렸다 펴기, 작동- 모터 동작, 조건- 힘센서를 누르고 있을 때, 입력장치- 힘센서, 출력장치- 모터], bot:[프로그램을 시작할 때, 무한 루프, 만약 ~라면, 누름?, 모터 시동 출력, 아니면, 지정된 시간만큼 모터 작동, 모터 멈추기], user: [상황- 달리기 경주, 작동- 모터 동작, 조건- 프로그램 시작, 입력장치- 없음, 출력장치- 모터], bot: [프로그램을 시작할 때, 모터 동작 설정, 동작 속도 설정, 지정된 값만큼 이동], user: [상황- 벽에 부딪히면 멈추기, 작동- 모터 멈추기, 조건- 힘센서가 눌림, 입력장치- 힘센서, 출력장치- 모터], bot: [프로그램을 시작할 때, 무한 루프, 만약 ~라면, 누름?, 모터 시동, 아니면, 모터 멈추기], user: [상황- 밝기에 따라 불 끄고 켜기, 작동- 불 끄기, 조건- 밝음, 입력장치- 컬러센서, 출력장치- 라이트 매트릭스], bot: [프로그램을 시작할 때, 무한 루프, 만약 ~라면, 반사광?, 라이트 매트릭스 픽셀 밝기 설정 100. 아니면, 라이트 매트릭스 픽셀 밝기 설정 0], user: [상황- 허브가 흔들릴 때 라이트 픽�� 깜빡임, 흔들리지 않으면 멈추기, 작동- 라이트 픽셀 깜빡임, 조건- 허브 흔들림, 입력장치- 허브 자이로센서, 출력장치- 라이트 매트릭스], bot: [프로그램을 시작할 때, 무한 루프, 만약 ~라면, 허브 흔들림?, 라이트 매트릭스 픽셀 깜빡임, 아니면, 라이트 매트릭스 멈춤], user: [상황- {situation}, 작동- {reaction}, 조건- {condition}, 입력장치- {input_sensor}, 출력장치- {output}], bot'
100
+
101
+
102
+ # 버튼 클릭
103
+ button = st.button(':gift:코드블럭 추천받기')
104
+
105
+ if button:
106
+ output = generate_recommend(prompt)
107
+ st.write(f'{output}')