1. 前置环境

因为 DB-GPT 越来越强大了,只用pip来管理依赖包的话不太优雅,因此使用 uv 来管理。我最近写的项目也再慢慢转 uv** 了,也推荐大家慢慢转过来。本教程讲解以 代理模型 为例, 也就是 openai-proxy

1.1 uv 安装

  • macOS and Linux:
  1. curl -LsSf https://astral.sh/uv/install.sh | sh
  • windows(请在powershell执行):
  1. powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

验证是否成功安装uv:

  1. uv -V
后续如果<font style="color:rgb(31, 35, 40);">uv</font>升级可以执行以下命令升级:
  1. uv self update

1.2 环境安装

1.2.1 项目拉取

首先先拉取项目,并进入项目目录
  1. git clone https://github.com/eosphoros-ai/DB-GPT.git
  2. cd DB-GPT

1.2.2 依赖安装

请根据你的使用情景从以下
  1. OpenAI Proxy(只用到代理模型,没有涉及到本地模型):
  • <font style="color:rgb(31, 35, 40);">macOS and Linux</font>:
  1. uv sync --all-packages --frozen \
  2. --extra "base" \
  3. --extra "proxy_openai" \
  4. --extra "rag" \
  5. --extra "storage_chromadb" \
  6. --extra "dbgpts"
  • <font style="color:rgb(31, 35, 40);">windows</font>:
  1. uv sync --all-packages --frozen --extra "base" --extra "proxy_openai" --extra "rag" --extra "storage_chromadb" --extra "dbgpts"
  1. Local(本地模型):
  • <font style="color:rgb(31, 35, 40);">macOS and Linux</font>:
  1. uv sync --all-packages --frozen \
  2. --extra "base" \
  3. --extra "hf" \
  4. --extra "rag" \
  5. --extra "storage_chromadb" \
  6. --extra "quant_bnb" \
  7. --extra "dbgpts"
  • <font style="color:rgb(31, 35, 40);">windows</font>:
  1. uv sync --all-packages --frozen --extra "base" --extra "hf" --extra "rag" --extra "storage_chromadb" --extra "quant_bnb" --extra "dbgpts"
  1. LLAMA-CPP
  • <font style="color:rgb(31, 35, 40);">macOS and Linux</font>:
  1. uv sync --all-packages --frozen \
  2. --extra "base" \
  3. --extra "llama_cpp" \
  4. --extra "rag" \
  5. --extra "storage_chromadb" \
  6. --extra "quant_bnb" \
  7. --extra "dbgpts"
  • <font style="color:rgb(31, 35, 40);">windows</font>:
  1. uv sync --all-packages --frozen --extra "base" --extra "llama_cpp" --extra "rag" --extra "storage_chromadb" --extra "quant_bnb" --extra "dbgpts"
  1. 全量依赖(比如LLMs使用的<font style="color:rgb(31, 35, 40);">本地模型</font>,embedding使用的<font style="color:rgb(31, 35, 40);">OpenAI Proxy</font>等)
拼接所有依赖项即可
  • <font style="color:rgb(31, 35, 40);">macOS and Linux</font>:
  1. uv sync --all-packages --frozen \
  2. --extra "base" \
  3. --extra "proxy_openai" \
  4. --extra "hf" \
  5. --extra "llama_cpp" \
  6. --extra "rag" \
  7. --extra "storage_chromadb" \
  8. --extra "dbgpts" \
  9. --extra "quant_bnb" \
  • <font style="color:rgb(31, 35, 40);">windows</font>:
  1. uv sync --all-packages --frozen --extra "base" --extra "proxy_openai" --extra "hf" --extra "llama_cpp" --extra "rag" --extra "storage_chromadb" --extra "dbgpts" --extra "quant_bnb"
耐心等待环境安装结束即可。

2. 配置文件

2.1 语法说明

<font style="color:rgb(31, 35, 40);">api_key</font>为例:
  1. # 读环境变量或者默认值:
  2. api_key = "${env:OPENAI_API_KEY:-sk-xxx}"
  3. # 直接配置key
  4. api_key = "sk-xxx"
  5. # 只读取环境变量(如果没有环境变量会报错):
  6. api_key = "${env:OPENAI_API_KEY}"

