撒拉嘿呦 發表於 2026-3-10 10:28:00

LiteLLM + OpenClaw:多模型 API Key 管理与模型切换实战

<h2 id="前言">前言</h2>
<p>前文已经安装了openclaw,并且接入到了飞书,但是模型的免费额度很快就用完了,需要去市面上众多的模型厂商去选择适合自己的模型,而采集的过程当中,不可避免的会使用众多厂商的模型,那怎么管理这些模型的key,并且做到 随时切换了,本文就来解决这个问题</p>
<p>本文使用liteLLM来管理进行模型key的管理</p>
<h2 id="安装litellm">安装liteLLM</h2>
<p>1)安装liteLLM非常的简单</p>
<pre><code>pip3 install litellm
</code></pre>
<p>2)配置文件</p>
<p>litellm_config.yaml</p>
<pre><code>model_list:
- model_name: qwen-plus
    litellm_params:
      model: dashscope/qwen-plus
      api_key: os.environ/QWEN_PLUS_API_KEY
      api_base: https://dashscope.aliyuncs.com/compatible-mode/v1
- model_name: deepseek-chat
    litellm_params:
      model: deepseek/deepseek-chat
      api_key: os.environ/DEEPSEEK_CHAT_API_KEY
      api_base: https://api.deepseek.com/chat/completions

general_settings:
master_key: wilson-litellm-private-key
</code></pre>
<p>注:配置了两个大模型,并且对应的key都已经写在环境变量里面了</p>
<p>3)启动</p>
<pre><code>litellm --config litellm_config.yaml --port 4000
</code></pre>
<p>4)测试</p>
<pre><code>&gt; curl http://localhost:4000/v1/chat/completions \
-H "Authorization: Bearer wilson-litellm-private-key" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-plus",
    "messages": [{"role": "user", "content": "你是谁"}]
}'
{"id":"chatcmpl-9403264e-0e1a-9d79-9f95-49bf2fa3a629","created":1772509820,"model":"qwen-plus","object":"chat.completion","choices":[{"finish_reason":"stop","index":0,"message":{"content":"你好!我是通义千
问(Qwen),阿里巴巴集团旗下的超大规模语言模型。我能够回答问题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等等,还能表达观点,玩游戏等。如果你有任何问题或需要帮助,欢迎随时告诉我!😊","role":"assistant","provider_specific_fields":{"refusal":null}},"provider_specific_fields":{}}],"usage":{"completion_tokens":66,"prompt_tokens":10,"total_tokens":76,"prompt_tokens_details":{"cached_tokens":0}}}
</code></pre>
<p>安装完成</p>
<h2 id="接入openclaw">接入openclaw</h2>
<p>直接修改 <code>~/.openclaw/openclaw.json</code></p>
<pre><code>{
...
"models": {
    "mode": "merge",
    "providers": {
      "litellm": {
      "baseUrl": "http://localhost:4000/v1",
      "apiKey": "wilson-litellm-private-key",
      "api": "openai-completions",
      "models": [ # id 必须要与litellm_config.yaml中的model_name相同
          {
            "id": "qwen-plus",
            "name": "通义千问-Plus"
          },
          {
            "id": "deepseek-chat",
            "name": "deepseek-chat"
          }
      ]
      }
    }
},
"agents": {
    "defaults": {
      "model": {
      "primary": "litellm/qwen-plus"
      },
      "models": { # 提供切换
      "litellm/qwen-plus": {},
      "litellm/deepseek-chat": {}
      }
      ...
    }
},
...
}
</code></pre>
<p>配置完成,重启一下gateway <code>openclaw gateway restart</code></p>
<ul>
<li>
<p>1)查看当前模型</p>
<p><img alt="watermarked-openclaw_litellm_1" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202603/1416773-20260310101835955-1719230310.jpg" class="lazyload"></p>
</li>
<li>
<p>2)切换模型</p>
<p><img alt="watermarked-openclaw_litellm_2" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202603/1416773-20260310101842539-23364251.jpg" class="lazyload"></p>
</li>
<li>
<p>3)验证切换后的模型</p>
<p><img alt="watermarked-openclaw_litellm_3" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202603/1416773-20260310101848821-154320352.jpg" class="lazyload"></p>
</li>
</ul>
<p>完成多模型部署</p>
<h2 id="监控token使用">监控token使用</h2>
<p>多模型需要随时监控token的使用量</p>
<p>litellm需要将数据持久化,重新使用docker部署,并且加入postgresql数据库</p>
<ul>
<li>
<p>1)创建docker网络</p>
<pre><code>docker network create litellm-network

