import gradio as gr from huggingface_hub import InferenceClient # Initialize a list to store the conversation history conversation_history = [] # Function to interact with the model using the Inference API def chat_with_model(user_input, hf_api_key): global conversation_history if not hf_api_key: return "Error: Please provide your Hugging Face API key." try: # Initialize the InferenceClient with the provided API key client = InferenceClient(api_key=hf_api_key) # Add the user's message to the conversation history conversation_history.append({"role": "user", "content": user_input}) # Define the system message (defining the assistant role) system_message = { "role": "system", "content": "You are a code assistant that helps with code generation, debugging, and explanations." } # Add system message to the conversation history if len(conversation_history) == 1: # Add system message only once conversation_history.insert(0, system_message) # Ensure the conversation history doesn't exceed token limits if len(conversation_history) > 10: # Keep the last 10 messages conversation_history = [system_message] + conversation_history[-10:] # Create a stream for chat completions using the API stream = client.chat.completions.create( model="Qwen/Qwen2.5-Coder-32B-Instruct", messages=conversation_history, max_tokens=500, stream=True ) # Collect the generated response from the model response = "" for chunk in stream: response += chunk.choices[0].delta.content # Add the assistant's response to the conversation history conversation_history.append({"role": "assistant", "content": response}) return response except Exception as e: return f"Error: {e}" # AdSense HTML Code adsense_code = """ """ # Create the Gradio interface with gr.Blocks() as demo: gr.HTML(adsense_code) # Add Google AdSense gr.Markdown("### Code Assistant with Qwen2.5-Coder") gr.Markdown("Ask me anything about coding! Enter your Hugging Face API key to start.") # Create the input and output interface with gr.Row(): user_input = gr.Textbox(lines=5, placeholder="Ask me anything about coding...") api_key = gr.Textbox(lines=1, placeholder="Enter your Hugging Face API key", type="password") # Create the output display output = gr.Textbox(label="Response") # Button for submitting queries submit_button = gr.Button("Submit") submit_button.click(chat_with_model, inputs=[user_input, api_key], outputs=output) # Launch the app demo.launch()