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

你 / 客戶端 <——> LiteLLM Proxy <——> 你的伺服器運行 llama.cpp。

r/LocalLLaMA - 圖表

圖表

快速入門

這是一個快速入門指南,幫助那些從未使用過 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 位址替換本地主機):

http://localhost:20000/v1

然後設置 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 找。