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()