AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)

news/2025/2/22 0:10:33/

1.本地部署

1.1 ollama

Ollama软件通过其高度优化的推理引擎和先进的内存管理机制,显著提升了大型语言模型在本地设备上的运行效率。其核心采用了量化技术(Quantization)以降低模型的计算复杂度和存储需求,同时结合张量并行计算(Tensor Parallelism)混合精度计算(Mixed Precision Computing),在FP16、INT8等低精度格式下实现高效的数值运算,从而大幅减少显存占用并加速推理过程。此外,Ollama支持动态批处理(Dynamic Batching)分布式推理(Distributed Inference),能够根据输入请求动态调整资源分配,并通过多GPU或节点间的高效通信协议(如NCCL)实现弹性扩展,突破单机硬件限制。为确保兼容性,Ollama内置了对主流框架(如PyTorch、TensorFlow)的支持,并通过ONNX RuntimeTensorRT进一步优化模型性能,同时提供灵活的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.5B1.1 GB~2-3 GB~4-6 GB单卡(RTX 3060/3090/4090)
7B4.7 GB~8-12 GB~16-24 GB单卡(RTX 3090/4090/A100)
8B4.9 GB~9-13 GB~18-26 GB单卡(RTX 3090/4090/A100)
14B9.0 GB~16-20 GB~32-40 GB单卡(A100 40GB)
32B20 GB~35-45 GB~70-90 GB单卡(A100 80GB)或多卡并行
70B43 GB~75-90 GB~150-180 GB多卡(A100/H100 + NVLink)
671B404 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)

👏欢迎贡献代码和改进项目!


http://www.ppmy.cn/news/1574010.html

相关文章

企业软件合规性管理:构建高效、安全的软件资产生态

引言 在数字化转型的浪潮下&#xff0c;企业的软件使用方式日益多元化&#xff0c;涉及云端、订阅制、永久授权及浮动许可等多种模式。然而&#xff0c;随着软件资产的增多&#xff0c;企业面临着合规性管理的严峻挑战&#xff1a;非法软件使用、许可证管理不当、软件资产闲置…

Sphinx和Read the Docs快速生成多语言版本的文档

下面是调整后的默认语言为简体中文&#xff0c;并添加英文翻译的具体操作步骤&#xff1a; 一、Sphinx本地配置调整 修改conf.py 将默认语言设置为中文&#xff0c;并声明支持英文&#xff1a; language zh_CN # 默认语言改为中文 locale_dirs [locale/] # 翻译文件目录不变…

qt + opengl 给立方体增加阴影

在前几篇文章里面学会了通过opengl实现一个立方体&#xff0c;那么这篇我们来学习光照。 风氏光照模型的主要结构由3个分量组成&#xff1a;环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了这些光照分量看起来的样子&#xff1a; 1 环境光照(Ambient …

PHP日期和时间Date()函数获取当前时间

在PHP编程中&#xff0c;获取当前日期和时间是一项基本而又频繁的操作&#xff0c;这一任务可以通过内建的 date()函数轻松实现。此函数不仅灵活多变&#xff0c;还支持多种日期和时间格式化选项&#xff0c;使得开发者能够根据具体需求定制输出格式。以下是对 date()函数及其在…

AI写作智能平台:AnKoAI如何改变创作领域!

AI写作智能平台&#xff1a;AnKoAI如何改变创作领域&#xff01; AI写作智能平台正逐渐成为各类创作者的重要工具。AnKo AI创作平台&#xff0c;以其强大的功能和多模型聚合工具引起了广泛关注。AnKo将探讨AI写作智能平台如何提升创作效率&#xff0c;以及AnKo在2025年的发展潜…

MATLAB算法实战应用案例精讲-【数模应用】空间插值(附MATLAB、R语言和python代码实现)

目录 前言 算法原理 什么是插值? 为什么要插值? 常见插值方法 插值方法选择 GIS中常用的空间分析方法 一、空间插值 二、缓冲区分析 三、空间统计 四、领域分析 五、网络分析 六、多标准决策 插值分析 插值应用示例 空间插值的类型 不同工具箱中的空间插值工…

鱼皮面试鸭30天后端面试营

day1 1. MySQL的索引类型有哪些? MySQL里的索引就像是书的目录&#xff0c;能帮数据库快速找到你要的数据。以下是各种索引类型的通俗解释&#xff1a; 按数据结构分 B树索引&#xff1a;最常用的一种&#xff0c;数据像在一棵树上分层存放&#xff0c;能快速定位范围数据…

leetcode_位运算 190.颠倒二进制位

190. 颠倒二进制位 颠倒给定的 32 位无符号整数的二进制位。 1. 字符串 class Solution:# param n, an integer# return an integerdef reverseBits(self, n):res "" # 创建一个保存结果的空字符串for b in str(bin(n))[2:]:# 遍历n的二进制数res b res # 把每…