import gradio as gr import os import sys import argparse from utils import * from chat_func import * my_api_key = os.environ.get('my_api_key') if my_api_key == "empty": print("Please give a api key!") sys.exit(1) gr.Chatbot.postprocess = postprocess with open("css.css", "r", encoding="utf-8") as f: css = f.read() with gr.Blocks( css=css, # theme=gr.themes.Soft( # primary_hue=gr.themes.Color( # c50="#708090", # c100="#708090", # c200="#708090", # c300="#708090", # c400="#708090", # c500="#708090", # c600="#708090", # c700="#708090", # c800="#708090", # c900="#708090", # c950="#708090", # ), # secondary_hue=gr.themes.Color( # c50="#576b95", # c100="#576b95", # c200="#576b95", # c300="#576b95", # c400="#576b95", # c500="#576b95", # c600="#576b95", # c700="#576b95", # c800="#576b95", # c900="#576b95", # c950="#576b95", # ), # neutral_hue=gr.themes.Color( # name="gray", # c50="#f9fafb", # c100="#f3f4f6", # c200="#e5e7eb", # c300="#d1d5db", # c400="#B2B2B2", # c500="#808080", # c600="#636363", # c700="#515151", # c800="#393939", # c900="#272727", # c950="#171717", # ), # radius_size=gr.themes.sizes.radius_sm, # ).set( # button_primary_background_fill="#708090", # button_primary_background_fill_dark="#708090", # button_primary_background_fill_hover="#708090", # button_primary_border_color="#778899", # button_primary_border_color_dark="#778899", # button_primary_text_color="#FFFFFF", # button_primary_text_color_dark="#FFFFFF", # button_secondary_background_fill="#F2F2F2", # button_secondary_background_fill_dark="#2B2B2B", # button_secondary_text_color="#393939", # button_secondary_text_color_dark="#FFFFFF", # block_title_text_color="*primary_500", # block_title_background_fill="*primary_100", # input_background_fill="#F6F6F6", # ), ) as demo: history = gr.State([]) token_count = gr.State([]) promptTemplates = gr.State(load_template('myprompts.json', mode=2)) user_api_key = gr.State(my_api_key) TRUECOMSTANT = gr.State(True) FALSECONSTANT = gr.State(False) gr.Markdown(title) with gr.Accordion("Build by [45度科研人](WeChat Public Accounts)", open=False): gr.Markdown(description) with gr.Row(scale=1).style(equal_height=True): with gr.Column(scale=5): with gr.Column(): chatbot = gr.Chatbot().style(color_map=("green", "blue")) user_input = gr.Textbox(show_label=False, placeholder="Enter text and press submit", visible=True).style(container=False) submitBtn = gr.Button("Submit", variant="primary").style(container=False) emptyBtn = gr.Button("Restart Conversation") status_display = gr.Markdown("") with gr.Column(): with gr.Column(min_width=50): with gr.Tab(label="ChatGPT"): with gr.Column(): with gr.Row(): keyTxt = gr.Textbox(show_label=False, placeholder=f"You can input your own openAI API-key",value=hide_middle_chars(my_api_key),visible=True, type="password", label="API-Key") # keyTxt = gr.Textbox(show_label=False, placeholder=f"You can input your own openAI API-key",value=my_api_key,visible=True, type="password", label="API-Key") systemPromptTxt = gr.Textbox(show_label=True,placeholder=f"Set a custom insruction for the chatbot: You are a helpful assistant.",label="Custom prompt",value=initial_prompt,lines=10,).style(container=False) with gr.Row(): templateSelectDropdown = gr.Dropdown(label="load from template",choices=load_template('myprompts.json', mode=1), multiselect=False,value=load_template('myprompts.json', mode=1)[0],).style(container=False) with gr.Tab(label="Settings"): with gr.Column(): with gr.Row(): with gr.Column(scale=3): saveFileName = gr.Textbox(show_label=True, placeholder=f"output file name...",label='Save conversation history', value="").style(container=False) with gr.Column(scale=1): exportMarkdownBtn = gr.Button("Save") with gr.Row(): with gr.Column(scale=1): downloadFile = gr.File(interactive=False) gr.Markdown("""