配置文件在** <font style="color:rgb(31, 35, 40);">configs/</font>**

2.2 System

  1. [system]
  2. # 语言 -zh 或者 -en 等切换即可
  3. language = "${env:DBGPT_LANG:-zh}" # 也可以直接写 language = "zh"
  4. # 日志等级,建议默认
  5. log_level = "INFO"
  6. # 使用api请求DB-GPT时附带的api密钥(可以配置多个)
  7. api_keys = []
  8. # 加密数据
  9. encrypt_key = "your_secret_key"

2.3 Server

  1. # host、端口
  2. [service.web]
  3. # 如果要实现局域网内设备都可访问 请使用 0.0.0.0
  4. # 如果仅是本机设备可访问 请使用 127.0.0.1
  5. host = "0.0.0.0"
  6. # 端口请根据实际情况来 默认即可
  7. port = 5670
  8. # DB-GPT METADATA DATABASE设置
  9. [service.web.database]
  10. # SQLite (默认)
  11. type = "sqlite"
  12. path = "pilot/meta_data/dbgpt.db"
  13. # TODO: MYSQL

2.4 RAG

  1. # 向量数据库
  2. [rag]
  3. # 基础配置
  4. chunk_size=1000
  5. chunk_overlap=0
  6. similarity_top_k=5
  7. similarity_score_threshold=0.0
  8. max_chunks_once_load=10
  9. max_threads=1
  10. rerank_top_k=3
  11. [rag.storage]
  12. [rag.storage.vector]
  13. # Chroma (默认)
  14. type = "Chroma"
  15. persist_path = "pilot/data"
  16. # TODO: Milvus 、 Weaviate 、 ElasticSearch
  17. # TuGraph
  18. [rag.storage.graph]
  19. type = "TuGraph"
  20. host="127.0.0.1"
  21. port=7687
  22. username="admin"
  23. password="73@TuGraph"
  24. #enable_summary="True"
  25. #enable_similarity_search="True"

2.5 Models

2.5.1 参数解析

<font style="color:rgb(31, 35, 40);">provider</font>划分: 可填写: <font style="color:rgb(31, 35, 40);">proxy/openai(具体是openai还是其他接口的模型请根据实际情况而定,这里以openai为例)</font><font style="color:rgb(31, 35, 40);">hf</font><font style="color:rgb(31, 35, 40);">llama.cpp.server</font><font style="color:rgb(31, 35, 40);">vllm</font> + <font style="color:rgb(31, 35, 40);">proxy/openai</font>

<font style="color:rgb(31, 35, 40);">name</font>: 填入你是用的api的模型名称 如<font style="color:rgb(31, 35, 40);">gpt-4o</font>

<font style="color:rgb(31, 35, 40);">api_base</font>: API地址 如 <font style="color:rgb(31, 35, 40);">https://api.openai.com/v1</font>

<font style="color:rgb(31, 35, 40);">api_key</font>: API-KEY 如<font style="color:rgb(31, 35, 40);">sk-xxx</font>

一份 llms embeddings 都用 <font style="color:rgb(31, 35, 40);">proxy/openai</font>的配置:
  1. # Model Configurations
  2. [models]
  3. [[models.llms]]
  4. name = "${env:LLM_MODEL_NAME:-gpt-4o}"
  5. provider = "${env:LLM_MODEL_PROVIDER:-proxy/openai}"
  6. api_base = "${env:OPENAI_API_BASE:-https://api.openai.com/v1}"
  7. api_key = "${env:OPENAI_API_KEY:-sk-xxx}"
  8. [[models.embeddings]]
  9. name = "${env:EMBEDDING_MODEL_NAME:-text-embedding-3-small}"
  10. provider = "${env:EMBEDDING_MODEL_PROVIDER:-proxy/openai}"
  11. api_url = "${env:EMBEDDING_MODEL_API_URL:-https://api.openai.com/v1/embeddings}"
  12. api_key = "${env:OPENAI_API_KEY:-sk-xxx}"
  • <font style="color:rgb(31, 35, 40);">hf</font>

