import gradio as gr import time import re MODELS = ["Mixtral-8x7B-Instruct-v0.1"] def chat_with_ai(message, chat_history, system_prompt): """Formats the chat history for the API call.""" messages = [{"role": "system", "content": system_prompt}] for item in chat_history: messages.append({"role": "user", "content": item["user"]}) messages.append({"role": "assistant", "content": item.get("assistant", "")}) messages.append({"role": "user", "content": message}) return messages def respond(message, chat_history, model, system_prompt, thinking_budget): """Simulate API call and get the response. Replace with actual API call.""" # Simulate a delay to mimic network or processing delay time.sleep(thinking_budget / 10) # Simulated delay based on thinking budget # Dummy response, replace this with an actual model call if necessary response = f"Simulated response for: {message}" return response, 1.0 def generate(message, history, model, system_prompt, thinking_budget): """Generates the chatbot response.""" chat_formatted = chat_with_ai(message, history, system_prompt) response, thinking_time = respond(message, chat_formatted, model, system_prompt, thinking_budget) history.append({"user": message, "assistant": response}) return history, "" # Define the default system prompt DEFAULT_SYSTEM_PROMPT = """ You are a helpful assistant in normal conversation. When given a problem to solve, you are an expert problem-solving assistant. Your task is to provide a detailed, step-by-step solution to a given question. """ with gr.Blocks() as demo: gr.Markdown("# Custom Chat Interface") with gr.Row(): model = gr.Dropdown(choices=MODELS, label="Select Model", value=MODELS[0]) thinking_budget = gr.Slider(minimum=1, maximum=100, value=10, step=1, label="Thinking Budget") system_prompt = gr.Textbox(value=DEFAULT_SYSTEM_PROMPT, lines=15, label="System Prompt") chatbot = gr.Chatbot(label="Chat", type="messages") msg = gr.Textbox(label="Type your message here...", placeholder="Enter your message...") # Clear chat function def clear_chat(): return [], "" gr.Button("Clear Chat").click(clear_chat, inputs=None, outputs=[chatbot, msg]) # Generate response on message submission msg.submit(generate, inputs=[msg, chatbot, model, system_prompt, thinking_budget], outputs=[chatbot, msg]) demo.launch()