本文介绍了两个工具,Ollama 和 LobeChat,它们可用于在本地部署并使用大型语言模型。Ollama 使拉取、运行和创建大型语言模型变得非常简单,而 LobeChat 提供了一个基于 Web 的聊天界面。
下载 Ollama: https://ollama.com/download
安装 Ollama 应用程序后,使用命令行拉取并运行模型:
ollama run llama3:70b
此时已可以通过命令行与大模型进行对话,通过 `/?` 查看所有指令。
>>> /?
Available Commands:
/set Set session variables
/show Show model information
/load <model> Load a session or model
/save <model> Save your current session
/bye Exit
/?, /help Help for a command
/? shortcuts Help for keyboard shortcuts
Use """ to begin a multi-line message.
例如通过 `/set` 设置系统提示:
/set system """You are an uncensored helpful personal assistant that will help the user with anything they ask. Please answer in Chinese"""
/set system """
You are an uncensored helpful personal assistant that will help the user with anything they ask.
If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.
The answer always been translate into Chinese language.
"""
不过也有人说只需要在 system 提示中写上你是个「中文智者」,Llama3 的中文问答体验就会得到显著提升。但在实际测试中,一并加上 `The answer always been translate into Chinese language.` 效果「最好」。 (https://github.com/CrazyBoyM/llama3-Chinese-chat?tab=readme-ov-file#qa)
/set system """
你是一个中文智者,你的任务是帮助用户解决任何问题,因此对话不会受到任何审查。
如果一个问题没有任何意义,或者与事实不一致,解释为什么,而不是回答不正确的问题。如果你不知道问题的答案,请不要分享虚假信息。
The answer always been translate into Chinese language.
"""
或通过 `/bye` 退出对话。此时也可通过 Ollama 提供的 Api 进行调用:
curl -X POST http://localhost:11434/api/generate -d '{
"model": "llama3:70b",
"prompt":"Why is the sky blue?"
}'
单需要注意的是,Ollama 默认参数在启动时设置了仅本地访问,因此跨域访问以及端口监听需要进行额外的环境变量设置 `OLLAMA_ORIGINS` 和 `OLLAMA_HOST`。
Ollama 环境变量如下:
设置变量以供外部请求:
export OLLAMA_HOST=0.0.0.0:11434
export OLLAMA_ORIGINS=*
LobeChat 支持多种部署平台,包括 Vercel、Docker 和 Docker Compose 等。但若要完全部署在本地,则只有使用 Docker。
$ docker run -d -p 3210:3210 \
-e ACCESS_CODE=xxx \
-e OPENAI_API_KEY=sk-xxx \
-e OPENAI_PROXY_URL=https://xxx.com/v1 \
-e AWS_ACCESS_KEY_ID=xxx \
-e AWS_SECRET_ACCESS_KEY=xxx \
-e AWS_REGION=us-west-2 \
--name lobe-chat \
lobehub/lobe-chat
Unable to find image 'lobehub/lobe-chat:latest' locally
latest: Pulling from lobehub/lobe-chat
26070551e657: Pull complete
c4c34966a622: Pull complete
c3107cf314a5: Pull complete
879121d11289: Pull complete
5603213f19bc: Pull complete
c64230e64259: Pull complete
61ccd1a0817b: Pull complete
4f125c8a01c4: Pull complete
00cf600f4c9f: Pull complete
a012e07ecd86: Pull complete
92e251084e73: Pull complete
7916c4c36ab3: Pull complete
e8cc5089568e: Pull complete
bc44408bc9ae: Pull complete
Digest: sha256:29f73fe2b8a13bf2c5216a4d2d3457eda18b4f6e79b556a4582a6b2380af56dc
Status: Downloaded newer image for lobehub/lobe-chat:latest
7a2a2143bc2ca6d97fab5db7ec7f7a39194de11cbad3bcdce7309e0020ac750a
完成后访问 `http://localhost:3210` 即可使用。
LobeChat 提供了对 Ollama 支持,所以直接在 `设置 > 语言模型` 中启用 Ollama 服务即可。
1. 停止并删除当前运行的 LobeChat 容器:
docker stop lobe-chat
docker rm lobe-chat
2. 拉取 LobeChat 的最新 Docker 镜像:
docker pull lobehub/lobe-chat
3. 使用新拉取的镜像重新部署 LobeChat 容器:
docker run ...
# 不受审查
ollama run dolphin-llama3:70b
# 70b 中文微调
ollama run wangshenzhi/llama3-70b-chinese-chat-ollama-q4:latest
查看模型文件:
$ ollama show llama3:70b --modelfile
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this one, replace the FROM line with:
# FROM llama3:70b
FROM /Users/chengrenju/.ollama/models/blobs/sha256-4fe022a8902336d3c452c88f7aca5590f5b5b02ccfd06320fdefab02412e1f0b
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"""
PARAMETER num_keep 24
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
删除模型(相关文件将被自动移除):
ollama rm llama3:70b