<font style="color:rgb(31, 35, 40);">name</font>: 模型名称(建议填写如: <font style="color:rgb(31, 35, 40);">name = "THUDM/glm-4-9b-chat-hf"</font>)

<font style="color:rgb(31, 35, 40);">path</font>: 非必填 如果没有填写path 那么会根据 name 到 Hugging Face下载对应模型 (这就是为什么建议填写上方形式) 如果填写的话 填入 模型的文件路径即可

一份 llms embeddings 都用 <font style="color:rgb(31, 35, 40);">hf</font>的配置:
  1. # Model Configurations
  2. [models]
  3. [[models.llms]]
  4. name = "THUDM/glm-4-9b-chat-hf"
  5. provider = "hf"
  6. # If not provided, the model will be downloaded from the Hugging Face model hub
  7. # uncomment the following line to specify the model path in the local file system
  8. # path = "the-model-path-in-the-local-file-system"
  9. [[models.embeddings]]
  10. name = "BAAI/bge-large-zh-v1.5"
  11. provider = "hf"
  12. # If not provided, the model will be downloaded from the Hugging Face model hub
  13. # uncomment the following line to specify the model path in the local file system
  14. # path = "the-model-path-in-the-local-file-system"
  • <font style="color:rgb(31, 35, 40);">llama.cpp.server</font>

<font style="color:rgb(31, 35, 40);">name</font>: 模型名称

<font style="color:rgb(31, 35, 40);">path</font>: 模型路径

一份 llms <font style="color:rgb(31, 35, 40);">hf</font>的配置:
  1. # Model Configurations
  2. [models]
  3. [[models.llms]]
  4. name = "Qwen2.5-Coder-0.5B-Instruct"
  5. provider = "llama.cpp.server"
  6. path = "/data/models/qwen2.5-coder-0.5b-instruct-q4_k_m.gguf"
一份LLMs使用<font style="color:rgb(31, 35, 40);">proxy/openai</font> Embeddings使用<font style="color:rgb(31, 35, 40);">hf</font>的配置:
  1. # Model Configurations
  2. [models]
  3. [[models.llms]]
  4. name = "gpt-4o"
  5. provider = "proxy/openai"
  6. api_base = "${env:OPENAI_API_BASE:-https://api.openai.com/v1}"
  7. api_key = "${env:OPENAI_API_KEY:-sk-xxx}"
  8. [[models.embeddings]]
  9. name = "BAAI/bge-large-zh-v1.5"
  10. provider = "hf"
  11. path = "the-model-path-in-the-local-file-system"
如果需要使用其他组合 请自行修改配置文件! 贴一份完整的配置(其他组合请自己拼接 逻辑同上):
  1. [system]
  2. # Load language from environment variable(It is set by the hook)
  3. language = "${env:DBGPT_LANG:-zh}"
  4. api_keys = []
  5. encrypt_key = "your_secret_key"
  6. # Server Configurations
  7. [service.web]
  8. host = "0.0.0.0"
  9. port = 5670
  10. [service.web.database]
  11. type = "sqlite"
  12. path = "pilot/meta_data/dbgpt.db"
  13. [rag.storage]
  14. [rag.storage.vector]
  15. type = "Chroma"
  16. persist_path = "pilot/data"
  17. # Model Configurations
  18. [models]
  19. [[models.llms]]
  20. name = "gpt-4o"
  21. provider = "proxy/openai"
  22. api_base = "${env:OPENAI_API_BASE:-https://api.openai.com/v1}"
  23. api_key = "${env:OPENAI_API_KEY:-sk-xxx}"
  24. [[models.embeddings]]
  25. name = "BAAI/bge-large-zh-v1.5"
  26. provider = "hf"
  27. path = "/data/models/bge-large-zh-v1.5"

3. 启动项目

两种方式可以启动
  • 方式一:
  1. uv run dbgpt start webserver --config configs/dbgpt-proxy-openai.toml
  • 方式二:
  1. uv run python packages/dbgpt-app/src/dbgpt_app/dbgpt_server.py --config configs/dbgpt-proxy-openai.toml
接下来访问 http://localhost:5670/ 即可。

参考