Manojajj's picture
Update app.py
db67b12 verified
raw
history blame
3.26 kB
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()