DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

Deepseek本地部署方法和构建个人知识库,指令技巧,配合客户端和插件使用。在 Word和WPS中又如何调用Deepseek服务?

本文围绕Deepseek模型的本地部署方法和使用展开。

  1. 1. 探讨了Deepseek指令技巧,
  2. 2. 一些热门客户端(AnythingLLM、Chatbox、Cherry Studio等)使用和搭建知识库,使用个人文档问答。
  3. 3. 热门的插件分享,例如浏览器联网插件Page Assist、VSCode中写代码的插件。
  4. 4. 在 Word和WPS中调用Deepseek API服务
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】
作 者丨程旭源
学习笔记、技巧分享
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

deepseek本地部署方法

本地部署需要根据自己的硬件配置做好模型选型,671B的模型有1.58bit的量化版,至少需要136G左右的显存(可以GPU配合内存使用。),配置不够的可以选择使用蒸馏版+量化版的模型。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

基于Ollama

安装ollama

我以前写了一篇超全面的Ollama安装和使用指南,以及常见问题。MacBook、Linux和Windows都可以参考这篇安装:

Ollama使用指南【超全版】[1]
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

个人平时使用Ollama有个显著的特点,不用的时候不会占用GPU显存。我的很多应用也都基于Ollama做后端服务的。

在Models界面,搜DeepSeek就能看到

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

点进去选择自己想用的模型即可。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

命令:
<span style="color: #d4d0ab; border: 0px solid hsl(var(--border));"># 拉取模型并运行</span><br style="border: 0px solid hsl(var(--border));">ollama run deepseek-r1<br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));"><span style="color: #d4d0ab; border: 0px solid hsl(var(--border));"># 仅仅拉取:</span><br style="border: 0px solid hsl(var(--border));">ollama pull deepseek-r1
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

拉取镜像之后怎么使用?

这个要看你是开发使用还是想无代码使用。先聊聊代码开发,后面有无代码使用方法。

  1. 1. 开发者使用:
  2. 我比较常用openai的库调用,可以封装后调用:
<span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">from</span> openai <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">import</span> OpenAI<br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));">client = OpenAI(<br style="border: 0px solid hsl(var(--border));">    base_url=<span style="color: #abe338; border: 0px solid hsl(var(--border));">'http://localhost:11434/v1/'</span>,<br style="border: 0px solid hsl(var(--border));">    api_key=<span style="color: #abe338; border: 0px solid hsl(var(--border));">'ollama'</span>, <span style="color: #d4d0ab; border: 0px solid hsl(var(--border));"># 必需但可以随便填写</span><br style="border: 0px solid hsl(var(--border));">)<br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));">chat_completion = client.chat.completions.create(<br style="border: 0px solid hsl(var(--border));">    messages=[<br style="border: 0px solid hsl(var(--border));">        {<br style="border: 0px solid hsl(var(--border));">            <span style="color: #abe338; border: 0px solid hsl(var(--border));">'role'</span>: <span style="color: #abe338; border: 0px solid hsl(var(--border));">'user'</span>,<br style="border: 0px solid hsl(var(--border));">            <span style="color: #abe338; border: 0px solid hsl(var(--border));">'content'</span>: <span style="color: #abe338; border: 0px solid hsl(var(--border));">'介绍杭州旅游怎么玩。'</span>,<br style="border: 0px solid hsl(var(--border));">        }<br style="border: 0px solid hsl(var(--border));">    ],<br style="border: 0px solid hsl(var(--border));">    model=<span style="color: #abe338; border: 0px solid hsl(var(--border));">'deepseek-r1'</span>,<br style="border: 0px solid hsl(var(--border));">)
  1. 2. 无代码使用
  2. 下文介绍了基于 AnythingLLM、Chatbox、Cherry Studio等方法,直接在客户端中使用。

基于Vllm部署

vLLM 是高性能大模型推理框架,专为生产环境优化,适合企业级应用。

安装:

pip install vllm --index-url https://mirrors.aliyun.com/pypi/simple/

启动 vllm 服务:

# HF_ENDPOINT 镜像,在国内下载模型更快<br style="border: 0px solid hsl(var(--border));">HF_ENDPOINT=https://hf-mirror.com vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

