import gradio as gr from src.main import ChatWrapper agent = ChatWrapper('openai', '') # default agnet_state def update_agent(api_key: str, selection: str): global agent agent = ChatWrapper(chain_type=selection, api_key=api_key) return agent # This is agent state def chat(message): global agent agent(message) # Get a response to the current message history = agent.history # Access the entire chat history return history, history # Return the history twice to update both the chatbot and the state block = gr.Blocks(css=".gradio-container {background-color: lightgray}") with block: with gr.Row(): gr.HTML("

ConversationalChain App 🤖


For Falcon use HuggingFace API Token, for OpenAI use OpenAI API Key") selection = gr.Dropdown(label="Select Agent", choices=["falcon", "openai"], default="openai") api_key_textbox = gr.Textbox( label="API Key", placeholder= "Paste Your API Key", show_label=True, lines=1, type="password", ) chatbot = gr.Chatbot() with gr.Row(): message = gr.Textbox( label="What's your question?", placeholder="What's the answer to life, the universe, and everything?", lines=1, ) submit = gr.Button(value="Send", variant="secondary").style(full_width=False) gr.Examples( examples=[ "Hi! How's it going?", "What should I do tonight?", "Whats 2 + 2?", ], inputs=message, ) gr.HTML("
View more at ai.rohankataria.com
") state = gr.State() agent_state = gr.State() submit.click(chat, inputs=[message], outputs=[chatbot, state]) message.submit(chat, inputs=[message], outputs=[chatbot, state]) api_key_textbox.change(update_agent, inputs=[api_key_textbox, selection], outputs=[agent_state]) selection.change(update_agent, inputs=[api_key_textbox, selection], outputs=[agent_state]) block.launch(debug=True)