如下一些资源是在外网,如果在下载git下载期间慢或者报网络错误,翻墙后再试(PAC模式不行就用全局模式)。
1 下载项目源码
若未安装git工具,则需要先使用如下命令安装git:
brew install git
下载DB-GPT项目:
(base) simonchiang@scmbp14 dbgpt % git clone https://github.com/eosphoros-ai/DB-GPT.git
Cloning into 'DB-GPT'...
remote: Enumerating objects: 30815, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 30815 (delta 4), reused 25 (delta 2), pack-reused 30783
Receiving objects: 100% (30815/30815), 266.73 MiB | 9.90 MiB/s, done.
Resolving deltas: 100% (19141/19141), done.
Updating files: 100% (1630/1630), done.
(base) simonchiang@scmbp14 dbgpt %
下载完成后即可在当前项目文件夹内看到DB-GPT项目文件:
通过观察项目文件发现,源码部署的DB-GPT项目和镜像部署的项目有较大区别,最明显的就是源码部署的DB-GPT并没有默认模型文件,同时也没有生效的配置文件(.env文件),这些都需要我们后续手动来操作。
2 创建虚拟环境
为了确保某个项目的稳定运行,一般来说都会优先考虑为该项目单独创建一个虚拟环境,以隔 离项目所需依赖,以免和别的项目冲突。我们可以按照如下方式创建一个名为 dbgpt_env 的虚拟环 境,用于安装DB-GPT相关依赖,以及运行该项目:
(base) simonchiang@scmbp14 dbgpt % conda create -n dbgpt_env python=3.10
Channels:
- defaults
Platform: osx-arm64
Collecting package metadata (repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /Users/simonchiang/anaconda3/envs/dbgpt_env
added / updated specs:
- python=3.10
The following NEW packages will be INSTALLED:
bzip2 pkgs/main/osx-arm64::bzip2-1.0.8-h80987f9_6
ca-certificates pkgs/main/osx-arm64::ca-certificates-2024.3.11-hca03da5_0
libffi pkgs/main/osx-arm64::libffi-3.4.4-hca03da5_1
ncurses pkgs/main/osx-arm64::ncurses-6.4-h313beb8_0
openssl pkgs/main/osx-arm64::openssl-3.0.13-h1a28f6b_1
pip pkgs/main/osx-arm64::pip-24.0-py310hca03da5_0
python pkgs/main/osx-arm64::python-3.10.14-hb885b13_1
readline pkgs/main/osx-arm64::readline-8.2-h1a28f6b_0
setuptools pkgs/main/osx-arm64::setuptools-69.5.1-py310hca03da5_0
sqlite pkgs/main/osx-arm64::sqlite-3.45.3-h80987f9_0
tk pkgs/main/osx-arm64::tk-8.6.14-h6ba3021_0
tzdata pkgs/main/noarch::tzdata-2024a-h04d1e81_0
wheel pkgs/main/osx-arm64::wheel-0.43.0-py310hca03da5_0
xz pkgs/main/osx-arm64::xz-5.4.6-h80987f9_1
zlib pkgs/main/osx-arm64::zlib-1.2.13-h18a0788_1
Proceed ([y]/n)? y
Downloading and Extracting Packages:
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate dbgpt_env
#
# To deactivate an active environment, use
#
# $ conda deactivate
(base) simonchiang@scmbp14 dbgpt %
然后即可输入如下命令激活dbgpt_env环境:
(base) simonchiang@scmbp14 dbgpt % conda activate dbgpt_env (dbgpt_env) simonchiang@scmbp14 dbgpt %
3 安装相关依赖
接下来,在dbgpt_env虚拟环境中安装当前项目所需依赖,可以输入如下命令执行:
(dbgpt_env) simonchiang@scmbp14 DB-GPT % pip install -e ".[default]"
Obtaining file:///Volumes/DATA/dbgpt/DB-GPT
Preparing metadata (setup.py) ... done
Collecting aiohttp==3.8.4 (from dbgpt==0.5.6)
Using cached aiohttp-3.8.4-cp310-cp310-macosx_11_0_arm64.whl.metadata (7.4 kB)
Collecting chardet==5.1.0 (from dbgpt==0.5.6)
Using cached chardet-5.1.0-py3-none-any.whl.metadata (3.4 kB)
Collecting importlib-resources==5.12.0 (from dbgpt==0.5.6)
Using cached importlib_resources-5.12.0-py3-none-any.whl.metadata (4.1 kB)
...
Running setup.py develop for dbgpt
Successfully installed GitPython-3.1.43 Mako-1.3.4 MarkupSafe-2.1.5 SQLAlchemy-2.0.28 XlsxWriter-3.2.0 abstract-singleton-1.0.1 accelerate-0.30.1 aiofiles-23.2.1 aiohttp-3.8.4 aiosignal-1.3.1 alembic-1.12.0 annotated-types-0.6.0 anyio-4.3.0 asgiref-3.8.1 async-timeout-4.0.3 attrs-23.2.0 auto-gpt-plugin-template-0.0.3 backoff-2.2.1 bcrypt-4.1.3 beautifulsoup4-4.12.3 bitsandbytes-0.42.0 blis-0.7.11 bs4-0.0.2 build-1.2.1 cachetools-5.3.3 catalogue-2.0.10 certifi-2024.2.2 chardet-5.1.0 charset-normalizer-3.3.2 chroma-hnswlib-0.7.3 chromadb-0.5.0 click-8.1.7 cloudpathlib-0.16.0 colorama-0.4.6 coloredlogs-15.0.1 confection-0.1.4 contourpy-1.2.1 cpm_kernels-1.0.11 cycler-0.12.1 cymem-2.0.8 dashscope-1.19.0 dbgpt-0.5.6 deprecated-1.2.14 duckdb-0.10.2 duckdb-engine-0.12.0 et-xmlfile-1.1.0 exceptiongroup-1.2.1 fastapi-0.110.3 filelock-3.14.0 flatbuffers-24.3.25 fonttools-4.51.0 frozenlist-1.4.1 fschat-0.2.36 fsspec-2024.3.1 gTTS-2.3.1 gitdb-4.0.11 google-auth-2.29.0 googleapis-common-protos-1.63.0 graphviz-0.20.3 grpcio-1.63.0 h11-0.14.0 httpcore-1.0.5 httptools-0.6.1 httpx-0.27.0 huggingface-hub-0.23.0 humanfriendly-10.0 idna-3.7 importlib-metadata-7.0.0 importlib-resources-5.12.0 jinja2-3.1.4 joblib-1.4.2 jsonschema-4.22.0 jsonschema-specifications-2023.12.1 kiwisolver-1.4.5 kubernetes-29.0.0 langcodes-3.4.0 language-data-1.2.0 lxml-5.2.2 marisa-trie-1.1.1 markdown-3.6 markdown-it-py-3.0.0 markdown2-2.4.13 matplotlib-3.8.4 mdurl-0.1.2 mmh3-4.1.0 monotonic-1.6 mpmath-1.3.0 msgpack-1.0.8 multidict-6.0.5 murmurhash-1.0.10 mypy-extensions-1.0.0 networkx-3.3 nh3-0.2.17 numpy-1.26.4 oauthlib-3.2.2 ollama-0.2.0 onnxruntime-1.17.3 openpyxl-3.1.2 opentelemetry-api-1.24.0 opentelemetry-exporter-otlp-proto-common-1.24.0 opentelemetry-exporter-otlp-proto-grpc-1.24.0 opentelemetry-instrumentation-0.45b0 opentelemetry-instrumentation-asgi-0.45b0 opentelemetry-instrumentation-fastapi-0.45b0 opentelemetry-proto-1.24.0 opentelemetry-sdk-1.24.0 opentelemetry-semantic-conventions-0.45b0 opentelemetry-util-http-0.45b0 orjson-3.10.3 overrides-7.7.0 packaging-24.0 pandas-2.0.3 pillow-10.3.0 posthog-3.5.0 preshed-3.0.9 prettytable-3.10.0 prompt-toolkit-3.0.43 protobuf-4.25.3 psutil-5.9.4 pyasn1-0.6.0 pyasn1-modules-0.4.0 pydantic-2.7.1 pydantic-core-2.18.2 pygments-2.18.0 pyjwt-2.8.0 pympler-1.0.1 pymysql-1.1.0 pyparsing-3.1.2 pypdf-4.2.0 pypika-0.48.9 pyproject_hooks-1.1.0 python-dateutil-2.9.0.post0 python-docx-1.1.2 python-dotenv-1.0.0 python-multipart-0.0.9 python-pptx-0.6.23 pytz-2024.1 pyyaml-6.0.1 referencing-0.35.1 regex-2024.5.10 requests-2.31.0 requests-oauthlib-2.0.0 rich-13.7.1 rocksdict-0.3.23 rpds-py-0.18.1 rsa-4.9 safetensors-0.4.3 schedule-1.2.1 scikit-learn-1.4.2 scipy-1.13.0 seaborn-0.13.2 sentence-transformers-2.7.0 sentencepiece-0.2.0 shortuuid-1.0.13 six-1.16.0 smart-open-6.4.0 smmap-5.0.1 sniffio-1.3.1 snowflake-id-1.0.2 soupsieve-2.5 spacy-3.7.4 spacy-legacy-3.0.12 spacy-loggers-1.0.5 sqlparse-0.4.4 srsly-2.4.8 starlette-0.37.2 svgwrite-1.4.3 sympy-1.12 tenacity-8.3.0 termcolor-2.4.0 thinc-8.2.3 threadpoolctl-3.5.0 tiktoken-0.7.0 tokenizers-0.19.1 tomli-2.0.1 tomlkit-0.12.5 torch-2.2.1 torchaudio-2.2.1 torchvision-0.17.1 tqdm-4.66.4 transformers-4.40.2 typeguard-4.2.1 typer-0.9.4 typing-extensions-4.11.0 typing_inspect-0.9.0 tzdata-2024.1 urllib3-2.2.1 uvicorn-0.29.0 uvloop-0.19.0 wasabi-1.1.2 watchfiles-0.21.0 wavedrom-2.0.3.post3 wcwidth-0.2.13 weasel-0.3.4 websocket-client-1.8.0 websockets-12.0 wrapt-1.16.0 xlrd-2.0.1 yarl-1.9.4 zhipuai-2.0.1.20240429 zipp-3.18.1
(dbgpt_env) simonchiang@scmbp14 DB-GPT %
需要注意的是,该命令表示安装当前命令所在项目的全部依赖( . 代表当前路径, [default] 代表 项目所需全部依赖),因此在执行该命令前,需要确保处于DB-GPT的项目的主目录下。
4 安装Git LFS
Git LFS全称 Git Large File Storage,是专门用于存储和下载大型文件的工具,接下来我们在下载模型时需要用到,因此需要提前下载和安装Git LFS。我们可以使用如下命令进行安装:
brew install git-lfs
然后完成初始化Git LFS配置:
git lfs install
执行完该命令之后即可使用git lfs进行模型文件下载了。
5 下载Embedding模型
DB-GPT的各项功能需要用到Embedding 模型和语言模型两种,这里我们先下载Embedding模型,然后再下载语言模型。
需要注意的是,这里也可以不下载任何开源模型,而就使用代理模型执行各项任务,例如 OpenAI、智谱AI等,均提供了在线Embedding模型和语言模型。
下载模型之前,首先需要在DB-GPT项目主目录下创建models文件夹:
cd ~/autodl-tmp/DB-GPT
mkdir models
然后进入到该文件夹中:
cd ./models
根据官方推荐,这里考虑下载 text2vec-large-chinese 模型作为基础Embedding模型。
设置代理,这里是从huggingface上进行模型下载,huggingface有网络限制,国内网络需要使用代 理环境才能顺利完成下载:
(base) simonchiang@scmbp14 models % git config --global -e [http] proxy = http://127.0.0.1:58591 [https] proxy = http://127.0.0.1:58591
使用如下命令进行安装:
(dbgpt_env) simonchiang@scmbp14 models % git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese
Cloning into 'text2vec-large-chinese'...
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 27 (delta 6), reused 0 (delta 0), pack-reused 15 (from 1)
Unpacking objects: 100% (27/27), 161.06 KiB | 366.00 KiB/s, done.
Filtering content: 100% (2/2), 2.42 GiB | 4.34 MiB/s, done.
(dbgpt_env) simonchiang@scmbp14 models %
6 下载大模型
接下来继续下载大模型,类似的,还是在models文件夹路径内,使用如下命令下载Qwen1.5-7B模型:
git clone https://www.modelscope.cn/qwen/Qwen1.5-7B.git
本地没有显卡,用网上的大模型吧。
7 配置使用在线大模型
在初始状态下,只有 .env.template 文件,而没有 .env 配置文件,我们需要通过复 制 .env.template 文件的方法创建一个 .env 配置文件:
cd ~/autodl-tmp/DB-GPT
cp .env.template .env
7.1 获取在线大模型的API-KEY
使用智谱AI:https://open.bigmodel.cn/login
7.2 修改.env配置文件,添加GLM4模型
在获取了API-KEY之后,接下来我们就需要通过修改配置文件来让DB-GPT调用GLM4模型服务。
首先打开 /root/DB-GPT/.env 文件,并翻到173行及以下PROXY_SERVER部分,查看代理模型相关设置。
将别的代理相关设置注释掉(在每一行前面加上 # (#+空格)),在197行zhupu部分添加如下内容:
LLM_MODEL=zhipu_proxyllm PROXY_SERVER_URL=https://open.bigmodel.cn/api/paas/v4/chat/completions ZHIPU_MODEL_VERSION=glm-4 ZHIPU_PROXY_API_KEY=YOUR_API_KEY
YOUR_API_KEY部分需要替换为你的API-KEY字符串。
其中各参数代表含义为:
- LLM_MODEL=zhipu_proxyllm :代理模型名称为zhipu_proxyllm。
- PROXY_SERVER_URL=https://open.bigmodel.cn/api/paas/v4/chat/completions :模型调用过程请求地址。
- ZHIPU_MODEL_VERSION=glm-4:模型版本
- ZHIPU_PROXY_API_KEY=YOUR_API_KEY :用于身份验证的API-KEY
7.3 安装ZhipuAI库
为了保险起见,建议运行DB-GPT之前安装zhipuai库:
(dbgpt_env) simonchiang@scmbp14 DB-GPT % pip install zhipuai
Requirement already satisfied: zhipuai in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (2.0.1.20240429)
Requirement already satisfied: cachetools>=4.2.2 in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from zhipuai) (5.3.3)
Requirement already satisfied: httpx>=0.23.0 in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from zhipuai) (0.27.0)
Requirement already satisfied: pydantic<3.0,>=1.9.0 in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from zhipuai) (2.7.1)
Requirement already satisfied: pyjwt<2.9.0,>=2.8.0 in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from zhipuai) (2.8.0)
Requirement already satisfied: anyio in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from httpx>=0.23.0->zhipuai) (4.3.0)
Requirement already satisfied: certifi in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from httpx>=0.23.0->zhipuai) (2024.2.2)
Requirement already satisfied: httpcore==1.* in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from httpx>=0.23.0->zhipuai) (1.0.5)
Requirement already satisfied: idna in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from httpx>=0.23.0->zhipuai) (3.7)
Requirement already satisfied: sniffio in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from httpx>=0.23.0->zhipuai) (1.3.1)
Requirement already satisfied: h11<0.15,>=0.13 in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from httpcore==1.*->httpx>=0.23.0->zhipuai) (0.14.0)
Requirement already satisfied: annotated-types>=0.4.0 in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from pydantic<3.0,>=1.9.0->zhipuai) (0.6.0)
Requirement already satisfied: pydantic-core==2.18.2 in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from pydantic<3.0,>=1.9.0->zhipuai) (2.18.2)
Requirement already satisfied: typing-extensions>=4.6.1 in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from pydantic<3.0,>=1.9.0->zhipuai) (4.11.0)
Requirement already satisfied: exceptiongroup>=1.0.2 in /Users/simonchiang/anaconda3/envs/dbgpt_env/lib/python3.10/site-packages (from anyio->httpx>=0.23.0->zhipuai) (1.2.1)
(dbgpt_env) simonchiang@scmbp14 DB-GPT %
如果使用别的大模型,请安装对应的库,详见对应大模型的文档描述。
8 启动DB-GPT测试模型
最后启动DB-GPT,测试7b模型问答效果:
(dbgpt_env) simonchiang@scmbp14 DB-GPT % dbgpt start webserver --port 6006
=========================== WebServerParameters ===========================
host: 0.0.0.0
port: 6006
daemon: False
controller_addr: None
model_name: zhipu_proxyllm
share: False
remote_embedding: False
log_level: INFO
light: False
log_file: dbgpt_webserver.log
tracer_file: dbgpt_webserver_tracer.jsonl
tracer_storage_cls: None
disable_alembic_upgrade: False
awel_dirs: None
default_thread_pool_size: None
======================================================================
2024-05-14 11:13:40 scmbp14.local dbgpt.component[24743] INFO Register component with name dbgpt_unified_metadata_db_manager_factory and instance: <dbgpt.storage.metadata.db_factory.UnifiedDBManagerFactory object at 0x132040820>
...
INFO: Uvicorn running on http://0.0.0.0:6006 (Press CTRL+C to quit)
2024-05-14 11:13:44 scmbp14.local dbgpt.model.adapter.proxy_adapter[24743] INFO Load model from params:
=========================== ProxyModelParameters ===========================
model_name: zhipu_proxyllm
model_path: zhipu_proxyllm
proxy_server_url: https://open.bigmodel.cn/api/paas/v4/chat/completions
proxy_api_key: b******Q
proxy_api_base: None
proxy_api_app_id: None
proxy_api_secret: None
proxy_api_type: None
proxy_api_version: None
http_proxy: None
proxyllm_backend: glm-4
model_type: proxy
device: mps
prompt_template: None
max_context_size: 4096
llm_client_class: None
======================================================================
, llm client class: <class 'dbgpt.model.proxy.llms.zhipu.ZhipuLLMClient'>
INFO: 127.0.0.1:57785 - "POST /api/controller/models HTTP/1.1" 200 OK
INFO: 127.0.0.1:57787 - "POST /api/controller/models HTTP/1.1" 200 OK
begin run _add_app_startup_event
执行后会打印出很多日志,最后出现 begin run _add_app_startup_event 后代表启动完成,即可使用浏览器登录 http://0.0.0.0:6006 访问:
呃,访问页面会报如下错误:
model generate_stream params:
{'model': 'zhipu_proxyllm', 'messages': [ModelMessage(role='human', content='f ', round_index=1), ModelMessage(role='human', content='你是一个有用的 AI 助手。\nf', round_index=0)], 'temperature': 0.6, 'max_new_tokens': 1024, 'echo': False, 'span_id': '31fe53dc-1bf6-47c0-a15f-ca0f7ece9e63:e674807e-8d04-4a4d-b1ee-1b97a36cb0a5', 'context': {'stream': True, 'cache_enable': False, 'user_name': None, 'sys_code': None, 'conv_uid': None, 'span_id': '31fe53dc-1bf6-47c0-a15f-ca0f7ece9e63:12dc6733-37eb-462f-a882-e86306bd1424', 'chat_mode': 'chat_normal', 'chat_param': None, 'extra': {}, 'request_id': None}, 'convert_to_compatible_format': False, 'string_prompt': 'human: f \nhuman: 你是一个有用的 AI 助手。\nf'}
Traceback (most recent call last):
File "/Users/simonchiang/Downloads/DB-GPT-0.5.5/dbgpt/app/scene/base_chat.py", line 294, in stream_call
self.current_message.add_ai_message(msg)
UnboundLocalError: local variable 'msg' referenced before assignment
2024-05-14 13:36:48 scmbp14.local dbgpt.app.scene.base_chat[32224] ERROR model response parse failed!local variable 'msg' referenced before assignment
一时没有找到解决方法,各位一起看看?
我的电脑是arm的,不知道是不是这个原因,同样的资源、操作在x86的环境上就没问题。。。