</code></pre>
</li>
<li>
<p>2)创建postgresql数据库</p>
<pre><code>docker run -d \
--name litellm-postgres \
--network litellm-network \
-e POSTGRES_USER=litellm \
-e POSTGRES_PASSWORD=litellm123 \
-e POSTGRES_DB=litellm \
-p 5432:5432 \
-v litellm-postgres-data:/var/lib/postgresql/data \
--restart unless-stopped \
postgres:15
</code></pre>
</li>
<li>
<p>3)创建litellm,并且指向数据库</p>
<ul>
<li>修改配置文件 <code>litellm_config.yaml</code>,新增数据库指向</li>
</ul>
<pre><code>model_list:
...

general_settings:
master_key: wilson-litellm-private-key
database_url: postgresql://litellm:litellm123@litellm-postgres:5432/litellm
</code></pre>
<ul>
<li>创建litellm</li>
</ul>
<pre><code>docker run -d \
--name litellm-proxy \
--network litellm-network \
-p 4000:4000 \
-e DATABASE_URL="postgresql://litellm:litellm123@litellm-postgres:5432/litellm" \
-e LITELLM_MASTER_KEY="wilson-litellm-private-key" \
-e UI_USERNAME="admin" \
-e UI_PASSWORD="wilson-litellm-private-key" \
-v ./litellm_config.yaml:/app/config.yaml \
--restart unless-stopped \
ghcr.io/berriai/litellm:main-latest \
--config /app/config.yaml --port 4000
</code></pre>
</li>
</ul>
<p>安装完成,打开控制台查看,<code>http://localhost:4000/ui</code>,使用admin/wilson-litellm-private-key登陆</p>
<p>功能还是非常多的,当先需要关注的就是token消耗,直奔<code>Usage</code></p>
<p><img alt="watermarked-openclaw_litellm_4" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202603/1416773-20260310101856970-1455954715.jpg" class="lazyload"></p>
<p>主要观察token消耗,至于费用,不是很准,因为litellm的价格是存储在默认的文件中 <code>/app/model_prices_and_context_window.json</code>,文件更新的速度显然不及官网的变化,所以这里只需要观察token的消耗即可。但是为了观察token的消耗,又要装数据库、看web,貌似不是很轻便。后面找时间优化一下,现在就先将就这样吧</p>
<h2 id="总结">总结</h2>
<p>至此,通过litellm管理多模型,并且配置在openclaw之中,切换起来也很方便</p>
<h2 id="联系我">联系我</h2>
<ul>
<li>联系我,做深入的交流</li>
</ul>
<p><img alt="" width="500" height="200" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202411/1416773-20241121135740959-1907948957.png#" class="lazyload"></p>
<hr>
<p>至此,本文结束<br>
在下才疏学浅,有撒汤漏水的,请各位不吝赐教...</p>


</div>
<div id="MySignature" role="contentinfo">
    <p>本文来自博客园,作者:it排球君,转载请注明原文链接:https://www.cnblogs.com/MrVolleyball/p/19695526</p>
<div>本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。 </div><br><br>
来源:https://www.cnblogs.com/MrVolleyball/p/19695526
頁: [1]
查看完整版本: LiteLLM + OpenClaw:多模型 API Key 管理与模型切换实战