| 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() |