| import gradio as gr |
| from chat import get_response |
|
|
| def clear_session(): |
| return "", [] |
|
|
| def add_query(chat_history, input): |
| if not input: |
| raise gr.Error("Please enter a question.") |
| chat_history.append((input, None)) |
| return chat_history |
|
|
| def response(history, query, model): |
| chat_history = [] |
| for i in history: |
| if i[0]: |
| chat_history.append(i[0]) |
| if i[1]: |
| chat_history.append(i[1]) |
|
|
| messages = [{"role": "user", "content": chat_history[0]}] |
| for i in range(1, len(chat_history), 2): |
| messages.append({"role": "assistant", "content": chat_history[i]}) |
| messages.append({"role": "user", "content": chat_history[i + 1]}) |
|
|
| res_msg = get_response(model, messages) |
| history[-1] = (query, res_msg) |
| return "", history |
|
|
| demo = gr.Blocks(title= "Chatbot", theme="Soft") |
| with demo: |
| with gr.Column("Chatbot - Family Relationships"): |
| model = gr.Radio(["gpt-3.5-turbo", "gpt-4-turbo", "ft:gpt-3.5-turbo-0125:personal::9hiINdK8"], |
| label="model", |
| info="Kindly choose a model before initiating the chat and clear the chat history before switching models. The last one is fine-tuned models.") |
| chatbot = gr.Chatbot(value=[], elem_id='chatbot') |
|
|
| text_input = gr.Textbox( |
| show_label=False, |
| placeholder="Ask me anything!", |
| container=False) |
|
|
| clear_btn = gr.Button("🧹 Clear") |
| text_input.submit(add_query, inputs=[chatbot, text_input], outputs=[chatbot], concurrency_limit=1).\ |
| success(response, inputs=[chatbot, text_input, model], outputs=[text_input, chatbot]) |
| clear_btn.click(clear_session, inputs=[], outputs=[text_input, chatbot]) |
|
|
| demo.launch() |