DB-GPT Proxy LLM 部署实战:uv 依赖管理、TOML 模型配置与 Web 服务启动全解析
2026/9/14 7:07:59 网站建设 项目流程

DB-GPT Proxy LLM 部署实战:uv 依赖管理、TOML 模型配置与 Web 服务启动全解析

【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI + Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT

本文以 DB-GPT 官方安装文档中的“Proxy LLMs”章节为核心,系统讲解如何在低硬件要求的服务器上,通过代理云端大模型(OpenAI、Azure、DeepSeek、Ollama、通义千问、ChatGLM、文心一言)部署 DB-GPT 完整 Web 应用。读完后,你将掌握基于uv的依赖安装方法、TOML 配置文件中各模型参数的含义、各 Provider 的配置差异,并能从源码层面理解proxy/*这一 provider 标识是如何被路由到具体客户端实现的。

一、为什么使用 Proxy LLM

DB-GPT 可以通过 Proxy LLM(代理大模型)部署在硬件要求更低的服务器上:DB-GPT 本身不加载任何本地推理引擎,而是将推理请求转发给外部 API 服务。官方文档明确列出支持的代理模型包括 OpenAI、Azure、DeepSeek、Ollama 等,并且从源码结构看,实际的 Provider 覆盖面远超文档列表——packages/dbgpt-core/src/dbgpt/model/proxy/llms/目录下实现了 openai(chatgpt.py)、deepseek、ollama、tongyi、zhipu、wenxin、claude、gemini、litellm、siliconflow 等二十余种代理客户端,每种实现对应一个固定的provider字符串标识。

这种架构带来的直接好处:

  • 服务器无 GPU 要求:推理算力全部由云端 API 或 Ollama 等外部推理服务承担;
  • 模型可热替换:只需修改 TOML 中的nameprovider两个字段即可切换模型;
  • 配置与环境变量解耦:仓库内真实配置文件普遍采用${env:...}语法注入密钥,避免把 API Key 硬编码进配置文件。

二、基于 uv 的安装与依赖管理

官方要求使用uv包管理器安装依赖,以获得更快、更稳定的依赖管理体验。不同 Provider 对应不同的可选依赖组(extra),其定义位于 dbgpt-core 的 pyproject.toml 中,例如:

proxy_openai = [ "openai>=1.59.6", "tiktoken>=0.8.0", "httpx[socks]", ] proxy_ollama = ["ollama"] proxy_zhipuai = ["openai>=1.59.6"] proxy_tongyi = [ "openai", # tongyi supported by openai package "dashscope", # For tongyi proxy embedding model ]

可以看到各 Provider 的依赖策略:OpenAI 代理依赖openaiSDK 与tiktoken(用于分词计数);通义千问(Tongyi)复用openai包并额外引入dashscope以支持其向量化模型;智谱(Zhipu)走 OpenAI 兼容接口,因此同样依赖openaiSDK。

各 Provider 对应的安装命令如下(以 OpenAI 为例,其余 Provider 仅--extra名称不同):

# Use uv to install dependencies needed for OpenAI proxy uv sync --all-packages \ --extra "base" \ --extra "proxy_openai" \ --extra "rag" \ --extra "storage_chromadb" \ --extra "dbgpts"

其中各 extra 的作用:

extra作用
baseDB-GPT 基础运行依赖
proxy_openai/proxy_ollama/proxy_tongyi/proxy_zhipuai对应 Provider 的客户端 SDK,必须与所用 provider 匹配
ragRAG(知识问答)功能依赖
storage_chromadbChromaDB 向量存储,支撑知识库向量检索
dbgptsDB-GPTs 技能框架

各 Provider 安装命令中唯一需要改动的位置如下:

# OpenAI / Azure / DeepSeek / 文心(WenXin)共用 openai 兼容依赖 --extra "proxy_openai" # Ollama 使用专用 SDK --extra "proxy_ollama" # 通义千问(阿里云 Tongyi) --extra "proxy_tongyi" # 智谱 ChatGLM --extra "proxy_zhipuai"

官方文档同时提示:如果位于中国大陆区域,可在uv sync命令末尾追加--index-url=https://pypi.tuna.tsinghua.edu.cn/simple以加速包下载。

三、配置文件结构与 Provider 配置详解

仓库configs/目录下提供了各 Provider 的示例配置文件,例如 dbgpt-proxy-openai.toml、dbgpt-proxy-ollama.toml、dbgpt-proxy-deepseek.toml。无论哪个 Provider,完整配置都遵循相同骨架:[system]系统段、[service.web]服务段、[service.web.database]元数据库段、[rag.storage]向量存储段,以及最关键的[models]模型段。

以下按官方文档逐一展开各 Provider 的模型段配置。

3.1 OpenAI

# Model Configurations [models] [[models.llms]] name = "gpt-3.5-turbo" provider = "proxy/openai" api_key = "your-openai-api-key" # Optional: To use GPT-4, change the name to "gpt-4" or "gpt-4-turbo" [[models.embeddings]] name = "text-embedding-ada-002" provider = "proxy/openai" api_key = "your-openai-api-key"

仓库中的实际示例文件 dbgpt-proxy-openai.toml 展示了更工程化的写法——通过环境变量注入敏感信息,并为未设置环境变量提供默认值:

[[models.llms]] name = "${env:LLM_MODEL_NAME:-gpt-4o}" provider = "${env:LLM_MODEL_PROVIDER:-proxy/openai}" api_base = "${env:OPENAI_API_BASE:-https://api.openai.com/v1}" api_key = "${env:OPENAI_API_KEY}" [[models.embeddings]] name = "${env:EMBEDDING_MODEL_NAME:-text-embedding-3-small}" provider = "${env:EMBEDDING_MODEL_PROVIDER:-proxy/openai}" api_url = "${env:EMBEDDING_MODEL_API_URL:-https://api.openai.com/v1/embeddings}" api_key = "${env:OPENAI_API_KEY}"

${env:VAR:-default}表示读取环境变量VAR,未设置时回落到:-后的默认值。这一模式适用于所有 Provider 配置,是生产部署中避免密钥泄露进代码仓库的标准做法。

3.2 Azure OpenAI

Azure OpenAI 复用 OpenAI 的 provider 标识,通过api_type = "azure"api_baseapi_version三个参数区分部署形态:

[models] [[models.llms]] name = "gpt-35-turbo" # or your deployment model name provider = "proxy/openai" api_base = "https://your-resource-name.openai.azure.com/" api_key = "your-azure-openai-api-key" api_version = "2023-05-15" # or your specific API version api_type = "azure"

注意此处name填写的是 Azure 上的**部署名称(deployment name)**而非通用模型名,api_version需与你 Azure 资源开通的 API 版本一致。

3.3 DeepSeek

[models] [[models.llms]] # name = "deepseek-chat" name = "deepseek-reasoner" provider = "proxy/deepseek" api_key = "your-deepseek-api-key"

DeepSeek 使用独立的proxy/deepseekprovider(对应实现见 deepseek.py),而非 openai 兼容通道。仓库示例 dbgpt-proxy-deepseek.toml 中还可看到针对思考型模型的精细控制参数:

[[models.llms]] name = "deepseek-v4-pro" provider = "proxy/deepseek" # Disable V4-Pro thinking mode so ReAct responses stay parseable. thinking_enabled = false api_key = "your_deepseek_api_key"

thinking_enabled = false用于关闭思考模式的输出,保证 ReAct 智能体能够正确解析模型响应——这是一个文档未提及、但实际部署推理模型时非常关键的细节。

3.4 Ollama(本地模型代理)

Ollama 允许把本地部署的模型作为 Proxy LLM 接入,同样不需要 DB-GPT 服务器有 GPU:

[models] [[models.llms]] name = "llama3" # or any other model available in your Ollama instance provider = "proxy/ollama" api_base = "http://localhost:11434" # your-ollama-api-base [[models.embeddings]] name = "nomic-embed-text" # or any other embedding model in Ollama provider = "proxy/ollama" api_base = "http://localhost:11434"

仓库示例 dbgpt-proxy-ollama.toml 中则展示了小参数量模型搭配中文向量化模型的组合:

[[models.llms]] name = "deepseek-r1:1.5b" provider = "proxy/ollama" api_base = "http://localhost:11434" [[models.embeddings]] name = "bge-m3:latest" provider = "proxy/ollama" api_url = "http://localhost:11434"

3.5 通义千问(阿里云 Qwen / Tongyi)

[models] [[models.llms]] name = "qwen-turbo" # or qwen-max, qwen-plus provider = "proxy/tongyi" api_key = "your-tongyi-api-key"

仓库内已提供可直接参考的示例文件 dbgpt-proxy-tongyi.toml。

3.6 智谱 ChatGLM

[models] [[models.llms]] name = "glm-4" # or other available model versions provider = "proxy/zhipu" api_key = "your-zhipu-api-key"

对应实现位于 zhipu.py,其 provider 标识为proxy/zhipu(该标识同样被 CLI profile 机制复用,见 cli/_profiles.py 中llm_provider="proxy/zhipu"的定义)。

3.7 文心一言(百度 WenXin / Ernie)

[models] [[models.llms]] name = "ERNIE-Bot-4.0" # or ernie-bot, ernie-bot-turbo provider = "proxy/wenxin" api_key = "your-wenxin-api-key" api_secret = "your-wenxin-api-secret"

文心是唯一需要api_key+api_secret双凭证的 Provider,对应实现见 wenxin.py。其依赖仍走proxy_openaiextra 安装(文档中明确 WenXin 与 OpenAI 共用该依赖组)。

四、启动 Web 服务与访问验证

完成配置后,统一通过dbgptCLI 启动 Web 服务,--config指向对应 Provider 的 TOML 文件:

# OpenAI uv run dbgpt start webserver --config configs/dbgpt-proxy-openai.toml # Azure uv run dbgpt start webserver --config configs/dbgpt-proxy-azure.toml # DeepSeek uv run dbgpt start webserver --config configs/dbgpt-proxy-deepseek.toml # Ollama uv run dbgpt start webserver --config configs/dbgpt-proxy-ollama.toml # 通义千问 / 智谱 / 文心 uv run dbgpt start webserver --config configs/dbgpt-proxy-tongyi.toml uv run dbgpt start webserver --config configs/dbgpt-proxy-zhipu.toml uv run dbgpt start webserver --config configs/dbgpt-proxy-wenxin.toml

服务启动后,打开浏览器访问http://localhost:5670即可进入 DB-GPT 控制台。端口 5670 来自配置文件中的[service.web]段(port = 5670),所有 Provider 示例配置均一致;监听地址默认为0.0.0.0,如需跨机器访问无需修改,但建议同时收紧cors_allowed_origins(在 dbgpt-proxy-openai.toml 中默认取环境值,回退为*)。

五、源码纵深:proxy/*provider 是如何被解析的

配置文件中provider = "proxy/openai"这类字符串并不是随意约定。从源码结构看,其解析链路如下:

  1. Provider 标识注册:每个代理客户端在自己的模型参数类中声明固定的provider字段,例如 chatgpt.py 中provider: str = "proxy/openai"、deepseek.py 中provider: str = "proxy/deepseek"packages/dbgpt-core/src/dbgpt/model/proxy/llms/目录共包含 20 余个此类实现(openai、azure 形态的 openai 兼容、deepseek、ollama、tongyi、zhipu、wenxin、claude、gemini、litellm 等),模型注册机制按前缀proxy/将请求路由到代理实现层。
  2. 统一抽象基类:proxy_model.py 中的ProxyModel是所有代理模型的公共封装——它持有LLMDeployModelParameters参数对象、内置ProxyTokenizerWrapper用于代理场景下的 token 计数,并委托ProxyLLMClient(定义于dbgpt/model/proxy/base.py)执行实际的 API 调用。
  3. 参数来源provider参数的语义在 model/base.py 中有明确注释:"The provider of the model. eg. hf, vllm, llama.cpp, proxy/openai",即与本地推理(hf、vllm、llama.cpp)平行的第三类模型部署形态。

这条链路解释了文档中"改 TOML 即可换模型"的底气:配置解析器读到proxy/xxx前缀后实例化对应客户端,nameapi_keyapi_base等字段作为LLMDeployModelParameters透传,全程无需改动代码。

六、实操要点小结

  1. extra 与 provider 必须匹配proxy_ollama装的是ollamaSDK,若配成provider = "proxy/openai"却只装了proxy_ollamaextra,客户端类导入会失败;反之亦然。
  2. 密钥不要写死在 TOML:优先采用${env:OPENAI_API_KEY}环境变量语法,参考 dbgpt-proxy-openai.toml 的写法。
  3. 向量化模型同样必须配置[[models.embeddings]]缺失会导致知识库/RAG 功能不可用;Ollama 场景可用bge-m3nomic-embed-text等本地向量模型,OpenAI 场景可用text-embedding-3-small系列。
  4. 推理模型注意输出格式:DeepSeek 等带思考模式的模型建议显式设置thinking_enabled = false,保证智能体(ReAct)流程中响应可解析。
  5. 国内网络uv sync末尾追加清华镜像源参数加速下载。
  6. 扩展阅读configs/目录还提供了 litellm、siliconflow、aimlapi、burncloud 等更多代理通道配置(如 dbgpt-proxy-litellm.toml),以及 CLI profile 机制 支持以预设 profile 快速生成 proxy 配置,适合在本文手工配置之外进一步简化部署。

【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI + Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询