blooms_taxonomy / api_fn.py
powerwarez's picture
hcx003
9b556f8 verified
# -*- coding: utf-8 -*-
import gradio as gr
import requests
import json
import os
api_key_primary_val = os.getenv('api_key_primary_val')
api_key = os.getenv('api_key')
def request_hyper(message):
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 execute(self, completion_request):
headers = {
'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,
'Content-Type': 'application/json; charset=utf-8',
'Accept': 'text/event-stream'
}
with requests.post(self._host + '/testapp/v1/chat-completions/HCX-003',
headers=headers, json=completion_request, stream=False) as r:
stop_reason = ""
messages = []
for line in r.iter_lines():
if line:
raw_data = line.decode("utf-8")
if raw_data.startswith('data:'):
json_part = raw_data.split('data:', 1)[1].strip()
decoded_text = json.loads(json_part)
message_content = decoded_text["message"]["content"]
stop_reason = decoded_text["stopReason"]
print(f"λ©”μ‹œμ§€:{message_content}")
messages.append(message_content)
# yield "AI : " + message_content
# print(f"λ©”μ‹œμ§€:{message},{stop_reason}끝")
if stop_reason == "stop_before":
print("stop_before 좜λ ₯. 반볡 μ’…λ£Œ")
print(f"messages:{messages}")
return messages
# return line.decode("utf-8")
completion_executor = CompletionExecutor(
host='https://clovastudio.stream.ntruss.com',
api_key=api_key,
api_key_primary_val=api_key_primary_val,
request_id='73f8978312ed4ca0bbef6fa7f86edfc3'
)
preset_text = [{"role":"system","content":"μ§ˆλ¬Έμ— λŒ€ν•΄ μ•„λž˜ λΈ”λ£Έμ˜ 질문 λΆ„λ₯˜λ₯Ό μ°Έκ³ ν•˜μ—¬ μ‚¬μš©μžμ˜ 질문이 λͺ‡ 단계에 ν•΄λ‹Ήν•˜λŠ”μ§€ μ•Œλ €μ€˜.\n(1) κΈ°μ–΅ : κ³Όμ •, ν˜•νƒœ, ꡬ쑰 ν˜Ήμ€ μž₯λ©΄ λ“±μ˜ 사싀적인 정보듀을 μΈμ‹ν•˜κ³  νšŒμƒν•˜λŠ” λŠ₯λ ₯을 λ§ν•œλ‹€. ν˜Ήμ€ 이전에 μ ‘ν–ˆκ±°λ‚˜ λ°°μ› λ˜ λ‚΄μš©λ“€μ˜ μ‚¬μ‹€μ΄λ‚˜, μš©μ–΄, 기본적 κ°œλ…λ“€μ„ ν…μŠ€νŠΈλ‘œλΆ€ν„° κΈ°μ–΅ν•΄λ‚΄λŠ” 것을 μ˜λ―Έν•œλ‹€.- 주인곡은 λˆ„κ΅¬μΈκ°€?- λ…ΉμŠ€λŠ” 어디에 κ°€κ³  μžˆλŠ”κ°€?- 이야기λ₯Ό μ½μœΌλ©΄μ„œ μƒˆλ‘­κ²Œ μ ‘ν•œ 단어듀을 μ¨λ³΄μ‹œμ˜€. \n(2) 이해 : ν•΄μ„ν•˜κΈ°, μΆ”λ‘ ν•˜κΈ° λ“±μ˜ μ˜μ‚¬μ†Œν†΅λ˜κ³  μžˆλŠ” 것이 무엇인지 μ•Œκ³  μžˆλŠ” 정도이며, λ‹€λ₯Έ μžλ£Œμ™€ 그것을 λ°˜λ“œμ‹œ κ΄€λ ¨μ‹œν‚€μ§€ μ•Šμ•„λ„ μ˜μ‚¬μ†Œν†΅ 되고 μžˆλŠ” 아이디어와 자료λ₯Ό ν™œμš©ν•  수 μžˆλŠ” μ •λ„μ˜ 이해λŠ₯λ ₯ λ˜λŠ” 감지λŠ₯λ ₯을 λ§ν•œλ‹€. μ—¬κΈ°μ—λŠ” λΉ„λ¬Έμžμ μΈ μ§„μˆ μ˜ μ€μœ λ‚˜ 상징, μ•„μ΄λŸ¬λ‹ˆ κ³Όμž₯ 등을 μ΄ν•΄ν•˜λŠ” λŠ₯λ ₯κ³Ό μ—°μ†λ˜λŠ” κ²½ν–₯의 후속을 μ˜ˆμ–Έν•˜λŠ” μΆ”λ‘ ν•˜λŠ” λŠ₯λ ₯이 ν¬ν•¨λœλ‹€.- μ™œ μ›°νŠΌ μ•„μΉ΄λ°λ―ΈλŠ” ν‚€νŒ…μ„ μƒλ‹˜μ„ κ³ μš©ν–ˆλ‚˜μš”?- μ™œ ν† λ“œλŠ” μ›°νŠΌ 아카데미에 전학을 μ™”λ‚˜μš”?- λ‹μ˜ μ•„λ²„μ§€λŠ” μ™œ λ‹μ—κ²Œ ν™”λ₯Ό λƒˆλ‚˜μš”? \n(3)적용 : νŠΉμ •ν•œ ꡬ제적인 상황 μ†μ—μ„œμ˜ μΆ”μƒκ°œλ… μ‚¬μš©ν•˜κΈ°, μΆ”μƒκ°œλ…μ€ 일반적인 μ•„16이디어, 절차의 원리 λ“±μ˜ λ“£κ±°λ‚˜ μ½μ–΄μ„œ 얻은 정보λ₯Ό μƒˆλ‘œμš΄ 상황에 μ μš©ν•˜λŠ” κ²ƒμœΌλ‘œ μŠ΅λ“ν•œ 정보와 지식을 μ΄μš©ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.- λ…ΉμŠ€μ™€ 크리슀의 전화톡화 λŒ€ν™”λ₯Ό μ¨λ³΄μ„Έμš”.- λ‹μ˜ μž…μž₯μ—μ„œ λΆ€λͺ¨λ‹˜κ»˜ μͺ½μ§€λ₯Ό μ¨λ³΄μ„Έμš”.- μ§€κΈˆκΉŒμ§€ ν‚€νŒ…κ³Ό λΉ„μŠ·ν•œ μ„ μƒλ‹˜μ„ λ§Œλ‚œ 적이 μžˆλ‹€λ©΄ μ–΄λ–€ μ„ μƒλ‹˜μΈμ§€ λ§ν•΄λ³΄μ„Έμš”. \n(4)뢄석 : ν‘œν˜„λœ λ‚΄μš©λ“€κ°„μ˜ 관계가 ꡬ체적이고 λͺ…μ‹œμ μ΄λ„λ‘ μ˜μ‚¬μ†Œν†΅μ„ κ΅¬μ„±μš”μ†Œλ‚˜ λΆ€λΆ„μœΌλ‘œ λΆ„ν•΄ν•˜κ±°λ‚˜ 뢀뢄을 λ‹€μ‹œ 전체와 κ΄€λ ¨μ§“λŠ” λŠ₯λ ₯으둜 λΆ„μ„ν•˜κΈ°, λ‹¨μˆœν™”ν•˜κΈ°, μš”μ•½ν•˜κΈ°, λΆ„λ₯˜ν•˜κΈ°, λΉ„κ΅ν•˜κΈ°, λŒ€μ‘°ν•˜κΈ°, λ“±κΈ‰μœΌλ‘œ λ‚˜λˆ„κΈ°, κ΅¬λ³„ν•˜κΈ°λ₯Ό 예둜 λ“€ 수 μžˆλ‹€. - ꡐμž₯μ„ μƒλ‹˜κ³Ό ν‚€νŒ…μ„ μƒλ‹˜μ˜ 성격을 비ꡐ/λŒ€μ‘° ν•΄λ³΄μ„Έμš”.- μ†Œμ„€μ˜ 이야기λ₯Ό ν˜„μ‹€μ„Έκ³„μ™€ 비ꡐ해보고 μ‹€μ œλ‘œ 무슨 일이 일어날지 λ§ν•΄λ³΄μ‹œμ˜€. \n(5) μ’…ν•©: 전체λ₯Ό 이루기 μœ„ν•΄ μš”μ†Œλ‚˜ 뢀뢄듀을 ν•¨κ»˜ μ‘°ν•©ν•˜κ±°λ‚˜ κ²°ν•©ν•˜μ—¬ μƒˆλ‘œμš΄ λ°©λ²•μœΌλ‘œ λ‚΄μš©μ„ κ΅¬μ„±ν•˜λŠ” κ²ƒμœΌλ‘œ μž‘λ¬Έν•˜κΈ°, ν•΄κ²°ν•˜κΈ°, μ§œλ‚΄κΈ°, κ³ μ•ˆν•΄λ‚΄κΈ°, κ³΅μ‹ν™”ν•˜κΈ°, μ •κ΅ν•˜κ²Œ ν•˜κΈ°, κ°œμž‘ν•˜κΈ°, μ œμ•ˆν•˜κΈ°λ₯Ό 예둜 λ“€ 수 μžˆλ‹€. - 닐이 극단적 선택을 ν•˜μ§€ μ•Šκ³  ν‚€νŒ…μ„ μƒλ‹˜λ„ 학ꡐλ₯Ό λ– λ‚˜μ§€ μ•Šμ•˜λ‹€κ³  κ°€μ •ν•˜κ³  이야기λ₯Ό μ¨λ³΄μ‹œμ˜€.- 만일 ν‚€νŒ…μ„ μƒλ‹˜μ΄ ꡐμž₯이 λ˜μ—ˆλ‹€κ³  κ°€μ •ν•˜κ³  μ΄μ•ΌκΈ°μ˜ λ‚΄μš©μ„ μ „κ°œν•΄λ³΄μ‹œμ˜€. (6) 평가 : νŠΉμ •ν•œ ν•œ μ„ΈνŠΈμ˜ 기쀀에 따라 μ„ μ•…κ³Ό μ‹œλΉ„λ₯Ό νŒλ‹¨ν•˜κ³  이유λ₯Ό λ“œλŠ” κ²ƒμœΌλ‘œ 주어진 λͺ©μ μ΄λ‚˜ μ˜λ„μ— λΉ„μΆ”μ–΄ μžλ£Œλ‚˜ 방법이 가지고 μžˆλŠ” κ°€μΉ˜μ— κ΄€ν•˜μ—¬ νŒλ‹¨ν•˜λŠ” 일이닀. 이에 λŒ€ν•œ μ˜ˆλ‘œλŠ” νŒλ‹¨ν•˜κΈ°, μ˜Ήν˜Έν•˜κΈ°, μ •λ‹Ήν™”ν•˜κΈ°, λ“±κΈ‰ 맀기기, ν‰κ°€ν•˜κΈ°, μ§€μ§€ν•˜κΈ°, 증λͺ…ν•˜κΈ°, μΆ”μ²œν•˜κΈ°, μš°μ„ μˆœμœ„ 맀기기와 같은 것이 μžˆλ‹€.- μΉœκ΅¬λ“€κ³Όμ˜ 비밀을 ν­λ‘œν•œ μΉ΄λ©”λ‘ μ˜ 행동은 μ˜³μ•˜λŠ”κ°€? κ·Έλ ‡λ‹€λŠ” ν˜Ήμ€ 그렇지 μ•Šλ‹€λŠ” μ˜κ²¬μ— λŒ€ν•œ μžμ‹ μ˜ μ£Όμž₯을 μ˜Ήν˜Έν•˜μ‹œμ˜€.- λ†€λž€ ꡐμž₯μ„ μƒλ‹˜μ˜ μ²΄λ²Œμ€ 정당화될 수 μžˆλŠ”κ°€? μ²΄λ²Œμ— λŒ€ν•œ μžμ‹ μ˜ μ˜κ²¬μ„ μ œμ‹œν•˜κ³  그에 λŒ€ν•œ 이유λ₯Ό ν•¨κ»˜ λ§ν•˜μ‹œμ˜€."},{"role":"user","content":"개ꡬ리의 μ„œμ‹μ§€λŠ” μ–΄λ””μΌκΉŒ?"},{"role":"assistant","content":"개ꡬ리의 μ„œμ‹μ§€μ— λŒ€ν•œ μ§ˆλ¬Έμ€ 개ꡬ리의 생물학적 νŠΉμ„±κ³Ό κ΄€λ ¨λœ 기본적인 지식을 λ¬»λŠ” κ²ƒμœΌλ‘œ 1단계에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.\n"},{"role":"user","content":"곰의 μ„œμ‹μ§€ μΆ•μ†Œμ™€ ν™˜κ²½λ¬Έμ œλŠ” μ–΄λ–€ 관련이 μžˆμ„κΉŒ?"},{"role":"assistant","content":"ν•΄λ‹Ή μ§ˆλ¬Έμ€ 곰의 μ„œμ‹μ§€ μΆ•μ†ŒλΌλŠ” ν˜„μƒμ„ 톡해 μΈκ°„μ˜ ν™˜κ²½ νŒŒκ΄΄μ™€ 그둜 μΈν•œ μƒνƒœκ³„μ˜ 영ν–₯을 생각해 보게 ν•˜λŠ” κ²ƒμœΌλ‘œ 3단계에 ν•΄λ‹Ήν•©λ‹ˆλ‹€. \n"},{"role":"user","content":"개ꡬ리의 λ¨Ήμ΄λŠ” λ„λ‘±λ‡½μ˜ 먹이와 λΉ„μŠ·ν•œλ° μ™œ 그럴까?"},{"role":"assistant","content":"이 μ§ˆλ¬Έμ€ κ°œκ΅¬λ¦¬μ™€ λ„λ‘±λ‡½μ˜ 먹이가 λΉ„μŠ·ν•œ 이유λ₯Ό μœ μΆ”ν•˜κ²Œ ν•¨μœΌλ‘œμ¨ μ–‘μ„œλ₯˜μ˜ μƒνƒœμ— λŒ€ν•œ 이해λ₯Ό 높이고, 이λ₯Ό 톡해 μžμ—°κ³„μ˜ 먹이 μ‚¬μŠ¬κ³Ό μ—°κ΄€ 지어 μƒκ°ν•˜λ„λ‘ ν•œλ‹€λŠ” μ μ—μ„œ 4단계인 뢄석에 ν•΄λ‹Ήν•©λ‹ˆλ‹€."},{"role":"user","content":message}]
request_data = {
'messages': preset_text,
'topP': 0.8,
'topK': 0,
'maxTokens': 3000,
'temperature': 0.5,
'repeatPenalty': 5.0,
'stopBefore': [],
'includeAiFilters': True
}
print(f"ν”„λ¦¬μ…‹ν…μŠ€νŠΈ: {preset_text}")
completion_result = completion_executor.execute(request_data)
return completion_result