Cardanoian commited on
Commit
45f40c1
β€’
1 Parent(s): 508162a

Upload 2 files

Browse files
Files changed (2) hide show
  1. api_function.py +85 -0
  2. app.py +12 -0
api_function.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ import os
3
+
4
+
5
+ import base64
6
+ import json
7
+ import http.client
8
+
9
+ # .env νŒŒμΌμ—μ„œ ν™˜κ²½ λ³€μˆ˜ λ‘œλ“œ
10
+ # Localμ—μ„œλ§Œ μ‚¬μš©
11
+ from dotenv import load_dotenv
12
+
13
+ load_dotenv()
14
+
15
+ # ν™˜κ²½ λ³€μˆ˜ κ°€μ Έμ˜€κΈ°
16
+ api_key_primary_val = os.getenv("api_key_primary_val")
17
+ API_KEY = os.getenv("API_KEY")
18
+
19
+ print(api_key_primary_val, API_KEY)
20
+
21
+
22
+ def request_hyper(subject, capacity, text):
23
+ class CompletionExecutor:
24
+ def __init__(self, host, api_key, api_key_primary_val, request_id):
25
+ self._host = host
26
+ self._api_key = api_key
27
+ self._api_key_primary_val = api_key_primary_val
28
+ self._request_id = request_id
29
+
30
+ def _send_request(self, completion_request):
31
+ headers = {
32
+ "Content-Type": "application/json; charset=utf-8",
33
+ "X-NCP-CLOVASTUDIO-API-KEY": self._api_key,
34
+ "X-NCP-APIGW-API-KEY": self._api_key_primary_val,
35
+ "X-NCP-CLOVASTUDIO-REQUEST-ID": self._request_id,
36
+ }
37
+
38
+ conn = http.client.HTTPSConnection(self._host)
39
+ conn.request(
40
+ "POST",
41
+ "/testapp/v1/chat-completions/HCX-002",
42
+ json.dumps(completion_request),
43
+ headers,
44
+ )
45
+ response = conn.getresponse()
46
+ result = json.loads(response.read().decode(encoding="utf-8"))
47
+ conn.close()
48
+ return result
49
+
50
+ def execute(self, completion_request):
51
+ res = self._send_request(completion_request)
52
+ if res["status"]["code"] == "20000":
53
+ return res["result"]["message"]
54
+ else:
55
+ return "Error"
56
+
57
+ completion_executor = CompletionExecutor(
58
+ # host='clovastudio.apigw.ntruss.com',
59
+ host="clovastudio.stream.ntruss.com",
60
+ api_key=API_KEY,
61
+ api_key_primary_val=api_key_primary_val,
62
+ request_id="624e45b741574fbab1fae6a6ea99b3a7",
63
+ )
64
+
65
+ # text = subject + "에 λŒ€ν•œ " + "Bloom의 질문 λΆ„λ₯˜ 쀑 " + capacity + "적 μ§ˆλ¬Έμ— ν•΄λ‹Ήν•˜λŠ” 질문 10개 λ§Œλ“€μ–΄μ€˜."
66
+ # preset_text = [{"role":"system","content":"λΈ”λ£Έμ˜ 질문 λΆ„λ₯˜ 6가지에 따라 주어진 μ£Όμ œμ— λŒ€ν•œ μ§ˆλ¬Έμ„ μƒμ„±ν•΄μ€˜.\n"},{"role":"user","content":"κ°œκ΅¬λ¦¬μ— λŒ€ν•œ 지식적 μ§ˆλ¬Έμ„ λ§Œλ“€μ–΄μ€˜"},{"role":"assistant","content":"개ꡬ리의 ν•™λͺ…은 λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 λ¨Ήμ΄λŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μ²œμ μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μ‚°λž€ μ‹œκΈ°λŠ” μ–Έμ œμΈκ°€μš”? 개ꡬ리의 μ²΄μ˜¨μ€ μ–΄λ–»κ²Œ μ‘°μ ˆλ˜λ‚˜μš”? 개ꡬ리의 ν”ΌλΆ€μ—λŠ” μ–΄λ–€ νŠΉμ§•μ΄ μžˆλ‚˜μš”? 개ꡬ리의 호흑 방법은 λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μ’…λ₯˜λŠ” λͺ‡ 가지 μΈκ°€μš”? 개ꡬ리의 수λͺ…은 μ–Όλ§ˆλ‚˜ λ˜λ‚˜μš”? 개ꡬ리의 독은 μ–΄λ””μ„œ λ‚˜μ˜€λ‚˜μš”? 개ꡬ리λ₯Ό λ¨ΉλŠ” 동물은 λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μšΈμŒμ†Œλ¦¬λŠ” μ–΄λ–»κ²Œ λ‚΄λ‚˜μš”? κ°œκ΅¬λ¦¬μ™€ λ‘κΊΌλΉ„λŠ” 무슨 차이가 μžˆλ‚˜μš”? κ°œκ΅¬λ¦¬μ•Œμ€ λΆ€ν™”ν•˜λŠ”λ° μ–Όλ§ˆλ‚˜ κ±Έλ¦¬λ‚˜μš”? \n\nμœ„μ˜ μ§ˆλ¬Έλ“€μ€ κ°œκ΅¬λ¦¬μ— λŒ€ν•œ 기본적인 지식을 λ¬»λŠ” μ§ˆλ¬Έλ“€μž…λ‹ˆλ‹€. 이 외에도 κ°œκ΅¬λ¦¬μ— λŒ€ν•œ λ‹€μ–‘ν•œ μ§ˆλ¬Έμ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 개ꡬ리의 μ„±μž₯ κ³Όμ •, 개ꡬ리의 μƒνƒœκ³„μ—μ„œμ˜ μ—­ν• , 개ꡬ리의 μœ μ „ν•™μ  연ꡬ 등에 λŒ€ν•œ μ§ˆλ¬Έμ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ§ˆλ¬Έλ“€μ€ κ°œκ΅¬λ¦¬μ— λŒ€ν•œ 깊이 μžˆλŠ” 지식을 μš”κ΅¬ν•˜λ©°, κ°œκ΅¬λ¦¬μ— λŒ€ν•œ 이해λ₯Ό λ†’μ΄λŠ” 데 도움이 λ©λ‹ˆλ‹€."},{"role":"user","content":"κ°œκ΅¬λ¦¬μ— λŒ€ν•œ 적용적 μ§ˆλ¬Έμ„ λ§Œλ“€μ–΄μ€˜"},{"role":"assistant","content":"개ꡬ리의 점프λ ₯을 μ΄μš©ν•˜μ—¬ ν•  수 μžˆλŠ” μŠ€ν¬μΈ λŠ” 무엇이 μžˆμ„κΉŒμš”? 개ꡬ리의 먹이 사λƒ₯ 방식을 ν™œμš©ν•œ λ‘œλ΄‡μ„ λ§Œλ“€ 수 μžˆμ„κΉŒμš”? 개ꡬ리의 ν”ΌλΆ€ ꡬ쑰λ₯Ό λͺ¨λ°©ν•œ ν™”μž₯ν’ˆμ„ κ°œλ°œν•  수 μžˆμ„κΉŒμš”? 개ꡬ리의 μšΈμŒμ†Œλ¦¬λ₯Ό μ΄μš©ν•˜μ—¬ μŒμ•…μ„ μž‘κ³‘ν•  수 μžˆμ„κΉŒμš”? 개ꡬ리의 μƒνƒœλ₯Ό κ΄€μ°°ν•˜μ—¬ ν™˜κ²½ λ³΄ν˜Έμ— ν™œμš©ν•  수 μžˆμ„κΉŒμš”? 개ꡬ리의 독을 μ΄μš©ν•˜μ—¬ μ˜μ•½ν’ˆμ„ κ°œλ°œν•  수 μžˆμ„κΉŒμš”? 개ꡬ리의 μœ μ „μžλ₯Ό μ‘°μž‘ν•˜μ—¬ μƒˆλ‘œμš΄ 생물을 λ§Œλ“€ 수 μžˆμ„κΉŒμš”? 개ꡬ리의 μ„œμ‹μ§€λ₯Ό λ³΄μ‘΄ν•˜κΈ° μœ„ν•΄ μš°λ¦¬κ°€ ν•  수 μžˆλŠ” 일은 개ꡬ리의 멸쒅을 막기 μœ„ν•΄ μš°λ¦¬κ°€ ν•΄μ•Ό ν•  일은 λ¬΄μ—‡μΌκΉŒμš”? 개ꡬ리의 νŠΉμ„±μ„ μ΄μš©ν•˜μ—¬ 인간 μƒν™œμ— ν™œμš©ν•  수 μžˆλŠ” 방법은 λ¬΄μ—‡μΌκΉŒμš”? μœ„μ˜ μ§ˆλ¬Έλ“€μ€ 개ꡬ리의 νŠΉμ„±μ„ λ‹€λ₯Έ 뢄야에 μ μš©ν•˜κ±°λ‚˜, 개ꡬ리의 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 μ΄ˆμ μ„ 맞좘 μ§ˆλ¬Έλ“€μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ§ˆλ¬Έλ“€μ„ 톡해 κ°œκ΅¬λ¦¬μ— λŒ€ν•œ 지식을 μ‹€μ œ 상황에 μ μš©ν•˜λŠ” λŠ₯λ ₯을 ν‚€μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€."},{"role":"user","content":"곰에 λŒ€ν•œ 쒅합적 μ§ˆλ¬Έμ„ λ§Œλ“€μ–΄μ€˜"},{"role":"assistant","content":"곰의 μ’…λ₯˜λŠ” 무엇이 μžˆλ‚˜μš”? 곰의 λͺΈλ¬΄κ²ŒλŠ” μ–΄λŠ μ •λ„μΈκ°€μš”? 곰의 수λͺ…은 μ–Όλ§ˆλ‚˜ λ˜λ‚˜μš”? 곰의 ν„Έ 색깔은 μ™œ λ‹€μ–‘ν•œκ°€μš”? 곰의 주식은 λ¬΄μ—‡μΈκ°€μš”? κ³°οΏ½οΏ½οΏ½ μ²œμ μ€ λ¬΄μ—‡μΈκ°€μš”? 곰의 짝짓기 μ‹œκΈ°λŠ” μ–Έμ œμΈκ°€μš”? 곰의 μΆœμ‚°μœ¨μ€ μ–΄λŠ μ •λ„μΈκ°€μš”? 곰의 κ²¨μšΈμž μ€ μ–Έμ œλΆ€ν„° μ–Έμ œκΉŒμ§€ μžλ‚˜μš”? 곰의 곡격성은 μ–΄λŠ μ •λ„μΈκ°€μš”? 곰의 μ„œμ‹μ§€λŠ” μ–΄λ””μΈκ°€μš”? 곰의 λ©Έμ’… μœ„κΈ°μ’…μ€ λ¬΄μ—‡μΈκ°€μš”? 곰의 μ‚¬νšŒμ„±μ€ μ–΄λ–€κ°€μš”? 곰의 지λŠ₯은 μ–΄λŠ μ •λ„μΈκ°€μš”? 곰의 λ°œμ •κΈ° λ•Œ ν•˜λŠ” 행동은 λ¬΄μ—‡μΈκ°€μš”? 곰의 λ°œν†±μ€ μ–΄λ–€ μš©λ„λ‘œ μ‚¬μš©λ˜λ‚˜μš”? 곰의 λ°œλ°”λ‹₯은 μ™œ λΆ€λ“œλŸ¬μš΄κ°€μš”? 곰의 이빨은 μ–΄λ–€ λͺ¨μ–‘μΈκ°€μš”? 곰의 λˆˆμ€ μ–΄λ–€ νŠΉμ§•μ΄ μžˆλ‚˜μš”? 곰의 κ·€λŠ” μ–΄λ–€ λͺ¨μ–‘μΈκ°€μš”? 곰의 μ½”λŠ” μ–΄λ–€ κΈ°λŠ₯을 ν•˜λ‚˜μš”? 곰의 배섀물은 μ–΄λ–€ νŠΉμ§•μ΄ μžˆλ‚˜μš”? 곰의 λΌˆλŠ” μ–΄λ–€ νŠΉμ§•μ΄ μžˆλ‚˜μš”? 곰의 κ·Όμœ‘μ€ μ–΄λ–€ νŠΉμ§•μ΄ μžˆλ‚˜μš”? 곰의 심μž₯은 μ–΄λ–€ κΈ°λŠ₯을 ν•˜λ‚˜μš”? 곰의 λ‡ŒλŠ” μ–΄λ–€ νŠΉμ§•μ΄ μžˆλ‚˜μš”? 곰의 ν˜ˆμ•‘μ€ μ–΄λ–€ νŠΉμ§•μ΄"},{"role":"user","content":"기차에 λŒ€ν•œ 평가적 μ§ˆλ¬Έμ„ λ§Œλ“€μ–΄μ€˜"},{"role":"assistant","content":"기차의 μ†λ„λŠ” λΉ λ₯Έκ°€μš”? 기차의 μ•ˆμ „μ„±μ€ λ†’μ€κ°€μš”? 기차의 μŠΉμ°¨κ°μ€ μ’‹μ€κ°€μš”? 기차의 편의 μ‹œμ„€μ€ 잘 κ°–μΆ°μ Έ μžˆλ‚˜μš”? 기차의 가격은 λΉ„μ‹Όκ°€μš”? 기차의 μš΄ν–‰ μ‹œκ°„μ€ κ·œμΉ™μ μΈκ°€μš”? 기차의 ꡐ톡 체증은 μ‹¬ν•œκ°€μš”? 기차의 λŒ€κΈ° μ‹œκ°„μ€ κΈ΄κ°€μš”? 기차의 노선은 λ‹€μ–‘ν•œκ°€μš”? 기차의 μ„œλΉ„μŠ€λŠ” μΉœμ ˆν•œκ°€μš”? 기차의 μ •μ‹œ μš΄ν–‰λ₯ μ€ λ†’μ€κ°€μš”? 기차의 μ†ŒμŒμ€ ν°κ°€μš”? 기차의 진동은 μ‹¬ν•œκ°€μš”? 기차의 ν™˜κ²½ μ˜€μ—Όμ€ μ‹¬ν•œκ°€μš”? 기차의 μ—λ„ˆμ§€ νš¨μœ¨μ€ λ†’μ€κ°€μš”? 기차의 μœ μ§€λ³΄μˆ˜λŠ” 잘 이루어지고 μžˆλ‚˜μš”? \nμœ„μ˜ μ§ˆλ¬Έλ“€μ€ 기차의 μ„±λŠ₯, μ•ˆμ „μ„±, νŽΈμ˜μ„±, κ²½μ œμ„± 등을 ν‰κ°€ν•˜λŠ” 데 ν•„μš”ν•œ μ§ˆλ¬Έλ“€μž…λ‹ˆλ‹€. 각 μ§ˆλ¬Έμ— λŒ€ν•œ 닡을 비ꡐ λΆ„μ„ν•˜μ—¬ 기차의 μž₯단점을 νŒŒμ•…ν•˜κ³ , μžμ‹ μ—κ²Œ λ§žλŠ” κΈ°μ°¨λ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€."},{"role":"user","content":"κ°œκ΅¬λ¦¬μ— λŒ€ν•œ λ…ΌμŸμ  μ§ˆλ¬Έμ„ λ§Œλ“€μ–΄μ€˜"},{"role":"assistant","content":"개ꡬ리의 μ‹μš© 여뢀에 λŒ€ν•΄ μ–΄λ–»κ²Œ μƒκ°ν•˜μ‹œλ‚˜μš”? 개ꡬ리의 μƒνƒœκ³„ νŒŒκ΄΄μ— λŒ€ν•΄ μ–΄λ–»κ²Œ λŒ€μ²˜ν•΄μ•Ό ν• κΉŒμš”? 개ꡬ리의 λ©Έμ’… μœ„κΈ°λ₯Ό 막기 μœ„ν•΄ μ–΄λ–€ λ…Έλ ₯이 ν•„μš”ν• κΉŒμš”? 개ꡬ리의 인곡 λ²ˆμ‹μ— λŒ€ν•΄ μ–΄λ–»κ²Œ μƒκ°ν•˜μ‹œλ‚˜μš”? 개ꡬ리의 μœ μ „μž μ‘°μž‘μ— λŒ€ν•΄ μ–΄λ–»κ²Œ μƒκ°ν•˜μ‹œλ‚˜μš”? 개ꡬ리의 μ‚¬μœ‘μ— λŒ€ν•΄ μ–΄λ–»κ²Œ μƒκ°ν•˜μ‹œλ‚˜μš”? 개ꡬ리의 λΆˆλ²• ν¬νšμ— λŒ€ν•΄ μ–΄λ–»κ²Œ μ²˜λ²Œν•΄μ•Ό ν• κΉŒμš”? 개ꡬ리의 μ§ˆλ³‘ 예방 λŒ€μ±…μ€ λ¬΄μ—‡μΌκΉŒμš”? 개ꡬ리의 건강 증진 λ°©μ•ˆμ€ λ¬΄μ—‡μΌκΉŒμš”? 개ꡬ리의 ꡐ윑적 κ°€μΉ˜μ— λŒ€ν•΄ μ–΄λ–»κ²Œ μƒκ°ν•˜μ‹œλ‚˜μš”? 개ꡬ리의 문화적 κ°€μΉ˜μ— λŒ€ν•΄ μ–΄λ–»κ²Œ μƒκ°ν•˜μ‹œλ‚˜μš”? 개ꡬ리의 산업적 κ°€μΉ˜μ— λŒ€ν•΄ μ–΄λ–»κ²Œ μƒκ°ν•˜μ‹œλ‚˜μš”? \n\nμœ„μ˜ μ§ˆλ¬Έλ“€μ€ κ°œκ΅¬λ¦¬μ— λŒ€ν•œ λ‹€μ–‘ν•œ 의견과 견해λ₯Ό λ‚˜λˆŒ 수 μžˆλŠ” λ…ΌμŸμ  μ§ˆλ¬Έλ“€μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ§ˆλ¬Έλ“€μ„ 톡해 κ°œκ΅¬λ¦¬μ— λŒ€ν•œ 관심을 높이고, μ„œλ‘œ λ‹€λ₯Έ μ˜κ²¬μ„ μ‘΄μ€‘ν•˜κ³  μ†Œν†΅ν•˜λŠ” 기회λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€."},{"role":"user","content":"κ°œκ΅¬λ¦¬μ— λŒ€ν•œ κ°œλ…μ  μ§ˆλ¬Έμ„ λ§Œλ“€μ–΄μ€˜"},{"role":"assistant","content":"개ꡬ리의 μ •μ˜λŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 λΆ„λ₯˜λŠ” μ–΄λ–»κ²Œ λ˜λ‚˜μš”? 개ꡬ리의 진화 과정은 μ–΄λ–»κ²Œ λ˜λ‚˜μš”? 개ꡬ리의 μƒνƒœν•™μ  역할은 λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 생물학적 νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 생리학적 νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μœ μ „ν•™μ  νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μƒνƒœν•™μ  νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 역사와 문화적 μ˜λ―ΈλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 미래 전망은 μ–΄λ–¨κΉŒμš”? 개ꡬ리의 과학적 μ—°κ΅¬λŠ” μ–΄λ–»κ²Œ 이루어지고 μžˆλ‚˜μš”? 개ꡬ리의 λŒ€μ€‘μ  인식은 μ–΄λ–€κ°€μš”? 개ꡬ리의 윀리적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μ‚¬νšŒμ  λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μ •μΉ˜μ  λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 ꡭ제적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 철학적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 쒅ꡐ적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 예술적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 문학적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 심리학적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 ꡐ윑적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μ²΄μœ‘ν•™μ  λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 기술적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”?"}]
67
+
68
+ preset_text = [
69
+ {"role": "system", "content": "λΈ”λ£Έμ˜ 질문 λΆ„λ₯˜ 6가지에 따라 주어진 μ£Όμ œμ— λŒ€ν•œ μ§ˆλ¬Έμ„ μƒμ„±ν•΄μ€˜.\n"},
70
+ {"role": "user", "content": text},
71
+ ]
72
+
73
+ request_data = {
74
+ "messages": preset_text,
75
+ "maxTokens": 3000,
76
+ "temperature": 0.8,
77
+ "topK": 0,
78
+ "topP": 0.8,
79
+ "repeatPenalty": 5.0,
80
+ "stopBefore": [],
81
+ "includeAiFilters": True,
82
+ }
83
+
84
+ response_text = completion_executor.execute(request_data)
85
+ return response_text["content"]
app.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from api_function import request_hyper
3
+
4
+ with gr.Blocks() as demo:
5
+ gr.Textbox("좩청도 μ‚¬νˆ¬λ¦¬λ‘œ λŒ€λ‹΅ν•΄ μ€λ‹ˆλ‹€.")
6
+ input_text = gr.Markdown("# 좩청도 μ‚¬νˆ¬λ¦¬ AI")
7
+ send_btn = gr.Button("λ‹΅λ³€ 보내기")
8
+ ai_text = gr.Textbox("AI의 λ‹΅λ³€")
9
+
10
+ send_btn.click(request_hyper, inputs=input_text, outputs=ai_text)
11
+
12
+ demo.launch()