当前位置: 首页 > article >正文

DeepSeek本地部署及其他应用接入

本文综合了网上的文章及本地自行实践踩坑的记录

1.Ollama安装

实测需要有CUDA11及以上版本支持,不然会报错。因此先把显卡驱动安装好。

由于下载Ollama不方便,我把下载好的Windows版本、Linux版本和Linux版本安装脚本修改版本install.sh一起放网盘分享:https://pan.baidu.com/s/1kkr95WOd3fX1sJhAwmPBdQ?pwd=1314

1.1 Windows上部署Ollama

step1:下载Ollama

下载(https://ollama.com/download)并双击运行 Ollama 应用程序。

step2:修改模型下载位置

默认模型下载在C盘,不想占用系统盘的需要修改

关掉ollama之后,设置环境变量

右键我的电脑-属性-高级系统设置,点击“高级系统设置”

在打开的系统属性界面中点击高级-环境变量

在环境变量界面中点击系统变量中的新建按钮

在跳出来的新建系统变量界面中,变量名设置为:OLLAMA_MODELS,变量值设置为E:\OllamaLLM\models(根据自己想放置的位置),然后点击确定对设置的环境变量进行保存。

image-20250203153043489

step3:验证安装

在命令行输入 ollama,如果出现以下信息,说明 Ollama 已经成功安装。

image-20250203153707027

1.2 Linux上使用

如果要在Linux上安装Ollama,可以按照如下方式,我以Ubuntu20.04为例

官网给出的是安装命令,这个命令会从github自动下载安装,但基本由于网络原因失败。

curl -fsSL https://ollama.com/install.sh | sh

直接访问 ollama github下载最新的版本,目前是0.5.7

先在Linux上确定自己的CPU架构:

lscpu
image-20250205075000039

下载对应的包:

image-20250205075114422

网上说明是直接解压缩后进行一番设置,这里官方的安装脚本已经写得很好,我们只需要修改原始的安装脚本就可以实现自动安装离线包。

从任意位置下载源码中的离线安装脚本,我这里针对的是最新的0.5.7版本:

  • Ollama官网

  • github

  • gittee加速

    原始脚本的第69行到88行如下:

    for BINDIR in /usr/local/bin /usr/bin /bin; do
        echo $PATH | grep -q $BINDIR && break || continue
    done
    OLLAMA_INSTALL_DIR=$(dirname ${BINDIR})
    
    if [ -d "$OLLAMA_INSTALL_DIR/lib/ollama" ] ; then
        status "Cleaning up old version at $OLLAMA_INSTALL_DIR/lib/ollama"
        $SUDO rm -rf "$OLLAMA_INSTALL_DIR/lib/ollama"
    fi
    status "Installing ollama to $OLLAMA_INSTALL_DIR"
    $SUDO install -o0 -g0 -m755 -d $BINDIR
    $SUDO install -o0 -g0 -m755 -d "$OLLAMA_INSTALL_DIR"
    status "Downloading Linux ${ARCH} bundle"
    curl --fail --show-error --location --progress-bar \
        "https://ollama.com/download/ollama-linux-${ARCH}.tgz${VER_PARAM}" | \
        $SUDO tar -xzf - -C "$OLLAMA_INSTALL_DIR"
    if [ "$OLLAMA_INSTALL_DIR/bin/ollama" != "$BINDIR/ollama" ] ; then
        status "Making ollama accessible in the PATH in $BINDIR"
        $SUDO ln -sf "$OLLAMA_INSTALL_DIR/ollama" "$BINDIR/ollama"
    fi
    

    这里我对其中进行注释,并对需要修改的地方进行了说明:

    # 如果存在旧版本的 ollama,清理旧版本
    if [ -d "$OLLAMA_INSTALL_DIR/lib/ollama" ] ; then
        status "Cleaning up old version at $OLLAMA_INSTALL_DIR/lib/ollama"
        $SUDO rm -rf "$OLLAMA_INSTALL_DIR/lib/ollama"
    fi
    # 创建安装目录
    status "Installing ollama to $OLLAMA_INSTALL_DIR"
    $SUDO install -o0 -g0 -m755 -d $BINDIR
    $SUDO install -o0 -g0 -m755 -d "$OLLAMA_INSTALL_DIR"
    # 修改点:跳过下载和解压步骤,直接使用当前目录下的文件
    #status "Downloading Linux ${ARCH} bundle"
    #curl --fail --show-error --location --progress-bar \
    #    "https://ollama.com/download/ollama-linux-${ARCH}.tgz${VER_PARAM}" | \
    #    $SUDO tar -xzf - -C "$OLLAMA_INSTALL_DIR"
    # 新增的脚本如下,用于直接使用当前目录下的文件
    status "Copying ollama from current directory to $OLLAMA_INSTALL_DIR"
    # 假设你已经手动解压了 ollama-linux-amd64.tgz,并且解压后的文件在当前目录下的 ollama-linux-amd64 文件夹中
    $SUDO cp -r ./ollama-linux-amd64/* "$OLLAMA_INSTALL_DIR/"
    
    # 如果 ollama 可执行文件不在系统的 PATH 中,创建符号链接
    if [ "$OLLAMA_INSTALL_DIR/bin/ollama" != "$BINDIR/ollama" ] ; then
        status "Making ollama accessible in the PATH in $BINDIR"
        $SUDO ln -sf "$OLLAMA_INSTALL_DIR/ollama" "$BINDIR/ollama"
    fi
    

解压缩:

tar -xzf ollama-linux-amd64.tgz -C .

创建ollama-linux-amd64目录并加压缩源码到这个目录,改变install.sh安装脚本执行权限:

mkdir ollama-linux-amd64
sudo tar -xzf ollama-linux-amd64.tgz -C ./ollama-linux-amd64
sudo chmod +x install.sh

直接安装还会报错,原来是每行末尾的回车换行符\r\n,用sed替换后安装:

sudo sed -i 's/\r$//' install.sh
./install.sh
image-20250205084133927

配置环境变量 OLLAMA_MODELS 指向模型存储目录,修改 ~/.bashrc

mkdir ~/ollama/OLLAMA_MODELS
vim ~/.bashrc

#在bashrc中最后加入后保存退出
export OLLAMA_MODELS=/home/ollama/OLLAMA_MODELS

source ~/.bashrc
cp -r /usr/share/ollama/.ollama/models /home/ollama/OLLAMA_MODELS

防火墙放通ollama端口:

sudo ufw allow 11434/tcp

启动ollama服务:

sudo ollama serve

停止Ollama服务:

service ollama stop

上面的命令形式关闭中断后ollama就停止了,如果想在后台自动运行,可以如下:

接下来就可以进入step4 拉取想要的模型了

跨域访问

如果想让部署在Ubuntu服务器上的ollama能被网络上的其他主机访问,可以修改ollama.service 文件以允许跨域访问:

sudo vi /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
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"

[Install]
WantedBy=default.target

重新加载 systemd 守护进程并启用 Ollama 服务:

sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama

确认 Ollama 安装成功并运行:

ollama --version

## 2.拉取模型

  • 模型拉取

从命令行,参考 Ollama 模型列表 (https://ollama.com/library)和 文本嵌入模型列表 (https://python.langchain.com/v0.2/docs/integrations/text_embedding/)拉取模型。(拉取模型时,可能比较缓慢。如果出现拉取错误,可以重新输入指令拉取)

结合网上资料,各个版本需要的GPU显存如下:

  • 1.5b 模型,4GB显存就能跑。
  • 7b、8b 模型,8GB显存就能跑。
  • 14b 模型,12GB显存能跑。
  • 32b 模型,24GB显存能跑。

我尝试了一下1.5B和7B

image-20250203154031486

命令行输入下面的命令会自动拉取模型。对于GPU小的的可以玩下1.5b(模型文件约1.1GB)

ollama run deepseek-r1:1.5b  

如果>8GB显存可以尝试7B(模型文件约4.7GB)

ollama run deepseek-r1:7b     

拉取完毕后查看模型列表

ollama list

我下载了1.5b和7b模型:

查看正在运行的模型

ollama ps

如果要删除模型

ollama remove 模型名称

拉取完成后就可以直接聊天了:

image-20250203170444090

3.DeepSeek网页端和知识库搭建

step1: 通过Google应用商店在Google浏览器中安装page Assist插件:

image-20250203171429838

Step2:选择本地搭建的模型,点击配置按钮,设置中文

image-20250203173027763

step3:RAG设置,模型选择本地搭建的

image-20250203173103873

到了这一步,也可以进行聊天对话了

image-20250203173223177

更好的是可以联网,突破本地的局限性:

image-20250203174559629

step4:点击左侧管理知识,可以添加本地知识库。

填写知识标题及上传文件,点击提交按钮。

image-20250203173352547

我提供的书名及价格文件只是简单的内容,自己知识库可以搭建更加复杂的内容

书名及价格:
1.《机器学习实战:从零到深度学习》 - 价格:¥129
2.《Python机器学习基础教程》 - 价格:¥99
4.《深度学习与机器学习实战》 - 价格:¥119
5.《机器学习与数据挖掘:算法与应用》 - 价格:¥89
6.《机器学习:经典算法与实战案例》 - 价格:¥109

新建聊天进行测试,在聊天窗口要记得点击右下角知识,选择刚才搭建的知识库名称,然后在上方看到就可以了。

对模型进行测试,看看是否可以根据知识库进行回答。

image-20250203173447814

4.本地DeepSeek接入Pycharm、Vscode

4.1 Pycharm接入本地DeepSeek

在Pycharm中找到文件(File)-设置(Settings)-插件(Plugins),输入CodeGPT,即可点击安装(Install)即可:

image-20250204213016688

安装后重启Pycharm,文件 -> 设置 -> 工具 -> CodeGPT打开CodeGPT配置

  • 在 CodeGPT 的设置界面中,找到与 OllamaLocal Models 相关的配置选项。

  • 确保 Ollama 已正确安装并运行

  • 在设置界面中选择 Providers,找到 Ollama (Local)

  • Ollama (Local) 中选择刚刚安装的 deepseek-coder 模型。

  • 点击 OKApply 保存设置。

    image-20250205104427332

下面就可以愉快的在PyCharm中使用DeepSeek-r1加速编程学习了,左侧是代码编辑界面,右侧是r1大模型,直接对话式提问,省去了来回不同页面折腾的麻烦:

image-20250205124828767

大家再感受DeepSeek-r1:1.5b大模型的回复延时,几乎1秒钟响应,本人电脑是32GB内存,11GB显存,这响应速度可以了。CodeGPT插件显示了Tokens数,有些同学担心这是不是在计费?不是的!只是一个数字统计,无任何费用,因为使用的是本地自己电脑的算力。

另外,CodeGPT应该是目前大模型+编程UI做的最好的插件了,感兴趣的同学可以根据以上步骤安装试试。

4.2 VSCODE中接入本地DeepSeek

VSCODE应用商店中搜索continue进行安装

image-20250205093446851 image-20250205093639580 image-20250205093814066

选择模型:

image-20250205093855991

可以开始用了:

image-20250205094030410

5. 本地DeepSeek接入Word

配置word

新建一个Word文档,点击 文件 -> 选项 -> 自定义功能区,勾选“开发者工具”。

image-20250205101919037

点击 信任中心 -> 信任中心设置,选择“启用所有宏”与“信任对VBA…”。

image-20250205101941332

接下来点击确定,我们发现选项卡中出现了“开发者工具”,点击开发者工具,点击Visual Basic,将会弹出一个窗口。

image-20250205102004603

我们点击新窗口中的插入,点击模块。

image-20250205102022050

点击后将会弹出一个编辑器,把如下代码复制到编辑区中。

Function CallDeepSeekAPI(api_key As String, inputText As String) As String
    Dim API As String
    Dim SendTxt As String
    Dim Http As Object
    Dim status_code As Integer
    Dim response As String
           
    ' 本地部署的大模型API地址
    API = "http://localhost:11434/api/chat"
    
    ' 修改请求体为与本地大模型相匹配的格式
    SendTxt = "{""model"": ""deepseek-r1:1.5b"", ""messages"": [{""role"":""user"", ""content"":""" & inputText & """}], ""stream"": false}"
           
    Set Http = CreateObject("MSXML2.XMLHTTP")
    With Http
        .Open "POST", API, False
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Authorization", "Bearer " & api_key
        .send SendTxt
        status_code = .Status
        response = .responseText
    End With
           
    ' 弹出窗口显示 API 响应(调试用)
    ' MsgBox "API Response: " & response, vbInformation, "Debug Info"
           
    If status_code = 200 Then
        CallDeepSeekAPI = response
    Else
        CallDeepSeekAPI = "Error: " & status_code & " - " & response
    End If
           
    Set Http = Nothing
End Function
           
Sub DeepSeekV3()
    Dim api_key As String
    Dim inputText As String
    Dim response As String
    Dim regex As Object
    Dim matches As Object
    Dim originalSelection As Object
           
    api_key = "pass"
    If api_key = "" Then
        MsgBox "Please enter the API key."
        Exit Sub
    ElseIf Selection.Type <> wdSelectionNormal Then
        MsgBox "Please select text."
        Exit Sub
    End If
           
    ' 保存原始选中的文本
    Set originalSelection = Selection.Range.Duplicate
           
    inputText = Replace(Replace(Replace(Replace(Replace(Selection.Text, "\", "\\"), vbCrLf, ""), vbCr, ""), vbLf, ""), Chr(34), "\""")
    response = CallDeepSeekAPI(api_key, inputText)
           
    If Left(response, 5) <> "Error" Then
        Set regex = CreateObject("VBScript.RegExp")
        
        ' 步骤1:提取大模型回复内容
        With regex
            .Global = True
            .MultiLine = True
            .Pattern = """content"":\s*""([\s\S]*?)"""  ' 更稳健的提取逻辑
        End With
        If regex.Test(response) Then
            response = regex.Execute(response)(0).SubMatches(0)
            
            ' 步骤2:处理Unicode转义字符(如\u003c -> <)
            response = Replace(response, "\u003c", "<")
            response = Replace(response, "\u003e", ">")
            
            ' 步骤3:删除标签及其内容
            With regex
                .Global = True
                .MultiLine = True
                .IgnoreCase = True
                .Pattern = "[\s\S]*?"
            End With
            response = regex.Replace(response, "")
            
            ' 步骤4:转换\n为实际换行符
            response = Replace(response, "\n", vbCrLf)
            
            ' 步骤5:移除Markdown格式
            With regex
                .Global = True
                .Pattern = "(#+\s*|\*\*|__|`|\*{1,2}|_{1,2}|~~|^>\s)"
                response = .Replace(response, "")
            End With
            response = regex.Replace(response, "")
           
            ' 取消选中原始文本
            Selection.Collapse Direction:=wdCollapseEnd
           
            ' 将内容插入到选中文字的下一行
            Selection.TypeParagraph ' 插入新行
            Selection.TypeText Text:=response
           
            ' 将光标移回原来选中文本的末尾
            originalSelection.Select
        Else
            MsgBox "Failed to parse API response.", vbExclamation
        End If
    Else
        MsgBox response, vbCritical
    End If
End Sub

完成后,可直接关闭弹窗。

点击 文件 -> 选项 -> 自定义功能区,右键开发工具,点击添加新组。

image-20250205102218588

在添加的新建组点击右键,点击重命名。将其命名为DeepSeek,并选择心仪的图标,最后点击确定。

image-20250205102239787

首先选择DeepSeek(自定义),选择左侧的命令为“宏”,找到我们添加的DeepSeekV3,选中后点击添加。

image-20250205102301972

随后,选中添加的命令,右键点击重命名,选择开始符号作为图标,并重命名为“生成”。

image-20250205102332677 image-20250205102352055

最后点击确定。

至此,Word成功接入DeepSeek大模型。

选中文字,点击生成,就可以直接将选中的文本发送给大模型,大模型将会按照你选中的文本,做出响应。

image-20250205102517693

生成效果如下:

image-20250205102608256

为确保配置后的宏不会消失,配置如下:

点击 开发工具 -> 宏。

.image-20250205102715364

选中我们配置的DeepSeekV3,点击管理器。

image-20250205102851393

选中左侧的模块1,点击复制,右侧将会出现模块1,最后点击关闭。

image-20250205102914505

问题顺利解决,再次重启word后,不会出现宏消失的问题。

6.DeepSeek API接入Word、Pycharm和Vscode

这部分接入需要DeepSeek API Key的支持,但是目前官方暂停了KEY申请,等恢复后补上。应该和本地接入差不多,只是把URL那里换成了官方的key。


http://www.kler.cn/a/533673.html

相关文章:

  • PyQt6/PySide6 的 QMainWindow 类
  • blender 相机参数
  • CSS 样式化表格:从基础到高级技巧
  • 【OMCI实践】ONT上线过程的omci消息(三)
  • 解读“大语言模型(LLM)安全性测评基准”
  • C#中的委托(Delegate)
  • 【TensorFlow】T1:实现mnist手写数字识别
  • 基于springboot校园点歌系统
  • 15.<Spring Boot 日志>
  • 全流程安装DeepSeek开源模型
  • 深度学习|表示学习|卷积神经网络|Batch Normalization在干什么?|19
  • 【lua编程实操(一)】函数和闭包
  • 13.代理模式(Proxy Pattern)
  • mini-lsm通关笔记Week2Day7
  • 将OneDrive上的文件定期备份到移动硬盘
  • 闲聊邵雍的“象数”与古诗有感
  • 从51到STM32:PWM平滑迁移方案
  • make -j$(nproc)——多核加速编译
  • 《Java核心技术 卷II》本地日期
  • 01vue3实战-----前言
  • VSCode中使用EmmyLua插件对Unity的tolua断点调试
  • Go语言并发之美:构建高性能键值存储系统
  • 动静态库的学习
  • golang命令大全11--命令的常见问题与解决方案
  • pandas获取指定日期的行
  • 网络爬虫会对服务器造成哪些影响?