AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)
1.本地部署
1.1 ollama
Ollama软件通过其高度优化的推理引擎和先进的内存管理机制,显著提升了大型语言模型在本地设备上的运行效率。其核心采用了量化技术(Quantization)以降低模型的计算复杂度和存储需求,同时结合张量并行计算(Tensor Parallelism)和混合精度计算(Mixed Precision Computing),在FP16、INT8等低精度格式下实现高效的数值运算,从而大幅减少显存占用并加速推理过程。此外,Ollama支持动态批处理(Dynamic Batching)和分布式推理(Distributed Inference),能够根据输入请求动态调整资源分配,并通过多GPU或节点间的高效通信协议(如NCCL)实现弹性扩展,突破单机硬件限制。为确保兼容性,Ollama内置了对主流框架(如PyTorch、TensorFlow)的支持,并通过ONNX Runtime和TensorRT进一步优化模型性能,同时提供灵活的API接口和模块化设计,允许用户进行自定义微调(Fine-tuning)和Prompt工程,满足多样化应用场景需求。
1.1.1 下载安装
https://ollama.com/download
双击打开安装,ollama默认只能安装在C盘,占用:4.6G 空间。
C:\用户\用户名称\AppData\Local\Programs\Ollama
我的电脑中安装目录:C:\Users\Administrator\AppData\Local\Programs\Ollama
1.1.2 环境变量
默认ollama去下载部署deepseek模型时,会放在C盘 C:\Users\Administrator\.ollama\models
文件夹中。修改环境变量,可以让后续模型下载到其他盘符。
OLLAMA_MODELS D:\ollama\models
配置好之后,ollama重启 或 重启电脑 让环境变量生效。
1.2 deepseek部署
https://ollama.com/library/deepseek-r1
根据自己电脑配置部署模型规模
模型规模 | 硬盘 | 显存需求 | 内存 | 显卡要求 |
---|---|---|---|---|
1.5B | 1.1 GB | ~2-3 GB | ~4-6 GB | 单卡(RTX 3060/3090/4090) |
7B | 4.7 GB | ~8-12 GB | ~16-24 GB | 单卡(RTX 3090/4090/A100) |
8B | 4.9 GB | ~9-13 GB | ~18-26 GB | 单卡(RTX 3090/4090/A100) |
14B | 9.0 GB | ~16-20 GB | ~32-40 GB | 单卡(A100 40GB) |
32B | 20 GB | ~35-45 GB | ~70-90 GB | 单卡(A100 80GB)或多卡并行 |
70B | 43 GB | ~75-90 GB | ~150-180 GB | 多卡(A100/H100 + NVLink) |
671B | 404 GB | ~700-900 GB | ~1.4-1.8 TB | 多卡集群(A100/H100 + NVLink) |
执行命令本地部署:
ollama run deepseek-r1:1.5b
2.deepseek调用
ollama中的服务可以用两种方式启动,默认监听本机localhost 和 端口11434
- 在终端执行命令: ollama serve
- 找到ollama图标,点击运行
2.1 终端调用
C:\Users\Administrator>ollama list
NAME ID SIZE MODIFIED
deepseek-r1:1.5b a42b25d8c10a 1.1 GB 4 hours ago
C:\Users\Administrator>ollama run deepseek-r1:1.5b
>>>
>>> 学习python的路径?
<think>
好吧,我现在要学习Python了。我对它还不是很了解,所以得一步一步来。首先,我应该确定我的学习目标是什么。可能是从基础开始,比如语
法和基本概念,然后逐步深入到更高级的内容。
...
>>> /bye
2.2 API调用
对话相关的API有两个:
- /api/generate,用于一次性生成特定文本的场景。
- /api/chat,针对多轮对话上下文生成的回复消息。
接下来,结合案例来使用API来调用,需要安装Python环境 和 requests 模块。
示例:/api/generate
该 API 主要用于基于给定的提示信息生成文本内容。它适用于一次性生成特定文本的场景,不涉及对话上下文的维护.请求参数model:要使用的模型名称,例如 `deepseek-r1:1.5b`。prompt:提示信息,即向模型提供的输入文本,模型会根据该提示生成相应的内容。可选参数:还可以包含其他参数来控制生成的行为,如 `temperature`(控制生成文本的随机性,值越大越随机)、`max_tokens`(限制生成文本的最大令牌数)等。示例请求体{"model": "llama2","prompt": "写一首关于春天的诗","temperature": 0.7,"max_tokens": 200}
import requestsres = requests.post(url="http://localhost:11434/api/generate",json={"model": "deepseek-r1:1.5b","prompt": "写一首关于春天的诗","stream": False}
)data_dict = res.json()
print(data_dict)
示例:/api/chat
用于模拟对话交互,它会维护对话的上下文,使得模型能够根据之前的对话内容生成合适的回复,实现更自然、连贯的对话效果。请求参数model:要使用的模型名称。messages:一个包含对话消息的列表,每个消息对象包含 role(角色,如 user 表示用户消息,assistant 表示模型回复)和 content(消息内容)。同样可以包含可选参数来控制生成行为。示例请求体{"model": "deepseek-r1:1.5b","messages": [{"role": "user","content": "你好"}],"temperature": 0.8}
import requestsres = requests.post(url="http://localhost:11434/api/chat",json={"model": "deepseek-r1:1.5b","messages": [{"role": "user", "content": "你好"}],"stream": False}
)
data_dict = res.json()
print(data_dict)
可以将对话保存下来,生成对话:
import requestsmessage_list = []while True:text = input("请输入:")user_dict = {"role": "user", "content": text}message_list.append(user_dict)res = requests.post(url="http://localhost:11434/api/chat",json={"model": "deepseek-r1:1.5b","messages": message_list,"stream": False})data_dict = res.json()res_msg_dict = data_dict['message']print(res_msg_dict)message_list.append(res_msg_dict)
2.3 网页交互
搭建一个网站,在内部进行访问使用。
第1步:电脑安装nodejs
https://nodejs.org/zh-cn/download
第2步:下载网站源码
https://github.com/ollama-webui/ollama-webui-lite
下载并解压至任意目录。例如:F:\ollama-webui-lite-main 【不要有中文路径】
第3步:安装依赖并启动网站
打开CMD终端进入项目目录并执行相关命令。
C:\Users\Administrator>F:
F:\>cd F:\ollama-webui-lite-main
F:\ollama-webui-lite-main>
F:\ollama-webui-lite-main>npm ci
F:\ollama-webui-lite-main>npm run dev -- --port=9001
访问网站:http://localhost:9001/
3.微信收发信息
wxauto 是一个基于UIAutomation开发的用于实现微信自动化得库。
消息发送:支持发送文字、图片、文件、@群好友、引用消息等功能
聊天记录:可获取好友的聊天记录内容
监听消息:实时获取指定监听好友(群)的新消息
所用开发环境:Python 3.12.6 + PC微信 3.9.12(目前最新)
实现原理:在电脑安装PC微信,基于wxauto自动控制微信界面来实现收发消息等功能。
安装wxauto
pip install wxauto==3.9.11.17.5
发消息
from wxauto import WeChat
wx = WeChat()
wx.SendMsg(msg="你好呀", who="xxx_888") # 指定人/群发消息# wx.SendMsg(msg="你好呀", who="群名", at=["张三","张开"]) # 群消息+@指定人
# wx.SendMsg(filepath="F:\xxx.png", who="用户或群")
# wx.SendMsg(filepath=["文件A","文件B","F:\xxx.png"], who="用户或群")
收消息(所有)
from wxauto import WeChatwx = WeChat()while True:# 等待接受收到的最新消息# {"用户昵称A":[消息对象1,消息对象2,消息对象3], "用户昵称B":[消息对象1,消息对象2,消息对象3], }msg_dict = wx.GetNextNewMessage()for username, msg_list in msg_dict.items():print("昵称:", username)# [消息对象1, 消息对象2, 消息对象3]for msg in msg_list:print("\t消息", msg.type, msg.content)
收消息(指定用户)
from wxauto import WeChat
wx = WeChat()wx.AddListenChat(who="运营")
wx.AddListenChat(who="xxx_888")while True:# { "用户A聊天窗口":[消息对象1,消息对象2,消息对象3], "用户B聊天窗口":[消息对象1,消息对象2,消息对象3]}listen_dict = wx.GetListenMessage()for chat_win,message_list in listen_dict.items():# 用户或群名chat_user = chat_win.who# [消息对象1,消息对象2,消息对象3]for msg in message_list:if msg.type != "friend":continueprint(chat_user, msg.content)# 回复消息# chat_win.SendMsg("回复的内容")time.sleep(5)
👏欢迎贡献代码和改进项目!
相关文章:

AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)
1.本地部署 1.1 ollama Ollama软件通过其高度优化的推理引擎和先进的内存管理机制,显著提升了大型语言模型在本地设备上的运行效率。其核心采用了量化技术(Quantization)以降低模型的计算复杂度和存储需求,同时结合张量并行计算&…...
Host文件没有配置ip解析,导致请求接口速度慢
Linux访问第三方接口速度慢 现象 在测试环境,Linux的服务器中,要访问第三方接口;速度有时快,有时慢。 有时候第一次访问比较慢,第二次访问比较快。第三方人员,排查之后,第三方接口没有问题&am…...

excel导入Mysql中时间格式异常
问题描述: 当使用xls/xlsx/csv导入mysql中,如果列是时间类型比如excel表中显示2024/02/20 09:18:00,导入后时间可能就会变成1900-01-01 09:18:00这样。 问题原因: 这是由于excel表中和数据库中的时间类型不匹配导致。 问题解决…...
vue 判断一个属性值,如果是null或者空字符串或者是空格没有值的情况下,赋值为--
在 Vue 中,可以通过多种方式来判断一个属性值是否为 null、空字符串或者仅包含空格,如果满足这些条件则将其赋值为 --。下面分别介绍在模板和计算属性、方法中实现的具体做法。 1. 在模板中直接判断 如果只需要在模板中对属性值进行显示处理,…...

