1. 前置环境
因为 DB-GPT 越来越强大了,只用pip
来管理依赖包的话不太优雅,因此使用 uv 来管理。我最近写的项目也再慢慢转 uv** 了,也推荐大家慢慢转过来。本教程讲解以 代理模型
为例, 也就是 openai-proxy
1.1 uv 安装
macOS and Linux
:
curl -LsSf https://astral.sh/uv/install.sh | sh
windows
(请在powershell
执行):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
验证是否成功安装uv
:
后续如果
uv -V
<font style="color:rgb(31, 35, 40);">uv</font>
升级可以执行以下命令升级:
uv self update
1.2 环境安装
1.2.1 项目拉取
首先先拉取项目,并进入项目目录
git clone https://github.com/eosphoros-ai/DB-GPT.git
cd DB-GPT
1.2.2 依赖安装
请根据你的使用情景从以下- OpenAI Proxy(只用到代理模型,没有涉及到本地模型):
<font style="color:rgb(31, 35, 40);">macOS and Linux</font>
:
uv sync --all-packages --frozen \
--extra "base" \
--extra "proxy_openai" \
--extra "rag" \
--extra "storage_chromadb" \
--extra "dbgpts"
<font style="color:rgb(31, 35, 40);">windows</font>
:
uv sync --all-packages --frozen --extra "base" --extra "proxy_openai" --extra "rag" --extra "storage_chromadb" --extra "dbgpts"
- Local(本地模型):
<font style="color:rgb(31, 35, 40);">macOS and Linux</font>
:
uv sync --all-packages --frozen \
--extra "base" \
--extra "hf" \
--extra "rag" \
--extra "storage_chromadb" \
--extra "quant_bnb" \
--extra "dbgpts"
<font style="color:rgb(31, 35, 40);">windows</font>
:
uv sync --all-packages --frozen --extra "base" --extra "hf" --extra "rag" --extra "storage_chromadb" --extra "quant_bnb" --extra "dbgpts"
- LLAMA-CPP
<font style="color:rgb(31, 35, 40);">macOS and Linux</font>
:
uv sync --all-packages --frozen \
--extra "base" \
--extra "llama_cpp" \
--extra "rag" \
--extra "storage_chromadb" \
--extra "quant_bnb" \
--extra "dbgpts"
<font style="color:rgb(31, 35, 40);">windows</font>
:
uv sync --all-packages --frozen --extra "base" --extra "llama_cpp" --extra "rag" --extra "storage_chromadb" --extra "quant_bnb" --extra "dbgpts"
- 全量依赖(比如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>
:
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" \
<font style="color:rgb(31, 35, 40);">windows</font>
:
耐心等待环境安装结束即可。
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>
为例:
# 读环境变量或者默认值:
api_key = "${env:OPENAI_API_KEY:-sk-xxx}"
# 直接配置key
api_key = "sk-xxx"
# 只读取环境变量(如果没有环境变量会报错):
api_key = "${env:OPENAI_API_KEY}"
配置文件在** <font style="color:rgb(31, 35, 40);">configs/</font>
中**
2.2 System
[system]
# 语言 -zh 或者 -en 等切换即可
language = "${env:DBGPT_LANG:-zh}" # 也可以直接写 language = "zh"
# 日志等级,建议默认
log_level = "INFO"
# 使用api请求DB-GPT时附带的api密钥(可以配置多个)
api_keys = []
# 加密数据
encrypt_key = "your_secret_key"
2.3 Server
# host、端口
[service.web]
# 如果要实现局域网内设备都可访问 请使用 0.0.0.0
# 如果仅是本机设备可访问 请使用 127.0.0.1
host = "0.0.0.0"
# 端口请根据实际情况来 默认即可
port = 5670
# DB-GPT METADATA DATABASE设置
[service.web.database]
# SQLite (默认)
type = "sqlite"
path = "pilot/meta_data/dbgpt.db"
# TODO: MYSQL
2.4 RAG
# 向量数据库
[rag]
# 基础配置
chunk_size=1000
chunk_overlap=0
similarity_top_k=5
similarity_score_threshold=0.0
max_chunks_once_load=10
max_threads=1
rerank_top_k=3
[rag.storage]
[rag.storage.vector]
# Chroma (默认)
type = "Chroma"
persist_path = "pilot/data"
# TODO: Milvus 、 Weaviate 、 ElasticSearch
# TuGraph
[rag.storage.graph]
type = "TuGraph"
host="127.0.0.1"
port=7687
username="admin"
password="73@TuGraph"
#enable_summary="True"
#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>
<font style="color:rgb(31, 35, 40);">proxy/openai</font>
的配置:
# Model Configurations
[models]
[[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:-sk-xxx}"
[[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:-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下载对应模型 (这就是为什么建议填写上方形式) 如果填写的话 填入 模型的文件路径即可
<font style="color:rgb(31, 35, 40);">hf</font>
的配置:
# Model Configurations
[models]
[[models.llms]]
name = "THUDM/glm-4-9b-chat-hf"
provider = "hf"
# If not provided, the model will be downloaded from the Hugging Face model hub
# uncomment the following line to specify the model path in the local file system
# path = "the-model-path-in-the-local-file-system"
[[models.embeddings]]
name = "BAAI/bge-large-zh-v1.5"
provider = "hf"
# If not provided, the model will be downloaded from the Hugging Face model hub
# uncomment the following line to specify the model path in the local file system
# 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>
: 模型路径
<font style="color:rgb(31, 35, 40);">hf</font>
的配置:
一份LLMs使用
# Model Configurations
[models]
[[models.llms]]
name = "Qwen2.5-Coder-0.5B-Instruct"
provider = "llama.cpp.server"
path = "/data/models/qwen2.5-coder-0.5b-instruct-q4_k_m.gguf"
<font style="color:rgb(31, 35, 40);">proxy/openai</font>
Embeddings使用<font style="color:rgb(31, 35, 40);">hf</font>
的配置:
如果需要使用其他组合 请自行修改配置文件! 贴一份完整的配置(其他组合请自己拼接 逻辑同上):
# Model Configurations
[models]
[[models.llms]]
name = "gpt-4o"
provider = "proxy/openai"
api_base = "${env:OPENAI_API_BASE:-https://api.openai.com/v1}"
api_key = "${env:OPENAI_API_KEY:-sk-xxx}"
[[models.embeddings]]
name = "BAAI/bge-large-zh-v1.5"
provider = "hf"
path = "the-model-path-in-the-local-file-system"
[system]
# Load language from environment variable(It is set by the hook)
language = "${env:DBGPT_LANG:-zh}"
api_keys = []
encrypt_key = "your_secret_key"
# Server Configurations
[service.web]
host = "0.0.0.0"
port = 5670
[service.web.database]
type = "sqlite"
path = "pilot/meta_data/dbgpt.db"
[rag.storage]
[rag.storage.vector]
type = "Chroma"
persist_path = "pilot/data"
# Model Configurations
[models]
[[models.llms]]
name = "gpt-4o"
provider = "proxy/openai"
api_base = "${env:OPENAI_API_BASE:-https://api.openai.com/v1}"
api_key = "${env:OPENAI_API_KEY:-sk-xxx}"
[[models.embeddings]]
name = "BAAI/bge-large-zh-v1.5"
provider = "hf"
path = "/data/models/bge-large-zh-v1.5"
3. 启动项目
两种方式可以启动- 方式一:
uv run dbgpt start webserver --config configs/dbgpt-proxy-openai.toml
- 方式二:
接下来访问 http://localhost:5670/ 即可。
uv run python packages/dbgpt-app/src/dbgpt_app/dbgpt_server.py --config configs/dbgpt-proxy-openai.toml