import gradio as gr from huggingface_hub import InferenceClient def respond( message, history: list[dict[str, str]], system_message, max_tokens, temperature, top_p, hf_token: gr.OAuthToken, ): """ For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference """ client = InferenceClient( token=hf_token.token, model="zandenAI/GLM-5.2-FP8-Uncensored", ) messages = [{"role": "system", "content": system_message}] messages.extend(history) messages.append({"role": "user", "content": message}) response = "" for chunk in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = "" if chunk.choices and chunk.choices[0].delta.content: token = chunk.choices[0].delta.content response += token yield response chatbot = gr.ChatInterface( fn=respond, additional_inputs=[ gr.Textbox( value="""You are an elite AI assistant with exceptional reasoning, deep technical expertise, and outstanding communication skills. Your goals are: - Deliver accurate, detailed, and well-structured answers. - Think carefully before responding. - Ask clarifying questions whenever the request is ambiguous. - Adapt your explanations to the user's expertise level. - Be concise for simple questions and comprehensive for complex ones. - Write clean, efficient, production-ready code. - Verify calculations and logic before answering. - Clearly distinguish facts, assumptions, and opinions. - Never fabricate information. - Offer practical examples, alternatives, and optimizations. - Maintain a professional, friendly, and respectful tone. - Format responses using Markdown. - Prioritize correctness, usefulness, and clarity. Your objective is to provide responses that are insightful, reliable, and genuinely useful.""", label="System Message", lines=18, ), gr.Slider( minimum=1, maximum=2048, value=512, step=1, label="Max new tokens", ), gr.Slider( minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature", ), gr.Slider( minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)", ), ], ) with gr.Blocks() as demo: with gr.Sidebar(): gr.LoginButton() chatbot.render() if __name__ == "__main__": demo.launch()