华为云之基于DeepSeek构建个性化问答助理【玩转华为云】
华为云之基于DeepSeek构建个性化问答助理【玩转华为云】
一、Ollma与DeepSeek介绍
1.1 Ollama简介
Ollama 是一个专注于在本地运行大型语言模型的开源工具和框架。它提供了一种简单的方式,让用户可以在本地计算机上运行、测试和开发基于大语言模型的应用,而无需依赖云端服务。Ollama 支持多种流行的模型,如 Llama 系列,并通过命令行界面(CLI)和 API 接口提供便捷的交互方式,适合开发者和研究人员快速部署和实验大模型。由于其轻量级的设计和对 GPU 的良好支持,Ollama 成为了许多本地 AI 开发者的首选工具。
1.2 DeepSeek简介
DeepSeek 是一家由中国团队开发的大型语言模型公司,致力于构建高性能、大规模的语言模型,提供包括对话理解、文本生成、编程代码生成等多种能力。其核心产品 DeepSeek 系列模型在语言理解与生成方面表现出色,部分版本在性能上可与国际主流模型相媲美。DeepSeek 提供多种模型版本,支持企业级应用场景,并可通过 API 接入,适用于客服、内容创作、智能助手等多个领域。其目标是通过持续的技术创新,推动大模型在更多行业的落地应用。
二、本次实践介绍
2.1 实践环境简介
本次实践将在华为云开发者云实验平台上进行,使用华为云ECS弹性云服务器来搭建运行环境,并选用DeepSeek 1.5b模型版本,其1.1GB的权重文件便于快速部署。该模型在CPU环境下运行流畅,非常适合个人体验和开发个性化问答助理。通过此次实践,我们将掌握构建不同类型个性化智能助手的方法。
2.2 本次实践目标
• 熟悉华为云 ECS 服务器的相关知识与操作。
• 熟练运用 Linux 系统环境。
• 掌握通过 Ollama 来部署 DeepSeek R1 模型的方法
• 掌握构建不同类型的个性化智能助手
2.3 华为云ECS云服务器介绍
华为云弹性云服务器(ECS)作为一种云上计算服务,支持用户随时自助获取,且具备弹性伸缩能力。它能为用户打造出安全、可靠的应用环境,保障应用稳定运行。同时,其灵活、高效的特性,能很好地满足不同场景下的使用需求,为用户提供优质的服务体验。
null
三、购买ECS云服务器
3.1 登录华为云
查看华为云实验账号信息:进入实验环境后,我们在左侧的实验手册中可以看到华为云实验账号。
null
进入【实验操作桌面】,打开Chrome浏览器,首次可自动登录并进入华为云控制台页面。
null
登录完毕后,我们进入华为云控制台管理首页。
null
3.2 购买弹性云服务器
在华为云控制台中,我们点击弹性云服务器ECS【创建】选项,进入ECS购买界面。
null
购买的ECS实力,可参考以下配置:
• 计费模式:按需计费
• 区域:北京四,可用随机
• 实例规格:CPU架构选择X86架构,规格为c7.xlarge.2
• 系统盘:通用型SSD,40G
• 操作系统:使用镜像为openEuler 22.03 64bit(10GiB)
• 网络配置:VPC均保持默认即可
• 安全组:默认
• 公网访问:弹性公网-购买,全动态BGP,按流量计费,100Mbit/带宽;
• 云服务器管理:服务器名称(ecs-cent,),服务器密码Huawei1234%
• 其余配置默认即可,配置完毕后,可检查配置概要以检查配置是否正确,点击“立即购买”。
null
null
3.3登录ECS弹性云服务器
返回弹性云服务器列表后,可以看到我们购买的弹性云服务器ECS状态正常。
null
• 安全组配置:在入方向上,放行22端口。
null
我们通过实验桌面的Xfce工具进行SSH连接ECS,将以下命令的EIP替换我们实际ECS的弹性公网IP地址。如果无法登录,需要修改安全组配置,放行22端口。
ssh root@*EIP*
null
3.4 检查系统环境
检查操作系统版本和内核版本,如下所示:
[root@ecs-cent ~]# cat /etc/os-release
NAME="openEuler"
VERSION="22.03 LTS"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 LTS"
ANSI_COLOR="0;31"
[root@ecs-cent ~]# uname -r
5.10.0-60.139.0.166.oe2203.x86_64
四、安装ollama工具
4.1 下载ollama安装包
方案一:使用以下一键安装脚本进行安装,有可能因为网络等原因安装失败时,可重新执行命令安装。
curl -fsSL https://ollama.com/install.sh | sh
方案二:下载ollama安装包进行安装,本次实践使用此方式。
wget https://sandbox-experiment-files.obs.cn-north-4.myhuaweicloud.com/deepseek/ollama-linux-amd64.tgz
null
• 解压ollama安装包,执行以下命令:
sudo tar -C /usr -xzf ollama-linux-amd64.tgz
4.3 添加执行权限
设置ollama执行权限和创建ollama用户
sudo chmod +x /usr/bin/ollama
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
null
4.4 配置ollama服务开机自启
在/etc/systemd/system/ollama.service文件中,编辑服务配置文件。
cat << EOF > /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
[Install]
WantedBy=default.target
EOF
执行以下命令,启动ollama服务并设置开机自启。
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
4.5 检查Ollama服务状态
检查ollama服务状态,确保正常启动。
sudo systemctl status ollama
null
检查ollama安装版本,如下所示:
ollama -v
null
五、运行DeepSeek大模型
5.1 下载模型文件(方法一,可选)
可使用ollama命令直接拉取deepseek-r1:1.5b模型,简单方便一个命令搞定,需要保证网络环境正常,下载速度比较慢。
ollama pull deepseek-r1:1.5b
5.2 下载模型文件(方法二)
在华为云OBS下载ollama模型文件deepseek-r1:1.5b,如下所示:
wget https://sandbox-experiment-files.obs.cn-north-4.myhuaweicloud.com/deepseek/ollama_deepseek_r1_1.5b.tar.gz
null
• 进行解压缩操作:
sudo tar -C /usr/share/ollama/.ollama/models -xzf ollama_deepseek_r1_1.5b.tar.gz
• 将解压后的ollama模型文件放在ollama目录:
cd /usr/share/ollama/.ollama/models
mv ./deepseek/sha256* ./blobs
mkdir -p ./manifests/registry.ollama.ai/library/deepseek-r1
mv ./deepseek/1.5b ./manifests/registry.ollama.ai/library/deepseek-r1
rm -rf deepseek/
5.3 运行DeepSeek模型
• 执行以下命令,运行deepseek-r1:1.5b
ollama run deepseek-r1:1.5b
null
六、体验不同AI助理
6.1 新建prompt文本
在xfce工具中,我们重新打开启动一个终端,进行SSH连接后,我们新建3个角色的prompt文本文件。
vim 调酒师.txt
null
vim 心理医生.txt
null
vim 数学老师.txt
null
6.2 构建多轮对话助理
• 编辑以下personal_bot.py文件:
vim personal_bot.py
import requests
import json
# 基础请求配置
url = "http://localhost:11434/api/generate"
headers = {"Content-Type": "application/json"}
# 从文件中读取初始提示
with open("prompt.txt", "r", encoding="utf-8") as file:
initial_prompt = file.read().strip()
# 初始化对话历史
conversation_history = initial_prompt
# 多轮交互
print("欢迎进入对话模式!输入 'exit' 退出对话。")
while True:
# 用户输入
user_input = input("\n你:")
if user_input.lower() == "exit":
print("对话结束。")
break
# 更新对话历史
conversation_history += f"\n用户:{user_input}"
# 请求参数
payload = {
"model": "deepseek-r1:1.5b", # 必须与运行的模型名称完全一致
"prompt": conversation_history, # 将对话历史作为 prompt
"stream": False, # 设为 True 可启用流式响应
"options": {
"temperature": 0.5, # 推荐值(平衡准确性与创造性)
"num_predict": 512, # 最大输出长度(1.5B模型建议≤1024)
"seed": 42 # 固定随机种子(保证结果可复现)
}
}
# 发送请求
response = requests.post(url, json=payload, headers=headers)
# 处理响应
if response.status_code == 200:
result = response.json()
model_response = result.get("response", "抱歉,我没有生成任何内容。")
print(f"\n模型:{model_response}")
# 将模型的回答加入对话历史
conversation_history += f"\n模型:{model_response}"
else:
print(f"请求失败(状态码 {response.status_code}): {response.text}")
6.3 不同对话结果展示
修改personal_bot.py文件的基础部分,将prompt.txt替换刚才编辑好的3个prompt文本文件。
• 调酒师角色:
with open("调酒师.txt", "r", encoding="utf-8") as file:
initial_prompt = file.read().strip()
null
python3 personal_bot.py
null
• 心理医生角色:
python3 personal_bot.py
null
• 数学老师角色:
python3 personal_bot.py
null
七、实践总结
在本次实践中,我基于华为云平台集成了DeepSeek大模型,成功构建了一个个性化问答助理原型。通过华为云提供的高效算力与灵活部署能力,模型运行稳定且响应速度快。我利用DeepSeek强大的语言理解与生成能力,结合实际场景对问答逻辑进行了优化与定制。整个实践过程不仅加深了我对大模型应用的理解,也让我体验到了华为云在AI开发上的便捷性与先进性。
- 点赞
- 收藏
- 关注作者
评论(0)