我注意到很多人都在手動運行 Qwen 3.5 模型,同時在運行 Llama.cpp 時調整採樣設定。我發現最簡單的方法是使用 LiteLLM Proxy 來處理採樣設定,並讓 Llama.cpp 來服務模型。LiteLLM proxy 真的很容易設置。
你 / 客戶端 <——> LiteLLM Proxy <——> 你的伺服器運行 llama.cpp。

圖表
快速入門
這是一個快速入門指南,幫助那些從未使用過 LiteLLM proxy 的人。
在沒有採樣設定的情況下運行 Llama.cpp
首先,確保你在沒有採樣設定的情況下運行 Llama.cpp。以下是我使用的(作為參考,我正在運行 4090 + Ubuntu (popos)):
/home/user/llama.cpp/build/bin/llama-server —model /home/user/models/Qwen3.5-35B-A3B-GGUF/Qwen3.5-35B-A3B-UD-Q4_K_XL.gguf —mmproj /home/user/models/Qwen3.5-35B-A3B-GGUF/mmproj-F16.gguf —alias Qwen3.5-35B-A3B-GGUF —host 0.0.0.0 —port 30000 —flash-attn on —no-mmap —jinja —fit on —ctx-size 32768
注意 “—port 30000” 和 “—alias” 參數 - 這在設置 LiteLLM 時非常重要。
安裝 LiteLLM Proxy
通過 pip 安裝 LiteLLM proxy:
pip install ‘litellm[proxy]‘
創建 LiteLLM 配置文件
我喜歡把我的配置文件放在 .config 中:
nano ~/.config/litellm/config.yaml
啟動配置
在這裡,我將使用 Qwen 3.5 35b 作為例子:
# 一般設定
general_settings: master_key: “llm” request_timeout: 600
模型
model_list:
Qwen3.5-35B 變體
-
model_name: qwen3.5-35b-think-general litellm_params: model: openai/Qwen3.5-35B-A3B-GGUF api_base: http://localhost:30000/v1 api_key: none temperature: 1.0 top_p: 0.95 presence_penalty: 1.5 extra_body: top_k: 20 min_p: 0.0 repetition_penalty: 1.0 chat_template_kwargs: enable_thinking: true
-
model_name: qwen3.5-35b-think-code litellm_params: model: openai/Qwen3.5-35B-A3B-GGUF api_base: http://localhost:30000/v1 api_key: none temperature: 0.6 top_p: 0.95 presence_penalty: 0.0 extra_body: top_k: 20 min_p: 0.0 repetition_penalty: 1.0 chat_template_kwargs: enable_thinking: true
-
model_name: qwen3.5-35b-instruct-general litellm_params: model: openai/Qwen3.5-35B-A3B-GGUF api_base: http://localhost:30000/v1 api_key: none temperature: 0.7 top_p: 0.8 presence_penalty: 1.5 extra_body: top_k: 20 min_p: 0.0 repetition_penalty: 1.0 chat_template_kwargs: enable_thinking: false
-
model_name: qwen3.5-35b-instruct-reasoning litellm_params: model: openai/Qwen3.5-35B-A3B-GGUF api_base: http://localhost:30000/v1 api_key: none temperature: 1.0 top_p: 0.95 presence_penalty: 1.5 extra_body: top_k: 20 min_p: 0.0 repetition_penalty: 1.0 chat_template_kwargs: enable_thinking: false
每個條目都將顯示為一個單獨的模型,但它們實際上指向同一個 Llama.cpp 實例,具有不同的採樣設定。
注意 “model: openai/Qwen3.5-35B-A3B-GGUF” 字段。 “openai/“ 之後的部分需要與 Llama.cpp 中的 “—alias” 參數匹配。
另外,請注意 “api_base: http://localhost:30000/v1” 字段 - 這指向你的 Llama.cpp 伺服器。
“master_key: “llm”” 字段用於 api 金鑰。我使用一些簡短的東西,因為它在本地運行,但你可以用任何你想要的替換它。
運行 LiteLLM Proxy
運行 LiteLLM。我們將打開端口 20000:
litellm \ —config ~/.config/litellm/config.yaml \ —host 0.0.0.0 \ —port 20000
測試它!
你應該看到 4 個模型的列表:
curl http://localhost:8901/v1/models \ -H “Authorization: Bearer llm” \ -H “Content-Type: application/json”curl
Openwebui 或其他客戶端
以 Openwebui 為例:在連接設定中,添加一個連接點到基本 URL(用你的機器的 IP 位址替換本地主機):
然後設置 api 金鑰 “llm” 或你在 LiteLLM 的配置文件中設置的任何內容。
你現在將看到 4 個不同的模型 - 但它實際上是一個具有不同採樣設定的模型!
希望你覺得這很有用。
希望你覺得這很有用。你可以在我的 GitHub 上獲取配置文件:
https://github.com/dicksondickson/ai-infra-onprem
Comments
JamesEvoAI · 2026-03-03 · 7 points
我再給你加碼!用 router 模式跑 llama-swap,然後把它放在 LiteLLM 後面。
這樣你就有一個單一的 endpoint 可以用來呼叫所有本地和託管的模型,還有一個單一的 UI 可以啟動/關閉所有本地模型。就算你只有資源一次跑一個模型,你也可以讓一個 agent 指向你放滿 GGUF 檔案和 unsloth 文件的地方,然後叫它在 llama-swap 裡面用正確的取樣參數設定好一切。然後你就可以從一個 UI 瀏覽和管理你所有的 llama.cpp 模型/伺服器。
再加個 Langfuse 進來,你就能得到比 LiteLLM 提供的更全面的追蹤和評估。
CATLLM · 2026-03-03 · 4 points
我其實自己也弄了 Llama swap,但想讓這東西對新手來說越簡單越好。
JamesEvoAI · 2026-03-03 · 1 points
幹得好!
Ok-Ad-8976 · 2026-03-03 · 1 points
嗯哼,這是我正在努力建構的架構。 我覺得我搞太複雜了。 正在弄 Postgres 那部分。
PostgreSQL (食譜儲存庫) — 可變動,從任何地方都能存取
|
v gpu-tool recipe generate
LlamaSwap (每個主機) — systemd 服務,熱重載配置
|
+--- r9700 LlamaSwap (Vulkan/ROCm 工具箱)
+--- strix395 LlamaSwap (Vulkan/ROCm 工具箱)
+--- bluefin990 LlamaSwap (CUDA 工具箱)
|
LlamaSwap Gateway (litellm 主機) — 同儕聯網
|
LiteLLM — 統一的雲端 + 本地 API
JamesEvoAI · 2026-03-03 · 1 points
你用那麼多算力在幹嘛?
Ok-Ad-8976 · 2026-03-04 · 1 points
準備好迎接智能體接管,哈哈
Dazzling_Equipment_9 · 2026-03-03 · 1 points
你可以用 llamas wap 的篩選功能,它有一個 setParamByID 的變體,讓你不用重啟模型就能更改模型 ID 參數。
M4A3E2APFSDS · 2026-03-17 · 1 points
我正在嘗試透過 vlllm 設定 qwen。 為什麼你需要
extra_body:
這是我的目前設定
- model_name: Qwen3.5-27B-Instruct-Reasoning litellm_params: model: hosted_vllm/Qwen3.5-27B api_base: "" api_key: "" temperature: 1.0 top_p: 1.0 top_k: 40 min_p: 0.0 presence_penalty: 2.0 repetition_penalty: 1.0 chat_template_kwargs: enable_thinking: false
這樣模型就不再思考了,但我不太確定其他參數。 有沒有辦法驗證?
CATLLM · 2026-03-17 · 2 points
去看看關於取樣設定的官方文件吧。如果你想的話,可以選擇關掉思考功能喔。
https://huggingface.co/Qwen/Qwen3.5-27B
M4A3E2APFSDS · 2026-03-17 · 1 points
我看到了,謝謝!litellm 的設定跟這個很像。有沒有辦法讓 litellm 把思考的 tokens 傳回 openwebui 呢?我搞不懂。不過直接連到 vllm 倒是沒問題。
chat_response = client.chat.completions.create( model=“Qwen/Qwen3.5-27B”, messages=messages, max_tokens=32768, temperature=0.7, top_p=0.8, presence_penalty=1.5, extra_body={ “top_k”: 20, “chat_template_kwargs”: {“enable_thinking”: False}, }, )
CATLLM · 2026-03-17 · 1 points
你把思考功能關掉了。設定
{“enable_thinking”: False},{“enable_thinking”: False},
改成 true。
照著我寫的教學做就好 - 你問的這些問題教學裡都已經有答案了。參考一下我原文裡的 litellm 設定,或者去我的 GitHub 找。