diff --git a/app.py b/app.py index c5f2fba..04ebd1e 100644 --- a/app.py +++ b/app.py @@ -2,52 +2,55 @@ import requests import gradio as gr from openai import OpenAI -client = OpenAI( - base_url = 'http://localhost:7869/v1', - api_key='ollama', # required, but unused -) +class ChatbotApp: + def __init__(self): + self.client = OpenAI( + base_url='http://localhost:7869/v1', + api_key='ollama', # required, but unused + ) + self.chat_history = [] -chat_history = [] + def get_models(self): + response = requests.get("http://localhost:7869/api/tags") + models = response.json()["models"] + return [model["name"] for model in models] -def get_models(): - response = requests.get("http://localhost:7869/api/tags") - models = response.json()["models"] - return [model["name"] for model in models] + def ask(self, text, model): + self.chat_history.append({"role": "user", "content": text}) + response = self.client.chat.completions.create( + model=model, + messages=self.chat_history + ) + response_text = response.choices[0].message.content + self.chat_history.append({"role": "assistant", "content": response_text}) + formatted_history = "\n".join([f"**{msg['role'].capitalize()}**: {msg['content']}" for msg in self.chat_history]) + print("Formatted History: ", formatted_history) + return formatted_history, "" -def ask(text, model): - global chat_history - chat_history.append({"role": "user", "content": text}) - response = client.chat.completions.create( - model=model, - messages=chat_history - ) - response_text = response.choices[0].message.content - chat_history.append({"role": "assistant", "content": response_text}) - formatted_history = "\n".join([f"**{msg['role'].capitalize()}**: {msg['content']}" for msg in chat_history]) - print("Formatted History: ", formatted_history) - return formatted_history, "" + def clear_history(self, model): + self.chat_history = [] + # Reset the conversation on the server side + self.client.chat.completions.create( + model=model, + messages=[{"role": "system", "content": "Reset conversation"}] + ) + return "" -def clear_history(model): - global chat_history - chat_history = [] - # Reset the conversation on the server side - client.chat.completions.create( - model=model, - messages=[{"role": "system", "content": "Reset conversation"}] - ) - return "" - + def launch(self): + with gr.Blocks() as server: + with gr.Tab("Chatbot LF6"): + model_dropdown = gr.Dropdown(label="Select Model", choices=self.get_models()) + chatbox = gr.Textbox(label="Chat History", lines=10, interactive=False) + input_text = gr.Textbox(label="Input Text", placeholder="Enter your text here...") + submit_button = gr.Button("Submit") + clear_button = gr.Button("Clear") + + submit_button.click(fn=lambda text, model: self.ask(text, model), inputs=[input_text, model_dropdown], outputs=[chatbox, input_text]) + input_text.submit(fn=lambda text, model: self.ask(text, model), inputs=[input_text, model_dropdown], outputs=[chatbox, input_text]) # Submit on Enter key press + clear_button.click(fn=self.clear_history, inputs=model_dropdown, outputs=chatbox) -with gr.Blocks() as server: - with gr.Tab("Chatbot LF6"): - model_dropdown = gr.Dropdown(label="Select Model", choices=get_models()) - chatbox = gr.Textbox(label="Chat History", lines=10, interactive=False) - input_text = gr.Textbox(label="Input Text", placeholder="Enter your text here...") - submit_button = gr.Button("Submit") - clear_button = gr.Button("Clear") - - submit_button.click(fn=lambda text, model: ask(text, model), inputs=[input_text, model_dropdown], outputs=[chatbox, input_text]) - input_text.submit(fn=lambda text, model: ask(text, model), inputs=[input_text, model_dropdown], outputs=[chatbox, input_text]) # Submit on Enter key press - clear_button.click(fn=clear_history, inputs=model_dropdown, outputs=chatbox) + server.launch() -server.launch() \ No newline at end of file +if __name__ == "__main__": + app = ChatbotApp() + app.launch() \ No newline at end of file