# import os | |
# import gradio as gr | |
# from huggingface_hub import InferenceClient | |
# from dotenv import load_dotenv | |
# # Load environment variables | |
# load_dotenv() | |
# HF_TOKEN = os.getenv("HF_TOKEN") | |
# # Initialize Hugging Face Inference Client | |
# client = InferenceClient( | |
# model="mistralai/Mistral-7B-Instruct-v0.3", | |
# token=HF_TOKEN | |
# ) | |
# # System prompt for coding assistant | |
# system_message = ( | |
# "You are a helpful and experienced coding assistant specialized in web development. " | |
# "Help the user by generating complete and functional code for building websites. " | |
# "You can provide HTML, CSS, JavaScript, and backend code (like Flask, Node.js, etc.) " | |
# "based on their requirements." | |
# ) | |
# # Streaming chatbot logic | |
# def respond(message, history): | |
# # Prepare messages with system prompt | |
# messages = [{"role": "system", "content": system_message}] | |
# for msg in history: | |
# messages.append(msg) | |
# messages.append({"role": "user", "content": message}) | |
# # Stream response from the model | |
# response = "" | |
# for chunk in client.chat.completions.create( | |
# model="mistralai/Mistral-7B-Instruct-v0.3", | |
# messages=messages, | |
# max_tokens=1024, | |
# temperature=0.7, | |
# top_p=0.95, | |
# stream=True, | |
# ): | |
# token = chunk.choices[0].delta.get("content", "") or "" | |
# response += token | |
# yield response | |
# # Create Gradio interface | |
# with gr.Blocks() as demo: | |
# chatbot = gr.Chatbot(type='messages') # Use modern message format | |
# gr.ChatInterface(fn=respond, chatbot=chatbot, type="messages") # Match format | |
# # Launch app | |
# if __name__ == "__main__": | |
# demo.launch() | |
import os | |
import gradio as gr | |
from huggingface_hub import InferenceClient | |
from dotenv import load_dotenv | |
# Load environment variables | |
load_dotenv() | |
HF_TOKEN = os.getenv("HF_TOKEN") | |
# Initialize Hugging Face Inference Client | |
client = InferenceClient( | |
model="Qwen/Qwen2.5-Coder-7B-Instruct", | |
token=HF_TOKEN | |
) | |
# System prompt for coding assistant | |
system_message = ( | |
"You are a helpful and experienced coding assistant specialized in web development. " | |
"Help the user by generating complete and functional code for building websites. " | |
"You can provide HTML, CSS, JavaScript, and backend code (like Flask, Node.js, etc.) " | |
"based on their requirements." | |
) | |
# Streaming chatbot logic | |
def respond(message, history): | |
# Prepare messages with system prompt | |
messages = [{"role": "system", "content": system_message}] | |
for user_msg, assistant_msg in history: | |
messages.append({"role": "user", "content": user_msg}) | |
messages.append({"role": "assistant", "content": assistant_msg}) | |
messages.append({"role": "user", "content": message}) | |
# Stream response from the model | |
response = "" | |
for chunk in client.chat.completions.create( | |
model="Qwen/Qwen2.5-Coder-7B-Instruct", | |
messages=messages, | |
max_tokens=2048, | |
temperature=0.7, | |
top_p=0.95, | |
stream=True, | |
): | |
# Safely handle empty choices | |
if not chunk.choices: | |
continue | |
# Safely extract token content | |
token = chunk.choices[0].delta.content or "" | |
response += token | |
yield response | |
# Create Gradio interface | |
with gr.Blocks() as demo: | |
chatbot = gr.Chatbot(type='messages') # Use modern message format | |
gr.ChatInterface(fn=respond, chatbot=chatbot, type="messages") # Match format | |
# Launch app | |
if __name__ == "__main__": | |
demo.launch() | |