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 中的
name与provider两个字段即可切换模型; - 配置与环境变量解耦:仓库内真实配置文件普遍采用
${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 | 作用 |
|---|---|
base | DB-GPT 基础运行依赖 |
proxy_openai/proxy_ollama/proxy_tongyi/proxy_zhipuai | 对应 Provider 的客户端 SDK,必须与所用 provider 匹配 |
rag | RAG(知识问答)功能依赖 |
storage_chromadb | ChromaDB 向量存储,支撑知识库向量检索 |
dbgpts | DB-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_base、api_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"这类字符串并不是随意约定。从源码结构看,其解析链路如下:
- 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/将请求路由到代理实现层。 - 统一抽象基类:proxy_model.py 中的
ProxyModel是所有代理模型的公共封装——它持有LLMDeployModelParameters参数对象、内置ProxyTokenizerWrapper用于代理场景下的 token 计数,并委托ProxyLLMClient(定义于dbgpt/model/proxy/base.py)执行实际的 API 调用。 - 参数来源:
provider参数的语义在 model/base.py 中有明确注释:"The provider of the model. eg. hf, vllm, llama.cpp, proxy/openai",即与本地推理(hf、vllm、llama.cpp)平行的第三类模型部署形态。
这条链路解释了文档中"改 TOML 即可换模型"的底气:配置解析器读到proxy/xxx前缀后实例化对应客户端,name、api_key、api_base等字段作为LLMDeployModelParameters透传,全程无需改动代码。
六、实操要点小结
- extra 与 provider 必须匹配:
proxy_ollama装的是ollamaSDK,若配成provider = "proxy/openai"却只装了proxy_ollamaextra,客户端类导入会失败;反之亦然。 - 密钥不要写死在 TOML:优先采用
${env:OPENAI_API_KEY}环境变量语法,参考 dbgpt-proxy-openai.toml 的写法。 - 向量化模型同样必须配置:
[[models.embeddings]]缺失会导致知识库/RAG 功能不可用;Ollama 场景可用bge-m3、nomic-embed-text等本地向量模型,OpenAI 场景可用text-embedding-3-small系列。 - 推理模型注意输出格式:DeepSeek 等带思考模式的模型建议显式设置
thinking_enabled = false,保证智能体(ReAct)流程中响应可解析。 - 国内网络:
uv sync末尾追加清华镜像源参数加速下载。 - 扩展阅读:
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),仅供参考