Spaces:
Runtime error
Runtime error
import json | |
import openai | |
import os | |
openai.api_key = os.environ["API_KEY"] | |
messages = [{}] | |
def chatgpt(initial, content, temperature=0.8, max_tokens=1000): | |
global messages | |
print(f'ask:{content}') | |
messages[0]={"role": "system", "content": initial} | |
messages.append({"role": "user", "content": content}) | |
try: | |
response = openai.ChatCompletion.create( | |
model="gpt-3.5-turbo-0301", | |
messages=messages, | |
temperature=temperature, | |
max_tokens=max_tokens, | |
top_p=1, | |
frequency_penalty=0, | |
presence_penalty=0, | |
) | |
except Exception as e: | |
string = str(e) | |
oldMessages = messages | |
messages = [{}] | |
return (string, oldMessages) | |
messages.append(json.loads(str(response.choices[0].message))) | |
print(f'answer:{response.choices[0].message.content}') | |
return (response.choices[0].message.content, messages) | |
if __name__ == "__main__": | |
import gradio as gr | |
def format_messages(messages): | |
result = "" | |
for msg in messages: | |
result += msg["role"] + ": " + msg["content"] + "\n" | |
return result | |
def reset(): | |
messages = [{}]; | |
def send_chatgpt(text, initial, temperature, max_tokens): | |
(output, messages) = chatgpt(text, initial, temperature, max_tokens) | |
messages = format_messages(messages) | |
return (output, messages) | |
input_initial_text = gr.inputs.Textbox(label="Начальная установка (Подсказка, как должен вести себя чат-бот):", placeholder="Например: 'Ты ассистент разработчика. Ты должен по запросу реализовать требуемый код на указанном языке.'") | |
input_text = gr.inputs.Textbox(label="Запрос:", placeholder="Например: Нужен ReactJS компонент в виде круглой кнопки, которая по клику меняет цвет на случайный.") | |
input_temp = gr.Slider(label="Температура (Меньшие значения -> более предсказуемые результаты; Большие значения -> более случайные результаты)", minimum=0, maximum=1.5, step=.01, value=1) | |
input_maxTokens = gr.Slider(label="Максимум токенов в ответе (токен - это единица языковой модели: слово, знак пунктуации, и т.п)", minimum=50, maximum=2000, step=50, value=1000) | |
output_text = gr.outputs.Textbox(label="Ответ") | |
output_history = gr.outputs.Textbox(label="История") | |
interface = gr.Interface(fn=send_chatgpt, inputs=[input_initial_text, input_text, input_temp, input_maxTokens], outputs=[output_text, output_history], title="ChatGPT") | |
interface.launch() | |