Spaces:
Sleeping
Sleeping
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 = """ | |
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4124087181208916" | |
crossorigin="anonymous"></script> | |
<ins class="adsbygoogle" | |
style="display:block" | |
data-ad-format="fluid" | |
data-ad-layout-key="-gw-3+1f-3d+2z" | |
data-ad-client="ca-pub-4124087181208916" | |
data-ad-slot="1309752867"></ins> | |
<script> | |
(adsbygoogle = window.adsbygoogle || []).push({}); | |
</script> | |
""" | |
# 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() |