JavaWeb-Tomcat服务器
文章目录 Web服务器存在的意义关于Web服务器软件Tomcat服务器简介安装Tomcat服务器Tomcat服务器源文件解析配置Tomcat的环境变量启动Tomcat服务器一个最简单的webapp(不涉及Java) Web服务器存在的意义 我们之前介绍过Web服务器进行通信的原理, 但是我们当时忘记了一点, 服务器…...
vue语法---样式操作-行内样式
文章目录 直接写死的行内样式v-bind绑定对象(静态样式)对象数组 直接写死的行内样式 <template><div v-bind:style"{color:red}">睡觉</div> </template><script>export default{data() {return {}},methods:{}, mounted(){},} </…...
封装一个echarts的组件
父组件页面 <yyjlchartv-if"showyyjl"chartId"yyjllLine":sourceData"sourceDatayyjl":options"optionsyyjl"></yyjlchart>components: {LineEcharts,yyjlchart: () > import("../yyjlchart"),},data() {re…...

计算机网络安全之一:网络安全概述
1.1 网络安全的内涵 随着计算机和网络技术的迅猛发展和广泛普及,越来越多的企业将经营的各种业务建立在Internet/Intranet环境中。于是,支持E-mail、文件共享、即时消息传送的消息和协作服务器成为当今商业社会中的极重要的IT基础设施。然而࿰…...
Linux 性能调优简单指南
一、性能调优概述 Linux 性能调优是系统运维的核心任务之一,目的是通过资源分配、参数优化和瓶颈消除,提升系统运行效率和稳定性。调优需遵循以下原则: 基于数据驱动:使用监控工具精准定位瓶颈分层逐级分析:从硬件到应用的逐层排查变更可回溯:单变量调整并记录结果场景适…...
第十一章: vue2-3 生命周期
创建 挂载 更新 销毁 四个阶段 > 生命周期函数 生命周期钩子 created mounted 创建vue2 的脚手架: vue create vue2_test v-show"isShow" v-if "isShow" 这里的isShow 表示一个函数 let isShow "true" <tem…...

【算法基础】--前缀和
前缀和 一、一维前缀和示例模板[寻找数组的中心下标 ](https://leetcode.cn/problems/tvdfij/description/)除自身以外的数组乘积和可被k整除的子数组 一、一维前缀和 前缀和就是快速求出数组某一个连续区间内所有元素的和。 示例模板 已知一个数组arr,求前缀和 …...

输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE 项目-全局模糊检索
后端数据代码写于下一篇:输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路 【效果图】:分组展示选项 【去界面操作感受一下】—> 便捷简洁的企业官网 【录制效…...

Web入侵实战分析-常见web攻击类应急处置实验2
场景说明 某天运维人员,发现运维的公司站点被黑页,首页标题被篡改,你获得的信息如下: 操作系统:windows server 2008 R2业务:公司官网网站架构:通过phpstudy运行apache mysqlphp开放端口&…...
DeepSeek:AI商业化的新引擎与未来蓝图
摘要 在人工智能迅猛发展的浪潮中,DeepSeek以其卓越的技术实力和高超的商业化能力崭露头角。作为一款现象级AI产品,它不仅在算法性能上位居行业前列,还通过灵活的定制解决方案渗透到金融、医疗、零售等多个领域。DeepSeek以创新的商业模式和场…...

从零开始学习PX4源码9(部署px4源码到gitee)
目录 文章目录 目录摘要1.gitee上创建仓库1.1 gitee上创建仓库PX4代码仓库1.2 gitee上创建子仓库2.固件在gitee部署过程2.1下载固件到本地2.2切换本地分支2.3修改.gitmodules内容2.4同步子模块仓库地址2.5同步子模块仓库地址更新(下载)子模块3.一级子模块和二级子模块的映射关…...

wps中zotero插件消失,解决每次都需要重新开问题
参考 查看zotero目录 D:\zotero\integration\word-for-windows 加载项点击 dotm即可 长期解决 把dom 复制到 C:\Users\89735\AppData\Roaming\kingsoft\office6\templates\wps\zh_CN还是每次都需要重新开的话 重新加载一下...
【Python 语法】collections 模块的字典类 defaultdict
默认字典 (defaultdict) 的语法defaultdict 的常见应用场景1. 计数2. 分组3. 嵌套字典 defaultdict 是 Python 中 collections 模块提供的一个字典类,它和普通字典( dict)的主要区别在于 提供了一个默认值,可以避免在访问字典中…...
《论系统需求分析方法》写作心得 - 系统分析师
系统需求分析方法论述 一、项目概述及本人职责 本人曾参与一项企业级客户关系管理系统(CRM)的开发项目,担任系统分析师的角色。该项目旨在为企业提供一个集客户信息管理、销售过程跟踪、客户服务支持于一体的综合管理平台,以提升…...

Jupyter里面的manim编程学习
1.Jupyterlab的使用 因为我之前一直都是使用的vscode进行manim编程的,但是今天看的这个教程使用的是Jupyter,我也很是好奇这个manim在Jupyter这样的交互式下面会生成怎么样的效果,所以今天尝试了jupyter,并且对于两个进行比较和说…...

Python之装饰器二 带参数的装饰器
前言一、带参数的装饰器二、在装饰器里面传入参数总结 前言 暂无 一、带参数的装饰器 我们知道,不带参数的装饰其实就是在函数的头上添加装饰器时放一个名称,这种写法就默认了装饰器函数调的是被装饰函数自己,换句话说就是,大家…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...

小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...

Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...