dialect / api_function.py
Cardanoian's picture
Update api_function.py
6613598
# -*- coding: utf-8 -*-
import os
import base64
import json
import http.client
# .env νŒŒμΌμ—μ„œ ν™˜κ²½ λ³€μˆ˜ λ‘œλ“œ
# Localμ—μ„œλ§Œ μ‚¬μš©
# from dotenv import load_dotenv
# load_dotenv()
# ν™˜κ²½ λ³€μˆ˜ κ°€μ Έμ˜€κΈ°
api_key_primary_val = os.getenv("api_key_primary_val")
API_KEY = os.getenv("API_KEY")
print(api_key_primary_val, API_KEY)
def request_hyper(text):
class CompletionExecutor:
def __init__(self, host, api_key, api_key_primary_val, request_id):
self._host = host
self._api_key = api_key
self._api_key_primary_val = api_key_primary_val
self._request_id = request_id
def _send_request(self, completion_request):
headers = {
"Content-Type": "application/json; charset=utf-8",
"X-NCP-CLOVASTUDIO-API-KEY": self._api_key,
"X-NCP-APIGW-API-KEY": self._api_key_primary_val,
"X-NCP-CLOVASTUDIO-REQUEST-ID": self._request_id,
}
conn = http.client.HTTPSConnection(self._host)
conn.request(
"POST",
"/testapp/v1/chat-completions/HCX-002",
json.dumps(completion_request),
headers,
)
response = conn.getresponse()
result = json.loads(response.read().decode(encoding="utf-8"))
conn.close()
return result
def execute(self, completion_request):
res = self._send_request(completion_request)
if res["status"]["code"] == "20000":
return res["result"]["message"]
else:
return "Error"
completion_executor = CompletionExecutor(
# host='clovastudio.apigw.ntruss.com',
host="clovastudio.stream.ntruss.com",
api_key=API_KEY,
api_key_primary_val=api_key_primary_val,
request_id="624e45b741574fbab1fae6a6ea99b3a7",
)
# text = subject + "에 λŒ€ν•œ " + "Bloom의 질문 λΆ„λ₯˜ 쀑 " + capacity + "적 μ§ˆλ¬Έμ— ν•΄λ‹Ήν•˜λŠ” 질문 10개 λ§Œλ“€μ–΄μ€˜."
# 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":"개ꡬ리의 μ •μ˜λŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 λΆ„λ₯˜λŠ” μ–΄λ–»κ²Œ λ˜λ‚˜μš”? 개ꡬ리의 진화 과정은 μ–΄λ–»κ²Œ λ˜λ‚˜μš”? 개ꡬ리의 μƒνƒœν•™μ  역할은 λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 생물학적 νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 생리학적 νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μœ μ „ν•™μ  νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μƒνƒœν•™μ  νŠΉμ§•μ€ λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 역사와 문화적 μ˜λ―ΈλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 미래 전망은 μ–΄λ–¨κΉŒμš”? 개ꡬ리의 과학적 μ—°κ΅¬λŠ” μ–΄λ–»κ²Œ 이루어지고 μžˆλ‚˜μš”? 개ꡬ리의 λŒ€μ€‘μ  인식은 μ–΄λ–€κ°€μš”? 개ꡬ리의 윀리적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μ‚¬νšŒμ  λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μ •μΉ˜μ  λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 ꡭ제적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 철학적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 쒅ꡐ적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 예술적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 문학적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 심리학적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 ꡐ윑적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 μ²΄μœ‘ν•™μ  λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”? 개ꡬ리의 기술적 λ¬Έμ œλŠ” λ¬΄μ—‡μΈκ°€μš”?"}]
preset_text = [
# {"role": "system", "content": "λΈ”λ£Έμ˜ 질문 λΆ„λ₯˜ 6가지에 따라 주어진 μ£Όμ œμ— λŒ€ν•œ μ§ˆλ¬Έμ„ μƒμ„±ν•΄μ€˜.\n"},
{
"role": "user",
"content": f"좩청도 μ‚¬νˆ¬λ¦¬λ‘œ {text}κ°€ 말해봐.\n",
},
]
request_data = {
"messages": preset_text,
"maxTokens": 3000,
"temperature": 0.8,
"topK": 0,
"topP": 0.8,
"repeatPenalty": 5.0,
"stopBefore": [],
"includeAiFilters": True,
}
response_text = completion_executor.execute(request_data)
return response_text["content"]