import openai import os import gradio as gr openai.api_key = os.environ.get("OPENAI_API_KEY") class Conversation: def __init__(self, prompt, num_of_round): self.prompt = prompt self.num_of_round = num_of_round self.messages = [] self.messages.append({"role": "system", "content": self.prompt}) def ask(self, question): try: self.messages.append({"role": "user", "content": question}) response = openai.ChatCompletion.create( model="gpt-3.5-turbo-16k-0613", messages=self.messages, temperature=0, max_tokens=2048, top_p=1, ) except Exception as e: print(e) return e message = response["choices"][0]["message"]["content"] self.messages.append({"role": "assistant", "content": message}) if len(self.messages) > self.num_of_round * 2 + 1: del self.messages[1:3] return message with open('chatbot_03_prompt.md', 'r') as file: prompt = file.read() prompt = '"""\n' + prompt + '\n"""' conv = Conversation(prompt, 5) def respond(message, chat_history): bot_message = conv.ask(message) chat_history.append((message, bot_message)) return "", chat_history init_conversation = [(None, "欢迎来到 recon! 请问有什么可以帮助你的吗?")] with gr.Blocks(css="#chatbot{height:700px} .overflow-y-auto{height:900px}") as demo: chatbot = gr.Chatbot(elem_id="chatbot", value=init_conversation, height="700px") state = gr.State([]) with gr.Row(): msg = gr.Textbox(show_label=False, placeholder="Enter text and press enter") msg.submit(respond, [msg, chatbot], [msg, chatbot]) demo.launch()