Spaces:
Configuration error
Configuration error
| import os | |
| import gradio as gr | |
| from huggingface_hub import InferenceClient | |
| # 安全读取 Huggingface Token | |
| HF_TOKEN = os.getenv("HF_TOKEN") | |
| MODEL_NAME = "Qwen/Qwen3-235B-A22B" | |
| client = InferenceClient(model=MODEL_NAME, token=HF_TOKEN) | |
| def chat_fn(message, history, system_message, temperature, top_p, max_tokens, repetition_penalty): | |
| # 构造消息 | |
| messages = [] | |
| if system_message: | |
| messages.append({"role": "system", "content": system_message}) | |
| for user_msg, bot_msg in history: | |
| messages.append({"role": "user", "content": user_msg}) | |
| messages.append({"role": "assistant", "content": bot_msg}) | |
| messages.append({"role": "user", "content": message}) | |
| # 请求模型 | |
| response = client.chat_completion( | |
| messages=messages, | |
| temperature=temperature, | |
| top_p=top_p, | |
| max_tokens=max_tokens, | |
| repetition_penalty=repetition_penalty, | |
| ) | |
| answer = response.choices[0].message["content"] | |
| history.append((message, answer)) | |
| return history, history | |
| with gr.Blocks(theme=gr.themes.Base(), css="footer {display: none !important}") as demo: | |
| gr.Markdown("# 🤖 Qwen3 Chatbot") | |
| with gr.Row(): | |
| with gr.Column(scale=3): | |
| chatbot = gr.Chatbot() | |
| message = gr.Textbox(label="Your Message", placeholder="Type something...", scale=4) | |
| submit = gr.Button("Send", variant="primary") | |
| clear = gr.Button("Clear") | |
| state = gr.State([]) | |
| with gr.Column(scale=1): | |
| system_message = gr.Textbox(label="System Prompt", placeholder="You are a helpful assistant.") | |
| temperature = gr.Slider(0, 1, value=0.7, step=0.05, label="Temperature") | |
| top_p = gr.Slider(0.1, 1.0, value=0.9, step=0.05, label="Top-p") | |
| max_tokens = gr.Slider(64, 2048, value=512, step=64, label="Max Tokens") | |
| repetition_penalty = gr.Slider(1.0, 2.0, value=1.1, step=0.1, label="Repetition Penalty") | |
| submit.click(chat_fn, | |
| inputs=[message, state, system_message, temperature, top_p, max_tokens, repetition_penalty], | |
| outputs=[chatbot, state]) | |
| message.submit(chat_fn, | |
| inputs=[message, state, system_message, temperature, top_p, max_tokens, repetition_penalty], | |
| outputs=[chatbot, state]) | |
| clear.click(lambda: ([], []), None, [chatbot, state]) | |
| demo.launch() | |