🎇

2. Open WebUI 接 Azure openai

💡
在1. 中成功运行openwebui,但仅接入ollama支持的模型,若想接入openai相关模型,需要接openai key或者Azureopenai key
 
什么是LiteLLM
  • 统一 API 接口 (API Standardization)
    • 不同的 LLM 提供商(如 Azure OpenAI, Google Gemini, Anthropic Claude, Cohere 等)都有自己独特的 API 接口、请求格式、认证方式和返回数据结构。
    • Open Webui 如果要支持所有这些模型,就需要为每一种模型编写专门的对接代码,这会使 Open Webui 变得非常复杂和臃肿。
    • LiteLLM 解决了这个问题。它提供了一个与 OpenAI官方 API 完全兼容的统一接口。无论你背后实际用的是 Azure、Gemini 还是其他任何模型,LiteLLM 都会把它们“伪装”成一个标准的 OpenAI 服务。
    • 这样一来,Open Webui 只需要知道如何与 OpenAI 的 API 对话就足够了。它把请求发送给 LiteLLM,LiteLLM 在内部负责将这个标准的请求“翻译”成特定模型(如 Azure 或 Gemini)能够听懂的格式,然后再将模型的响应“翻译”回标准的 OpenAI 格式返回给 Open Webui
  • 模型路由与管理 (Model Routing & Management)
    • 如果openwebui同时接 Azure OpenAIGemini。LiteLLM 允许你将这些不同的模型注册在同一个地方。
    • 你可以在 LiteLLM 的配置中定义一个模型列表,例如:
      • 模型名 gpt-4o -> 路由到 -> Azure OpenAI 的 GPT-4o 服务
      • 模型名 gemini-1.5-pro -> 路由到 -> Google Cloud 的 Gemini 1.5 Pro 服务
    • Open Webui 的用户在前端选择 gpt-4o 时,请求发到 LiteLLM,LiteLLM 就知道应该把这个请求转发给 Azure;当用户选择 gemini-1.5-pro 时,LiteLLM 就把它转发给 Gemini。
    • 这使得添加、删除或切换后端 LLM 模型变得异常简单,你只需要修改 LiteLLM 的配置即可,完全不需要改动或重启 Open Webui
  • 集中化的控制与可观测性 (Centralized Control & Observability)
    • 所有对 LLM 的调用都会经过 LiteLLM 这一个关口。
    • 这使得成本追踪、日志记录、用户用量限制、API 密钥管理等变得非常方便。你可以在一个地方监控所有模型的调用情况,而不需要去 Azure 和 Google 的控制台分别查看。
 

场景一:直接连接 (Simple Architecture)
  • 目标:我只想用 Open WebUI 来调用 Azure OpenAI 上的模型。
  • 做法:在 Open WebUI 的设置中,直接选择 Azure OpenAI 作为模型提供商,然后填入您的 Azure OpenAI Endpoint, API Key, 和 Deployment Name。
  • 架构图
    • User ---> Open WebUI ---> Azure OpenAI
  • 优点
    • 简单直接:这是最简单的配置,少一个中间环节,维护起来更方便。
    • 官方支持:这是 Open WebUI 内置的功能,稳定可靠。
  • 结论:如果你的需求仅仅是连接 Azure OpenAI,那么完全不需要 LiteLLM,直接连接是最佳选择。
具体配置

前提条件

从 Azure 门户获取以下三项关键信息:
  1. Azure OpenAI Endpoint (终结点): https://<your-resource-name>.openai.azure.com/
  1. Azure OpenAI API Key (API 密钥)
  1. Model Deployment Name (模型部署名称): 在 Azure OpenAI Studio 中为特定模型(如 gpt-4o)创建的部署实例的名称,例如 my-gpt4o-deployment

方式一:通过 Open WebUI 界面进行配置 (最直观)

管理员账户登录openwebui——admin panel——Connections—— "Connect to an external LLM provider"—— "Azure OpenAI"——填入对应endpoint和key
notion image
notion image
notion image
notion image
notion image

方式二:通过 Docker 环境变量配置 (推荐用于新部署)

如果使用 Docker 或 Docker Compose 部署 Open WebUI,通过环境变量来配置会更加高效和自动化。只需在 docker run 命令或 docker-compose.yml 文件中添加相应的环境变量即可。
使用 docker run 命令:
docker run -d -p 3000:8080 -e "AZURE_OPENAI_ENDPOINT=https://xy-aisecurity.openai.azure.com/" -e "AZURE_OPENAI_API_KEY=<your-azure-api-key>" -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
  • <your-resource-name><your-azure-api-key> 替换为真实信息