其他的一些参数可以参考官方文档。

https://docs.vllm.ai/en/latest/index.html

OpenAI API代码调用

同上面Ollama的方式,只是后端启用服务不同,方式大致相同。
<span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">from</span> openai <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">import</span> OpenAI<br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));">openai_api_key = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"EMPTY"</span><br style="border: 0px solid hsl(var(--border));">openai_api_base = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"http://localhost:8000/v1"</span><br style="border: 0px solid hsl(var(--border));">client = OpenAI(<br style="border: 0px solid hsl(var(--border));">    api_key=openai_api_key,<br style="border: 0px solid hsl(var(--border));">    base_url=openai_api_base,<br style="border: 0px solid hsl(var(--border));">)<br style="border: 0px solid hsl(var(--border));">completion = client.completions.create(model=<span style="color: #abe338; border: 0px solid hsl(var(--border));">"DeepSeek-R1-Distill-Qwen-1.5B"</span>,<br style="border: 0px solid hsl(var(--border));">                                      prompt=<span style="color: #abe338; border: 0px solid hsl(var(--border));">"你的提示词。"</span>)<br style="border: 0px solid hsl(var(--border));"><span style="color: #f5ab35; border: 0px solid hsl(var(--border));">print</span>(<span style="color: #abe338; border: 0px solid hsl(var(--border));">"Completion result:"</span>, completion)

Chat版:

