import gradio as gr from revChatGPT.V1 import Chatbot import argparse #You can setup login information here, or login in from UI # If you want to use Email/Password to login, put your account information here email = "" password = "" # If you have an access token, put your access token here access_token = "" # If you have a session token, put your session token here session_token = "" def get_args(): parser = argparse.ArgumentParser(description='Command line args.') parser.add_argument( '--no_markdown', action='store_true', help='Disable the markdown of the web UI.',) return parser.parse_args() def is_google_colab(): try: import google.colab return True except: return False chatbot = None def configure_chatbot(method, info): if method=="Email/Password": email, password = info.split() elif method=="Access token": access_token = info elif method=="Session token": session_token = info config = {} if email and password: config.update({"email": email, "password": password}) elif access_token: config.update({"access_token": access_token}) elif session_token: config.update({"session_token": session_token}) global chatbot try: chatbot = Chatbot(config=config) except: chatbot = None login_method = ['Email/Password', 'Access token', 'Session token', ] def ask_bot(prompt): message = "" if chatbot: for data in chatbot.ask(prompt): message = data["message"] else: message = "The chatbot is not set up properly! Try to login again." return parse_text(message) def parse_text(text): lines = text.split("\n") for i,line in enumerate(lines): if "```" in line: items = line.split('`') if items[-1]: lines[i] = f'
'
            else:
                lines[i] = f'
' else: if i>0: line = line.replace("<", "<") line = line.replace(">", ">") lines[i] = '
'+line.replace(" ", " ") return "".join(lines) def chat_clone(inputs, history): history = history or [] output = ask_bot(inputs) history.append((inputs, output)) return history, history if ((email and password) or access_token or session_token): css = "style.css" else: css = None with gr.Blocks(css=css) as demo: args = get_args() if not args.no_markdown: gr.Markdown("""

ChatGPT BOT build by revChatGPT & Gradio

""") gr.Markdown("#### Author: [dotmet](https://github.com/dotmet) Github link:[ChatGPTWEB](https://github.com/dotmet/chatgpt_webui)") gr.Markdown("I have used my own OpenAI account for this demo,you can skip Login and try chat.") gr.Markdown("Duplicate this space and run for your own account: [chat_gpt_web](https://huggingface.co/spaces/dotmet/chatgpt_webui?duplicate=true).") if not ((email and password) or access_token or session_token): if not args.no_markdown: gr.Markdown("""

Login to OpenAI

""") with gr.Row(): with gr.Group(): method = gr.Dropdown(label="Login Method", choices=login_method) info = gr.Textbox(placeholder="email password/access_token/session_token", label="Login Information (choose login method first)") with gr.Row(): login = gr.Button("Login") login.click(configure_chatbot, inputs=[method, info]) else: if email and password: method = "Email/Password" info = email + " " + password elif access_token: method = "Access token" info = access_token elif session_token: method = "Session token" info = session_token configure_chatbot(method, info) if not args.no_markdown: gr.Markdown("""

Start Chatting ...

""") chatbot1 = gr.Chatbot(elem_id="chatbot", show_label=False) state = gr.State([]) message = gr.Textbox(placeholder="Chat here", label="Human: ") message.submit(chat_clone, inputs=[message, state], outputs=[chatbot1, state]) message.submit(lambda :"", None, message) submit = gr.Button("SEND") submit.click(chat_clone, inputs=[message, state], outputs=[chatbot1, state]) submit.click(lambda :"", None, message) demo.launch(debug = True, share=is_google_colab())