使用 docker-compose.yml 文件:
services: open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open_webui ports: - "3000:8080" environment: # 在这里填入你的 Azure OpenAI 凭据 - 'AZURE_OPENAI_ENDPOINT=https://xy-aisecurity.openai.azure.com/' - 'AZURE_OPENAI_API_KEY=<your-azure-api-key>' volumes: - open-webui-data:/app/backend/data restart: unless-stopped volumes: open-webui-data:
  • 同样,替换占位符后,使用 docker-compose up -d 启动服务。
notion image
但确实跑脚本一直无法在UI显示,遂通过LiteLLM做连接
总结: 无论哪种方式,核心都是让 Open WebUI 知道 EndpointAPI Key,然后再告诉它 Deployment Name 是什么。直接连接的配置非常简单,几步就能完成。
 

场景二:通过 LiteLLM 连接 (Advanced/Flexible Architecture)
  • 目标:我希望构建一个灵活的平台【仅针对chat模型】,它不仅能用 Azure OpenAI,还能同时使用 Google Gemini,并且未来可能还想加入更多模型(比如开源的 Llama、Anthropic 的 Claude 等),同时我还想在一个地方统一管理它们。
  • 做法:引入 LiteLLM 作为所有模型的网关。Open WebUI 只需配置连接到 LiteLLM 即可。
一个比喻
  • 直接连接:就像把你的电脑直接插到墙上的插座里。简单有效。
  • 通过 LiteLLM 连接:就像你买了一个高级的智能插排(LiteLLM),先把插排插到墙上,然后再把电脑(Azure)、手机(Gemini)、台灯(其他模型)都插在这个插排上。这个插排不仅提供了更多的插口(灵活性),还能帮你统计电量(成本管理)和提供过载保护(统一控制)。
具体配置

步骤一:创建项目文件结构
进入项目文件夹,并创建新文件:
  1. litellm-config.yaml (用于配置 LiteLLM,告诉它如何连接 Azure)
文件夹看起来是这样的:
webui-litellm-azure/ ├── docker-compose.yml └── litellm-config.yaml

步骤二:配置 LiteLLM (litellm-config.yaml)
这是最关键的一步。在这里告诉 LiteLLM 的 Azure OpenAI 模型在哪里,以及如何访问它。
打开 litellm-config.yaml 文件,将以下内容复制进去。请仔细阅读注释,并替换为你自己的 Azure 信息
# litellm-config.yaml model_list: - model_name: gpt-4.1-xy # 这是给 Open WebUI 看的别名 litellm_params: model: azure/gpt-4.1 # 对应 Azure 上的 Deployment Name - model_name: gpt-5-xy # 这是第二个模型的别名 litellm_params: model: azure/gpt-5 # 对应 Azure 上的 Deployment Name
 
重要提示:
  • model_name 是你希望在 Open WebUI 下拉菜单中看到的模型名字,可以起得有辨识度一些。
  • litellm_params 下的 model 字段格式非常严格,必须是 azure/ 加上你在 Azure 平台上的部署名称 (Deployment Name)

步骤三:更新 Docker Compose 文件 (docker-compose.yml)
现在,打开 docker-compose.yml 文件,将下面的内容复制进去。这个文件会定义并连接 litellmopen-webui 两个服务。
# docker-compose.yml (修改版) services: # LiteLLM 服务,作为 Azure 的代理 litellm: image: ghcr.io/berriai/litellm:main-stable container_name: litellm_proxy environment: # --- 在这里统一配置 Azure 连接信息 --- # Azure API Key (已有的) - AZURE_API_KEY=<your-azure-api-key> # 以下是新增的配置 # Azure Endpoint (API Base URL) - AZURE_API_BASE=https://xy-aisecurity.openai.azure.com/ # Azure API Version - AZURE_API_VERSION=2024-12-01-preview volumes: # 将 LiteLLM 的配置文件挂载进去 - ./litellm-config.yaml:/app/config.yaml command: ["--config", "/app/config.yaml", "--host", "0.0.0.0", "--port", "4000"] restart: unless-stopped # Open WebUI 服务,现在它将连接到 LiteLLM open-webui: image: ghcr.io/open-webui/open-webui:0.1.125 container_name: open-webui ports: - "3000:8080" environment: # 关键:让 Open WebUI 把 LiteLLM 当作 OpenAI 服务器 - 'OPENAI_API_BASE_URL=http://litellm:4000' # API Key 可以是任意字符串,因为 LiteLLM 不需要它 - 'OPENAI_API_KEY=sk-12345' volumes: - open-webui-data:/app/backend/data restart: unless-stopped depends_on: - litellm volumes: open-webui-data:

步骤四:启动服务并验证
docker-compose up -d

notion image
notion image
notion image
Azure中新增一个GPT-5
notion image
notion image
notion image