Spaces:
Build error
Build error
| import gradio as gr | |
| from llama_cpp import Llama | |
| import os | |
| # 从 Hugging Face Model Hub 下载 GGUF 模型文件 | |
| # 这里以 TheBloke 量化的大佬提供的模型为例 | |
| model_repo = "Qwen/Qwen3-4B-GGUF" | |
| model_file = "Qwen3-4B-Q8_0.gguf" | |
| # 也可以选择更小参数的量化版本,如 q8_0, q5_0, q4_0 等,数字越小,模型越小,精度越低 | |
| # 初始化 Llama 模型 | |
| # 首次运行会自动下载模型,需要等待一段时间 | |
| llm = Llama( | |
| model_path=f"https://huggingface.co/{model_repo}/resolve/main/{model_file}", | |
| n_ctx=2048, # 上下文长度 | |
| n_threads=2, # 线程数 | |
| verbose=False | |
| ) | |
| def predict(message, history): | |
| # 1. 构建聊天历史格式 | |
| system_message = {"role": "system", "content": "You are a helpful assistant."} | |
| messages = [system_message] | |
| for human, assistant in history: | |
| messages.append({"role": "user", "content": human}) | |
| messages.append({"role": "assistant", "content": assistant}) | |
| messages.append({"role": "user", "content": message}) | |
| # 2. 生成回复 | |
| response = llm.create_chat_completion( | |
| messages=messages, | |
| max_tokens=512, | |
| temperature=0.7, | |
| stop=["<|im_end|>"] # Qwen 模型的停止词 | |
| ) | |
| # 3. 提取回复内容 | |
| assistant_reply = response['choices'][0]['message']['content'] | |
| return assistant_reply | |
| # 创建界面 | |
| gr.ChatInterface( | |
| fn=predict, | |
| title="Qwen3-4B-GGUF (GGUF量化版)", | |
| description="使用 llama.cpp 在 CPU 上高效运行 Qwen 模型。首次加载需下载模型,请耐心等待。", | |
| ).launch(server_name="0.0.0.0", server_port=7860) |