chat_response = client.chat.completions.create(<br style="border: 0px solid hsl(var(--border));">    model=<span style="color: #abe338; border: 0px solid hsl(var(--border));">"DeepSeek-R1-Distill-Qwen-1.5B"</span>,<br style="border: 0px solid hsl(var(--border));">    messages=[<br style="border: 0px solid hsl(var(--border));">        {<span style="color: #abe338; border: 0px solid hsl(var(--border));">"role"</span>: <span style="color: #abe338; border: 0px solid hsl(var(--border));">"system"</span>, <span style="color: #abe338; border: 0px solid hsl(var(--border));">"content"</span>: <span style="color: #abe338; border: 0px solid hsl(var(--border));">"You are a helpful assistant."</span>},<br style="border: 0px solid hsl(var(--border));">        {<span style="color: #abe338; border: 0px solid hsl(var(--border));">"role"</span>: <span style="color: #abe338; border: 0px solid hsl(var(--border));">"user"</span>, <span style="color: #abe338; border: 0px solid hsl(var(--border));">"content"</span>: <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Tell me a joke."</span>},<br style="border: 0px solid hsl(var(--border));">    ]<br style="border: 0px solid hsl(var(--border));">)<br style="border: 0px solid hsl(var(--border));"><span style="color: #f5ab35; border: 0px solid hsl(var(--border));">print</span>(<span style="color: #abe338; border: 0px solid hsl(var(--border));">"Chat response:"</span>, chat_response)

通过vllm库中的 LLM 加载:

<span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">from</span> vllm <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">import</span> LLM, SamplingParams<br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));">model_name_or_path = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"指定模型名称或者路径"</span><br style="border: 0px solid hsl(var(--border));">llm = LLM(<br style="border: 0px solid hsl(var(--border));">        model=model_name_or_path,<br style="border: 0px solid hsl(var(--border));">        pipeline_parallel_size=<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">1</span>,<br style="border: 0px solid hsl(var(--border));">        tensor_parallel_size=<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">8</span>,<br style="border: 0px solid hsl(var(--border));">        max_num_seqs=<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">512</span>,<br style="border: 0px solid hsl(var(--border));">        max_num_batched_tokens=<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">8192</span>,<br style="border: 0px solid hsl(var(--border));">        max_model_len=<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">4096</span>,<br style="border: 0px solid hsl(var(--border));">        gpu_memory_utilization=<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">0.85</span>,<br style="border: 0px solid hsl(var(--border));">        trust_remote_code=<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">True</span>,<br style="border: 0px solid hsl(var(--border));">    )<br style="border: 0px solid hsl(var(--border));">  <br style="border: 0px solid hsl(var(--border));">sampling_params = SamplingParams(<br style="border: 0px solid hsl(var(--border));">        temperature=<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">0.0</span>,<br style="border: 0px solid hsl(var(--border));">        <span style="color: #d4d0ab; border: 0px solid hsl(var(--border));"># top_p=0.95,</span><br style="border: 0px solid hsl(var(--border));">        max_tokens=<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">1024</span>,<br style="border: 0px solid hsl(var(--border));">        stop=stop,<br style="border: 0px solid hsl(var(--border));">    )<br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));"><span style="color: #d4d0ab; border: 0px solid hsl(var(--border));"># 可以批量</span><br style="border: 0px solid hsl(var(--border));">prompts = [<br style="border: 0px solid hsl(var(--border));">    <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Hello, my name is"</span>,<br style="border: 0px solid hsl(var(--border));">    <span style="color: #abe338; border: 0px solid hsl(var(--border));">"The president of the United States is"</span>,<br style="border: 0px solid hsl(var(--border));">]<br style="border: 0px solid hsl(var(--border));">outputs = llm.generate(prompts, sampling_params)<br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));"><span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">for</span> output <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">in</span> outputs:<br style="border: 0px solid hsl(var(--border));">    prompt = output.prompt<br style="border: 0px solid hsl(var(--border));">    generated_text = output.outputs[<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">0</span>].text<br style="border: 0px solid hsl(var(--border));">    <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">print</span>(<span style="color: #abe338; border: 0px solid hsl(var(--border));">f"Prompt: <span style="border: 0px solid hsl(var(--border));">{prompt}</span>, Generated text: <span style="border: 0px solid hsl(var(--border));">{generated_text}</span>"</span>)

Deepseek 无代码使用

这部分介绍如何使用开源的客户端或者开源的网站使用Deepseek模型,以及一些高质量指令技巧。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

DeepSeek官方

  1. 1. 网页版网址:

https://www.deepseek.com/

https://chat.deepseek.com/

  1. 2. APP

直接在手机应用商城下载

  1. 3. API方式

https://platform.deepseek.com/usage

搭建个人知识库

这里主要介绍开源客户端,例如 AnythingLLM、Cherry Studio、ChatBox等下载安装版的可以根据自己的喜好选择,如果你有用其他的客户端,欢迎留言,让大家体验体验。除此之外,还有在VS Code里的插件,以及 Page Assist 浏览器插件。

配合 AnythingLLM

进入AnythingLLM官网(https://anythingllm.com/),选择安装包下载安装即可。
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】
在软件设置里面,LLM首选项界面,提供商选择Ollama,Ollama Model选择前面下载的DeepSeek-R1系列模型,然后点击Save changes。
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

点击【工作区设置】,点击聊天设置,工作区LLM提供者选择【Ollama】,工作区聊天模型选择【deepseek-r1】模型,然后点击【Update workspace agent】。
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

点击上传按钮,可以选择本地文档,也可以输入网址进行问答。
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

在Cherry Studio中使用

内置了很多的提示词,这点很方便。写论文、看论文轻松多了,哈哈哈。
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】
支持很多客户端, Ollama相关配置见下图:
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

在ChatBox中使用

ChatBox也是一个不错的本地客户端应用,集成了市面上的模型服务,可以按照下面的去配置ollama的服务。但联网等服务,需要是会员。
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】
右下角选择使用的模型就可以啦~
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

插件

WebUI 浏览器插件

Page Assist[2] 是本地 AI 模型的 Web UI,可以使用本地运行的 AI 模型联网给你找答案。

在扩展中的管理扩展页面,搜索找到Page Assist,点击获取就会安装。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

然后在浏览器插件那里点击就会跳转界面。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

更多操作可以参考Page Assist 官方文档。
https://github.com/n4ze3m/page-assist

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

联网检索的引擎也支持很多。

VSCode里使用插件

Roo-code插件Cline插件、Continue插件,都是不错的选择。Continue插件会和notebook冲突,我后来就没用了,目前不清楚有没有改掉bug。

程序员写代码的效率提升了好多。有的时候拿过来,改改就能用了,哈哈哈。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

无代码应用

无代码流程编排

无代码流程编排类的应用,例如Coze(字节的),还有一些开源的项目,比如 Difylangflow, RAGFlow

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

https://github.com/langgenius/dify

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

https://github.com/langflow-ai/langflow

如果你还有其他比较推荐的无代码流程编排类的应用,欢迎留言区和大家分享。

Dify目前在往1.x的版本迁移,和0.x版本略有差异。这类无代码的sass类服务,可以根据自己的需求设置工作流。也可以结合Ollama和Vllm使用,具体操作可以看官方文档,后面也会分享更多的操作给大家。

其他网站

1、硅基流动
https://cloud.siliconflow.cn/i/AJQISNv5
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

如何更好让DeepSeek R1发挥实力

不要用ChatGPT的那套逻辑去使用Deepseek。

指令技巧模板

核心指令分类模板,可以根据自己的任务需求填充和调整。

 
输入类 :步骤分解、扮演专家、创建生成。一般具有明确的范围和数量、给出具体示例和评估标准等特征。能让 AI 为我们拆解步骤、模拟专家、生成各类内容、搭建完整框架。

  • • 洞察 :"请分析[现象/数据/问题],找出其中的关键信息和深层含义。"
  • • 归因 : "请对[结果/现象]进行归因分析,说明各个因素的影响程度和作用机制。"
  • • 判断 : "请基于[给定条件/标准],对[对象/方案]做出专业判断,并说明判断依据。"
  • • 建议 :"请针对[现状/问题]提供[数量]条具体建议,每条建议需包含[实施要点]。"
  • • 指导 :"请为[目标群体]提供关于[主题]的指导方案,需要涵盖[具体方面]。"
  • • 诊断 :"请对[问题/现象]进行深入诊断,分析[具体层面],并提供[解决方向]。"

分析类 :"检查审核、深度分析、交叉对比,获取专业洞见",这类指令往往需要清晰定义研究对象、提供具体的评估维度或标准、要求AI给出判断的依据、强调专业视角、注重深度诠释。

  • • 解释 : "请用[受众]能理解的方式,解释[概念]。要求:[深度/类比/示例]"
  • • 诠释 : "请从[视角/维度]出发,诠释[作品/观点/现象]的深层含义和价值。"
  • • 呈现 : "请以[形式/方式],生动呈现[内容/主题],确保[要求/效果]。"
  • • 对比 : "请从[维度/角度]对[对象A]和[对象B]进行对比分析,突出[关注点]。"
  • • 横向 : "请对[领域/行业]中的[多个对象],进行全面的横向比较,包含[比较要素]。"
  • • 纵向 : "请对[对象]在[时间周期]内的变化进行纵向比较,分析[关注点]。"

优化类:内容转化、改进完善、总结提炼、持续打磨迭代。一般包含:明确的目的、具体内容、预期的效果、具体的输出形式。

  • • 转化 : "请将[内容A]转化为[内容B]的形式,确保[核心要求]。"
  • • 适应 : "请将[内容]调整适应[目标平台/受众],注重[重点要素]。"
  • • 迭代 :"请对[现有内容]进行优化迭代,重点改进[具体方面]。"
  • • 提炼 :"请从[原始内容]中提炼出[核心要素],重点关注[关键维度]。"
  • • 总结 :"请对[内容系列]进行系统总结,包含[重点方面],形成[预期成果]。"
  • • 完善 :"请完善[现有内容],重点补充[缺失部分],使其达到[标准要求]。"
  • • 改进 :"请对[目标内容]进行改进,主要从[具体维度]入手,确保符合[评估标准]。"
  • • 补齐 :"请为[基础内容]补充[必要元素],重点关注[核心要点],使其形成完整的[目标体系]。"

其他技巧

边聊边看边想

如果以前学过AI提示词,或者收藏了很多AI提问指令,在这里发布不了多少作用。只要你像和人聊天一样,说说你的身份、目标、需求,它就会给你一个有启发的内容,然后有针对性提问。

其实,提问技巧都隐藏在它的思维链里,有时候你不知道怎么提问,看看它的思维链就知道了。看了它的思维链后,完全可以想想,自己想要什么样的内容,然后根据思维链提问。

公式模板,事半功倍

就是把目标、创作类型、风格等不同的元素说清楚。

让AI说人话,比如你可以直接说:说人话、用大白话说、禁用专业术语、每段不超过手机屏幕。

示例

  1. 1. 要求: 说人话,开头吸睛
给英语教育博主,写1篇300字以内的口播稿,专门给10-15岁孩子科学习英语方法的,要求: 说人话,开头吸睛
  1. 2. 专家视角指令:
<span style="color: #abe338; border: 0px solid hsl(var(--border));">"作为首席分析师,请用Gartner技术成熟度曲线分析2024年量子计算发展态势,要求:<br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));">1. 划分技术发展阶段并标注时间节点<br style="border: 0px solid hsl(var(--border));">2. 识别3个关键突破方向<br style="border: 0px solid hsl(var(--border));">3. 制作投资风险评估矩阵<br style="border: 0px solid hsl(var(--border));">4. 输出格式:Markdown表格+趋势图描述"</span><br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));">通过这种结构化、参数化的提示词设计体系,可使Deepseek的输出在逻辑严谨性、专业深度和实用价值上提升58%以上(基于内部测试数据)。
  1. 3. 创作指令

内容定义:明确内容类型、主题范围、设定创作目标
风格要求:语言风格、表达方式、情感基调
结构规划:明确章节划分、设定逻辑关系、规划内容层次

请创建一个产品说明书,主题是儿童语音机器人,<br style="border: 0px solid hsl(var(--border));">风格要求:简洁专业,结构要求:包含功能、参数、使用说明。

Word+WPS中使用Deepseek

在WPS和Word里使用

Word或者WPS我们职场牛马总归会用到吧。

先看效果:

我输入提示词:“杭州西湖”,选中文字,再点击右上角的“AI模型组件”按钮自动生成到下面的内容:
DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

Word + DeepSeek R1

核心思路就是通过 Visual Basic 编程语言调用Deepseek 的API,我也实现了调用本地Ollama服务的方式。

跟着下面的步骤操作起来:

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

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

接着,进入“信任中心 -> 信任中心设置”,选择“启用所有宏”和“信任对 VBA……”。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

保存设置后,“开发工具”就会出现在顶部菜单栏。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

然后,点击“开发者工具”,再点击“Visual Basic”,进入代码编辑界面。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

如果中间没有编辑块,可以点击“插入 -> 模块”。

将以下代码复制到编辑区,完成代码修改后,关闭弹窗。

自定义改动

你需要自定义改动的地方:

' 不想用R1模型,想用V3模型,就把model的deepseek-reasoner换成deepseek-chat
替换秘钥:api_key = "替换为你自己的密钥。"

    API = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"https://api.deepseek.com/chat/completions"</span><br style="border: 0px solid hsl(var(--border));">    SendTxt = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"{""model"": ""deepseek-reasoner"", ""messages"": [{""role"":""system"", ""content"":""You are a Word assistant""}, {""role"":""user"", ""content"":"""</span> & inputText & <span style="color: #abe338; border: 0px solid hsl(var(--border));">"""}], ""stream"": false}"</span>

完整的代码

<span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Function</span> CallDeepSeekAPI(api_key <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">String</span>, inputText <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">String</span>) <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">String</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> API <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">String</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> SendTxt <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">String</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> Http <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">Object</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> status_code <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">Integer</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> response <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">String</span><br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">    <span style="color: #d4d0ab; border: 0px solid hsl(var(--border));">' ollama 服务的 API 地址</span><br style="border: 0px solid hsl(var(--border));">    API = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"http://localhost:11434/api/chat"</span><br style="border: 0px solid hsl(var(--border));">    <br style="border: 0px solid hsl(var(--border));">    SendTxt = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"{""model"": ""deepseek-r1:32b-qwen-distill-q8_0"", ""messages"": [{""role"":""user"", ""content"":"""</span> & inputText & <span style="color: #abe338; border: 0px solid hsl(var(--border));">"""}], ""stream"": false}"</span><br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Set</span> Http = CreateObject(<span style="color: #abe338; border: 0px solid hsl(var(--border));">"MSXML2.XMLHTTP"</span>)<br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">With</span> Http<br style="border: 0px solid hsl(var(--border));">        .Open <span style="color: #abe338; border: 0px solid hsl(var(--border));">"POST"</span>, API, <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">False</span><br style="border: 0px solid hsl(var(--border));">        .setRequestHeader <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Content-Type"</span>, <span style="color: #abe338; border: 0px solid hsl(var(--border));">"application/json"</span><br style="border: 0px solid hsl(var(--border));">        .setRequestHeader <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Authorization"</span>, <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Bearer "</span> & api_key<br style="border: 0px solid hsl(var(--border));">        .send SendTxt<br style="border: 0px solid hsl(var(--border));">        status_code = .Status<br style="border: 0px solid hsl(var(--border));">        response = .responseText<br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">With</span><br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));">    <span style="color: #d4d0ab; border: 0px solid hsl(var(--border));">' MsgBox "API Response: " & response, vbInformation, "Debug Info"</span><br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">If</span> status_code = <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">200</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Then</span><br style="border: 0px solid hsl(var(--border));">        CallDeepSeekAPI = response<br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Else</span><br style="border: 0px solid hsl(var(--border));">        CallDeepSeekAPI = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Error: "</span> & status_code & <span style="color: #abe338; border: 0px solid hsl(var(--border));">" - "</span> & response<br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">If</span><br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Set</span> Http = <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">Nothing</span><br style="border: 0px solid hsl(var(--border));"><span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Function</span><br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));"><span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Sub</span> DeepSeekV3()<br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> api_key <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">String</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> inputText <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">String</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> response <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">String</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> regex <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">Object</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> matches <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">Object</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Dim</span> originalSelection <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">As</span> <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">Object</span><br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">    api_key = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"pass"</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">If</span> api_key = <span style="color: #abe338; border: 0px solid hsl(var(--border));">""</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Then</span><br style="border: 0px solid hsl(var(--border));">        MsgBox <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Please enter the API key."</span><br style="border: 0px solid hsl(var(--border));">        <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Exit</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Sub</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">ElseIf</span> Selection.Type <> wdSelectionNormal <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Then</span><br style="border: 0px solid hsl(var(--border));">        MsgBox <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Please select text."</span><br style="border: 0px solid hsl(var(--border));">        <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Exit</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Sub</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">If</span><br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Set</span> originalSelection = Selection.Range.Duplicate<br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">    inputText = Replace(Replace(Replace(Replace(Replace(Selection.<span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Text</span>, <span style="color: #abe338; border: 0px solid hsl(var(--border));">""</span>, <span style="color: #abe338; border: 0px solid hsl(var(--border));">"\"</span>), vbCrLf, <span style="color: #abe338; border: 0px solid hsl(var(--border));">""</span>), vbCr, <span style="color: #abe338; border: 0px solid hsl(var(--border));">""</span>), vbLf, <span style="color: #abe338; border: 0px solid hsl(var(--border));">""</span>), Chr(<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">34</span>), <span style="color: #abe338; border: 0px solid hsl(var(--border));">""""</span>)<br style="border: 0px solid hsl(var(--border));">    response = CallDeepSeekAPI(api_key, inputText)<br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">If</span> Left(response, <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">5</span>) <> <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Error"</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Then</span><br style="border: 0px solid hsl(var(--border));">        <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Set</span> regex = CreateObject(<span style="color: #abe338; border: 0px solid hsl(var(--border));">"VBScript.RegExp"</span>)<br style="border: 0px solid hsl(var(--border));">        <br style="border: 0px solid hsl(var(--border));">        <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">With</span> regex<br style="border: 0px solid hsl(var(--border));">            .<span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Global</span> = <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">True</span><br style="border: 0px solid hsl(var(--border));">            .MultiLine = <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">True</span><br style="border: 0px solid hsl(var(--border));">            .Pattern = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"""content"":s*""([sS]*?)"""</span><br style="border: 0px solid hsl(var(--border));">        <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">With</span><br style="border: 0px solid hsl(var(--border));">        <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">If</span> regex.Test(response) <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Then</span><br style="border: 0px solid hsl(var(--border));">            response = regex.Execute(response)(<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">0</span>).SubMatches(<span style="color: #f5ab35; border: 0px solid hsl(var(--border));">0</span>)<br style="border: 0px solid hsl(var(--border));">            <br style="border: 0px solid hsl(var(--border));">            response = Replace(response, <span style="color: #abe338; border: 0px solid hsl(var(--border));">"u003c"</span>, <span style="color: #abe338; border: 0px solid hsl(var(--border));">"<"</span>)<br style="border: 0px solid hsl(var(--border));">            response = Replace(response, <span style="color: #abe338; border: 0px solid hsl(var(--border));">"u003e"</span>, <span style="color: #abe338; border: 0px solid hsl(var(--border));">">"</span>)<br style="border: 0px solid hsl(var(--border));">            <br style="border: 0px solid hsl(var(--border));">            <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">With</span> regex<br style="border: 0px solid hsl(var(--border));">                .<span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Global</span> = <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">True</span><br style="border: 0px solid hsl(var(--border));">                .MultiLine = <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">True</span><br style="border: 0px solid hsl(var(--border));">                .IgnoreCase = <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">True</span><br style="border: 0px solid hsl(var(--border));">                .Pattern = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"[sS]*?"</span><br style="border: 0px solid hsl(var(--border));">            <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">With</span><br style="border: 0px solid hsl(var(--border));">            response = regex.Replace(response, <span style="color: #abe338; border: 0px solid hsl(var(--border));">""</span>)<br style="border: 0px solid hsl(var(--border));">            response = Replace(response, <span style="color: #abe338; border: 0px solid hsl(var(--border));">"n"</span>, vbCrLf)<br style="border: 0px solid hsl(var(--border));"><br style="border: 0px solid hsl(var(--border));">            <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">With</span> regex<br style="border: 0px solid hsl(var(--border));">                .<span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Global</span> = <span style="color: #f5ab35; border: 0px solid hsl(var(--border));">True</span><br style="border: 0px solid hsl(var(--border));">                .Pattern = <span style="color: #abe338; border: 0px solid hsl(var(--border));">"(#+s*|**|__|`|*{1,2}|_{1,2}|~~|^>s)"</span><br style="border: 0px solid hsl(var(--border));">                response = .Replace(response, <span style="color: #abe338; border: 0px solid hsl(var(--border));">""</span>)<br style="border: 0px solid hsl(var(--border));">            <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">With</span><br style="border: 0px solid hsl(var(--border));">            response = regex.Replace(response, <span style="color: #abe338; border: 0px solid hsl(var(--border));">""</span>)<br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">            Selection.Collapse Direction:=wdCollapseEnd<br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">            Selection.TypeParagraph<br style="border: 0px solid hsl(var(--border));">            Selection.TypeText <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Text</span>:=response<br style="border: 0px solid hsl(var(--border));">           <br style="border: 0px solid hsl(var(--border));">            originalSelection.<span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Select</span><br style="border: 0px solid hsl(var(--border));">        <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Else</span><br style="border: 0px solid hsl(var(--border));">            MsgBox <span style="color: #abe338; border: 0px solid hsl(var(--border));">"Failed to parse API response."</span>, vbExclamation<br style="border: 0px solid hsl(var(--border));">        <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">If</span><br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Else</span><br style="border: 0px solid hsl(var(--border));">        MsgBox response, vbCritical<br style="border: 0px solid hsl(var(--border));">    <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">If</span><br style="border: 0px solid hsl(var(--border));"><span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">End</span> <span style="color: #dcc6e0; border: 0px solid hsl(var(--border));">Sub</span>

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

在下拉列表中找到“宏”,将之前创建的宏模块添加到“开发工具”中。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

WPS + DeepSeek R1

打开WPS,在上层菜单栏中,点击“工具>开发工具”。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

然后点击“切换到 VB 环境”,此时提示加载插件,点击等待插件安装完成。重启 WPS即可。

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

 点击“WPS”宏编辑器,剩下的步骤就和 Word 完全一样了。如果不使用VB,在WPS中也可以使用JavaScript。

引用链接

[1] Ollama使用指南【超全版】: https://www.icnma.com/ollama-tutorial/
[2] Page Assist: https://github.com/n4ze3m/page-assist

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

END

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】

DeepSeek-R1是怎样炼成的?

2025-01-29

DeepSeek超全指南【本地部署、构建知识库、指令技巧、热门客户端】
原创文章。转载请注明: 作者:meixi 网址: https://www.icnma.com
Like (2)
meixi管理
Previous 28/01/2025 19:09
Next 20/01/2025 16:39

猜你想看