Spaces:
Sleeping
Sleeping
File size: 6,695 Bytes
c35600d 8b1f0bb 0445c20 151391d 8b1f0bb b38c52a 0745d65 8b1f0bb b38c52a 8b1f0bb c35600d b38c52a c35600d 8b1f0bb c35600d 8b1f0bb c35600d 8b1f0bb c35600d ca9eea2 8b1f0bb c35600d 8b1f0bb c35600d 8b1f0bb c35600d 8b1f0bb c35600d b38c52a 8b1f0bb c35600d 8b1f0bb c35600d 8b1f0bb b38c52a 8b1f0bb c35600d 0745d65 0445c20 0745d65 8b1f0bb 59a0a73 0445c20 8b1f0bb 0745d65 8b1f0bb c35600d 0445c20 c35600d 0445c20 c35600d 863e408 16b1415 863e408 16b1415 863e408 bf5e9bc 863e408 8b1f0bb c35600d 8b1f0bb 0445c20 45afa26 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
import gradio as gr
import os
import json
import requests
#Streaming endpoint
API_URL = "https://api.openai.com/v1/chat/completions" #os.getenv("API_URL") + "/generate_stream"
#Testing with my Open AI Key
OPENAI_API_KEY = os.getenv("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")
def predict(inputs, top_p, temperature, openai_api_key, chat_counter, chatbot=[], history=[]):
# ์ฌ์ฉ์์ ์
๋ ฅ์ ๋๋ ์ด์
์คํ์ผ์ ํ๋กฌํํธ๋ก ๋ณํ
narration_prompt = f"๋์์์ ์ฌ์ฉํ ์ ๋ฌธ์ ์ธ ๋๋ ์ด์
์ ์์ฑํ๋ผ. ๋ฐ๋์ ํ๊ธ๋ก ์์ฑํ ๊ฒ. ์ผ์ฒด์ ์ง๋ฌธ์ด๋ ์ง์, ๋ฐฐ๊ฒฝ ์ค๋ช
๋ฑ์ ๋
ธ์ถ ํ๊ฑฐ๋ ์ถ๋ ฅํ์ง ๋ง๊ณ ์์ํ ๋๋ ์ด์
๋ง 2์ค์ฉ ๋ฌถ์ด์ ์ต๋ 8์ค ์ด๋ด๋ก ์ถ๋ ฅ๋ ฅ. ์
๋ ฅ: '{inputs}'"
payload = {
"model": "gpt-4-1106-preview",
"messages": [{"role": "system", "content": narration_prompt}],
"temperature": temperature,
"top_p": top_p,
"n": 1,
"stream": True,
"presence_penalty": 0,
"frequency_penalty": 0,
"max_tokens": 1000 # ๋๋ ์ด์
์ ๊ธธ์ด๋ฅผ ์ ํ
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {openai_api_key}"
}
print(f"chat_counter - {chat_counter}")
if chat_counter != 0 :
messages=[]
for data in chatbot:
temp1 = {}
temp1["role"] = "user"
temp1["content"] = data[0]
temp2 = {}
temp2["role"] = "assistant"
temp2["content"] = data[1]
messages.append(temp1)
messages.append(temp2)
temp3 = {}
temp3["role"] = "user"
temp3["content"] = inputs
messages.append(temp3)
#messages
payload = {
"model": "gpt-4-1106-preview",
"messages": messages, #[{"role": "user", "content": f"{inputs}"}],
"temperature" : temperature, #1.0,
"top_p": top_p, #1.0,
"n" : 1,
"stream": True,
"presence_penalty":0,
"frequency_penalty":0,
}
chat_counter+=1
history.append(inputs)
print(f"payload is - {payload}")
# make a POST request to the API endpoint using the requests.post method, passing in stream=True
response = requests.post(API_URL, headers=headers, json=payload, stream=True)
#response = requests.post(API_URL, headers=headers, json=payload, stream=True)
token_counter = 0
partial_words = ""
counter=0
for chunk in response.iter_lines():
#Skipping first chunk
if counter == 0:
counter+=1
continue
# ๋๋ ์ด์
์ ๊ธธ์ด๋ฅผ 8์ค๋ก ์ ํ
if len(history) >= 8:
break
#counter+=1
# check whether each line is non-empty
if chunk.decode() :
chunk = chunk.decode()
# decode each line as response data is in bytes
if len(chunk) > 12 and "content" in json.loads(chunk[6:])['choices'][0]['delta']:
#if len(json.loads(chunk.decode()[6:])['choices'][0]["delta"]) == 0:
# break
partial_words = partial_words + json.loads(chunk[6:])['choices'][0]["delta"]["content"]
if token_counter == 0:
history.append(" " + partial_words)
else:
history[-1] = partial_words
chat = [(history[i], history[i + 1]) for i in range(0, len(history) - 1, 2) ] # convert to tuples of list
token_counter+=1
yield chat, history, chat_counter # resembles {chatbot: chat, state: history}
return chat, history, chat_counter
def reset_textbox():
return gr.update(value='')
title = """<h1 align="center">ํ์ ์คํฌ๋ฆฝํธ</h1>"""
description = """์์ ์์ฑ์ ์ํ ์คํฌ๋ฆฝํธ๋ฅผ AI๊ฐ ์๋์ผ๋ก ์์ฑํฉ๋๋ค. ์ฃผ์ ํค์๋๋ ๋ชฉ์ ๋ฑ ํ์ํ ๋ด์ฉ๋ง ๊ฐ๋จํ ์
๋ ฅํ์ธ์. :
```
User: <utterance>
Assistant: <utterance>
User: <utterance>
Assistant: <utterance>
...
```
In this app, you can explore the outputs of a gpt-3.5-turbo LLM.
"""
with gr.Blocks(css = """#col_container {width: 1000px; margin-left: auto; margin-right: auto;}
#chatbot {height: 520px; overflow: auto;}""") as demo:
gr.HTML(title)
with gr.Column(elem_id = "col_container"):
openai_api_key = gr.Textbox(type='password', label="Enter your OpenAI API key here")
# ์ถ๋ ฅํผ (chatbot)์ ์ฌ์ฉ์ ์
๋ ฅํผ (inputs) ์์ ๋ฐฐ์น
chatbot = gr.Chatbot(elem_id='chatbot') # c
inputs = gr.Textbox(placeholder="์ฌ๊ธฐ์ ์
๋ ฅํ์ธ์.", label="๋๋ ์ด์
์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ณ ์ถ์ ์ฃผ์ ์ด๋ ๋ฌธ์ฅ์ ์
๋ ฅํ์ธ์.") # t
state = gr.State([]) # s
b1 = gr.Button()
#inputs, top_p, temperature, top_k, repetition_penalty
with gr.Accordion("Parameters", open=False):
top_p = gr.Slider( minimum=-0, maximum=1.0, value=1.0, step=0.05, interactive=True, label="Top-p (nucleus sampling)",)
temperature = gr.Slider( minimum=-0, maximum=5.0, value=1.0, step=0.1, interactive=True, label="Temperature",)
#top_k = gr.Slider( minimum=1, maximum=50, value=4, step=1, interactive=True, label="Top-k",)
#repetition_penalty = gr.Slider( minimum=0.1, maximum=3.0, value=1.03, step=0.01, interactive=True, label="Repetition Penalty", )
chat_counter = gr.Number(value=0, visible=False, precision=0)
examples = gr.Examples(examples=[
["์ํ ์ค๋ช
:์๋ก ์ถ์๋ 'ํ ๋ฆฌ' ๋ฆฝ๋ฐค์ FDA ์น์ธ, ์ต๊ณ ์ ๋ณด์ต๋ ฅ, ๊ตฌ๋งค์ง์ 1์ "],
["๋ธ๋๋ฉ: 'ํ ๋ฆฌ'๋ฆฝ๋ฐค์ 20๋ ์ฌ์ฑ์๊ฒ ์ดํํ ๋ธ๋๋ฉ์ด ํ์ํด"],
["๊ด๊ณ : ์ค๋ ๋ถ๋ชจ๋๊ณผ ์น์ง ์ ๋ฌผ์ ๋ฒ์ฑํฌ ๋ณด๋ฆฌ๊ตด๋น๊ฐ ์ต๊ณ ๋๋๋ค."],
["์ ๋ณด ๊ณต์ : ๋นํ๋ฏผC ๊ณผ๋ค ๋ณต์ฉ์ ๊ฑด๊ฐ์ ์คํ๋ ค ํด๋กญ๋ค."],
["ํ๋ณด: 'OpenAI'๋ '์ฑGPT'์ ๋ง์ถค GPT '์คํ ์ด'๋ฅผ ์คํํ์๋ค."],
["์ธ์ฌ: '์ ํ ๋ฒ์ธ'์ ๊ณ ๊ฐ๊ณผ ์์ง์์ ์ํ ์ง์ทจ์ ์ธ 2024๋
์ ๋
์ธ์ฌ"]
], inputs=[inputs], fn=predict, outputs=[chatbot, state, chat_counter])
inputs.submit( predict, [inputs, top_p, temperature, openai_api_key, chat_counter, chatbot, state], [chatbot, state, chat_counter],)
b1.click( predict, [inputs, top_p, temperature, openai_api_key, chat_counter, chatbot, state], [chatbot, state, chat_counter],)
b1.click(reset_textbox, [], [inputs])
inputs.submit(reset_textbox, [], [inputs])
#gr.Markdown(description)
demo.queue().launch(debug=True)
|