Spaces:
Runtime error
Runtime error
File size: 6,055 Bytes
9f1ec1f 2208d0b 9f1ec1f 2208d0b 5babc9d 9f1ec1f 2208d0b 9f1ec1f 86f0435 9f1ec1f e44c48d |
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 |
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("OPENAI_API_KEY")
def predict(inputs, top_p, temperature, openai_api_key, chat_counter, chatbot=[], history=[]): #repetition_penalty, top_k
payload = {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": f"{inputs}"}],
"temperature" : 1.0,
"top_p":1.0,
"n" : 1,
"stream": True,
"presence_penalty":0,
"frequency_penalty":0,
}
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-3.5-turbo",
"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():
if counter == 0:
counter+=1
continue
counter+=1
# check whether each line is non-empty
if chunk :
# decode each line as response data is in bytes
if len(json.loads(chunk.decode()[6:])['choices'][0]["delta"]) == 0:
break
#print(json.loads(chunk.decode()[6:])['choices'][0]["delta"]["content"])
partial_words = partial_words + json.loads(chunk.decode()[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}
def reset_textbox():
return gr.update(value='')
title = """<h1 align="center">🔥ChatGPT 3.5 🚀查特AI🚀</h1>"""
description = """Language models can be conditioned to act like dialogue agents through a conversational prompt that typically takes the form:
```
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: 700px; margin-left: auto; margin-right: auto;}
#chatbot {height: 400px; overflow: auto;}""") as demo:
gr.HTML(title)
gr.HTML('''<center>输入apike秘钥即可运行,如无秘钥可加微信号:visjia购买20元一个 <a href="http://shop.vischat.xyz" style="color:white; background-color:red; border:2px solid black; border-radius:10px; padding:10px 20px; text-decoration:none;">点击购买</a></center>''')
with gr.Column(elem_id = "col_container"):
openai_api_key = gr.Textbox(type='password', label="请输入你的APIKEY秘钥")
chatbot = gr.Chatbot(elem_id='chatbot') #c
inputs = gr.Textbox(placeholder= "Hi there!", label= "请输入你的问题然后按 Run发送") #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)
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)
with gr.Blocks() as demo:
examples = [
['200字介绍一下凯旋门:'],
['网上购物有什么小窍门?'],
['补全下述对三亚的介绍:\n三亚位于海南岛的最南端,是'],
['将这句文言文翻译成英语:"逝者如斯夫,不舍昼夜。"'],
['Question: What\'s the best winter resort city? User: A 10-year professional traveler. Answer: '],
['How to help my child to make friends with his classmates? answer this question step by step:'],
['polish the following statement for a paper: In this section, we perform case study to give a more intuitive demonstration of our proposed strategies and corresponding explanation.'],
] |