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.gitcd 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}"# 直接配置keyapi_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.1host = "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=1000chunk_overlap=0similarity_top_k=5similarity_score_threshold=0.0max_chunks_once_load=10max_threads=1rerank_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=7687username="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
