# 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() # import os # import gradio as gr # from dotenv import load_dotenv # from huggingface_hub import InferenceClient # # Load environment variables # load_dotenv() # HF_TOKEN = os.getenv("HF_TOKEN") # if not HF_TOKEN: # raise ValueError("HF_TOKEN is missing.") # # Initialize client # client = InferenceClient( # api_key=HF_TOKEN # ) # # System prompt # 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." # ) # def chat_function(message, history): # messages = [ # { # "role": "system", # "content": system_message # } # ] # history = history or [] # for item in history: # if isinstance(item, dict): # role = item.get("role") # content = item.get("content", "") # if role in ["user", "assistant"]: # messages.append({ # "role": role, # "content": content # }) # elif isinstance(item, (list, tuple)) and len(item) == 2: # user_msg, assistant_msg = item # if user_msg: # messages.append({ # "role": "user", # "content": user_msg # }) # if assistant_msg: # messages.append({ # "role": "assistant", # "content": assistant_msg # }) # messages.append({ # "role": "user", # "content": message # }) # try: # completion = client.chat.completions.create( # model="Qwen/Qwen2.5-Coder-7B-Instruct:nscale", # messages=messages, # max_tokens=2048, # temperature=0.7, # top_p=0.95, # ) # return completion.choices[0].message.content # except Exception as e: # return f"Error: {str(e)}" # # Interface # demo = gr.ChatInterface( # fn=chat_function, # type="messages", # title="AI Coding Assistant", # description="A coding assistant powered by Qwen2.5-Coder." # ) # # Launch # if __name__ == "__main__": # demo.launch() import os import gradio as gr from dotenv import load_dotenv from huggingface_hub import InferenceClient # Load environment variables load_dotenv() HF_TOKEN = os.getenv("HF_TOKEN") if not HF_TOKEN: raise ValueError("HF_TOKEN is missing.") # Initialize client with featherless-ai router client = InferenceClient( base_url="https://router.huggingface.co/featherless-ai/v1", api_key=HF_TOKEN, ) # System prompt 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." ) def chat_function(message, history): messages = [ { "role": "system", "content": system_message } ] history = history or [] for item in history: if isinstance(item, dict): role = item.get("role") content = item.get("content", "") if role in ["user", "assistant"]: messages.append({ "role": role, "content": content }) elif isinstance(item, (list, tuple)) and len(item) == 2: user_msg, assistant_msg = item if user_msg: messages.append({ "role": "user", "content": user_msg }) if assistant_msg: messages.append({ "role": "assistant", "content": assistant_msg }) messages.append({ "role": "user", "content": message }) try: completion = client.chat.completions.create( model="Qwen/Qwen2.5-Coder-7B-Instruct", messages=messages, max_tokens=2048, temperature=0.7, top_p=0.95, ) return completion.choices[0].message.content except Exception as e: return f"Error: {str(e)}" # Interface demo = gr.ChatInterface( fn=chat_function, type="messages", title="AI Coding Assistant", description="A coding assistant powered by Qwen2.5-Coder." ) if __name__ == "__main__": demo.launch()