【异地访问本地DeepSeek】Flask+内网穿透,轻松实现本地DeepSeek的远程访问
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除!
文章目录
- 前言
- 依赖
- Flask构建本地网页访问
- LM Studio 开启网址访问
- DeepSeek 调用模板
- Flask 访问本地网址
- HTML内容
- 本地推理
- 内网穿透访问
- 总结
- 互动
- 致谢
- 参考
- 往期回顾
前言
在人工智能技术日新月异的今天,DeepSeek作为一款强大的大语言模型,已经在众多领域中展现出其巨大的应用潜力。然而,对于许多用户而言,在本地服务器或者电脑部署DeepSeek,异地如何访问本地资源,成为了一个值得思考的问题。
本文以内网穿透技术实现公网访问,以期为相关从业者或爱好者提供有价值的参考。本地部署DeepSeek,意味着用户可以在自己的服务器上运行这一大语言模型,从而在一定程度上掌控数据的隐私性和安全性。与此同时,通过内网穿透技术,用户还能将本地部署的DeepSeek实例暴露到公网上,实现远程访问和交互。不仅提高了模型的可用性,还为跨地域、跨团队的合作提供了极大的便利。
然而,本地部署和内网穿透并非没有挑战。硬件成本、维护成本、技术门槛以及安全风险等问题,都是用户在决策过程中需要考虑的关键因素。因此,本文旨在全面分析本地部署DeepSeek并通过内网穿透实现公网访问的必要性,帮助用户权衡利弊,做出最适合自己的选择。
依赖
本地部署: 【DeepSeek本地化部署保姆级教程 】
如果需要创建新环境:conda create -n deepseek python=3.7
- Window 11
- Flask
- markdown2
安装: pip install Flask
、pip install markdown2
Flask构建本地网页访问
LM Studio 开启网址访问
确保加载合适的模型(GGUF),然后在开发者选项中确保开启运行,并查看对应的IP和端口,此处http://127.0.0.1:1234
,这个区别于OpenAI。
DeepSeek 调用模板
DeepSeek 调用模板:首次调用 API
# Please install OpenAI SDK first: `pip3 install openai`from openai import OpenAIclient = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "system", "content": "You are a helpful assistant"},{"role": "user", "content": "Hello"},],stream=False
)print(response.choices[0].message.content)
此处提供了OpenAI的调用方式,由于需要api_key显得比较麻烦或者需要付费,因此直接和LM Studio 的本地网址进行访问。
Flask 访问本地网址
通过上述模板构建本地的API,将Flask构建的网页 的输入框的内容传入到messages中,随后将其传入到LM Studio进行推理,将返回的结果进一步展示到Flask构建的对话框中即可。下面是app.py的逻辑:
from flask import Flask, request, jsonify, render_template
import markdown2
import requestsAPI_URL = "http://localhost:1234/v1/chat/completions"headers = {"Content-Type": "application/json"
}app = Flask(__name__, template_folder='templates',)
app.static_folder = 'static'
@app.route('/')
def index():return render_template("index.html")@app.route('/process', methods=['POST'])
def process():data = request.get_json()user_input = data['input']# user_input = request.form['user_input']messages = [{"role": "system", "content": "你是一个优秀的人工智能助手"},{"role": "user", "content": f"{user_input}"},]data = {"model": "DeepSeek/7B/DeepSeek-R1-Distill-Qwen-7B-Q6_K.gguf", # 你的 DeepSeek 模型名称"messages": messages,"stream": False # 关闭流式输出}response = requests.post(API_URL, headers=headers, json=data)if response.status_code == 200:result = response.json()else:print("请求失败:", response.status_code, response.text)# 将用户输入和脚本输出以对话形式返回conversation = [{"user": user_input},{"script": result["choices"][0]["message"]["content"]}]markdown_text = conversation[1]["script"]html_content = markdown2.markdown(markdown_text)response_message = f"DeepSeek: {html_content}"return jsonify({'message': response_message})if __name__ == '__main__':app.run(debug=False)
调试阶段可以使用app.run(debug=True)
,确定后改为False。
HTML内容
HTML可以使用大模型直接输出,下面是一个示范的提示词:
你的任务是使用python、Flask创建一个网页,具体要求如下:
1. 网页需包含两个文本框,一个用于获取用户输入,另一个用于显示Python脚本的返回内容。
2. 输入框需固定于网页中底部并居中,并长度仅为网页宽度50%,发送键位于输入框的右侧,发送键实现将输入框的文本发送给脚本
3. 输出框以对话的形式进行展示,同时位于位于输入框的上方并居中,并长度仅为网页宽度50%,展示用户的输入和脚本的返回内容
4. 网页需要有背景图
5. 只需要一个html和app.py
需要注意,如果无法加载图片,将其放在static文件夹中,配合app.static_folder = 'static'
使用
下面是不断调整后的一个html文件的内容:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Flask DeepSeek</title><style>body {margin: 0;font-family: Arial, sans-serif;background-image: url("../static/back.jpg");background-size: cover;background-position: center;display: flex;flex-direction: column;align-items: center;justify-content: center;height: 100vh;}.container {width: 55%;/*text-align: center;*/background-color: rgba(255, 255, 255, 0.8);padding: 20px;border-radius: 10px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);}.chat-box {height: 400px;overflow-y: auto;border: 1px solid #ccc;padding: 10px;margin-bottom: 10px;}.input-group {display: flex;justify-content: space-between;align-items: center;width: 100%;}.input-group input {width: calc(90% - 10px);padding: 10px;border: 1px solid #ccc;border-radius: 5px;}.input-group button {width: calc(10% - 10px);padding: 10px;border: 1px solid #ccc;border-radius: 10px;background-color: #007bff;}.input-group button:hover {background-color: #0056b3;}</style>
</head>
<body><div class="container"><div class="chat-box" id="chat-box"><!-- 聊天内容将会通过JavaScript动态添加 --></div><div class="input-group"><input type="text" id="user-input" placeholder="输入你的消息..."><button onclick="sendMessage()">发送</button></div></div><script>function appendMessage(message, isUser) {const chatBox = document.getElementById('chat-box');const messageElement = document.createElement('div');messageElement.textContent = message;messageElement.style.color = isUser ? 'blue' : 'black';messageElement.style.padding = '5px';messageElement.style.borderBottom = '1px solid #ccc';chatBox.appendChild(messageElement);chatBox.scrollTop = chatBox.scrollHeight;}function sendMessage() {const userInput = '用户:' + document.getElementById('user-input').value;if (userInput.trim() !== '') {const xhr = new XMLHttpRequest();xhr.open('POST', '/process', true);xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {const response = JSON.parse(xhr.responseText);appendMessage(userInput, true);appendMessage(response.message, false);document.getElementById('user-input').value = '';}};xhr.send(JSON.stringify({ input: userInput }));}}</script>
</body>
</html>
网页的结构如下:
本地推理
在输入框中输入问题后发送,获取7B模型的返回值,网址:http://127.0.0.1:5000
,结果如下
LM Studio中的记录如下:
2025-02-28 23:04:32 [INFO]
[LM STUDIO SERVER] Running chat completion on conversation with 2 messages.
2025-02-28 23:04:33 [INFO]
[LM STUDIO SERVER] Accumulating tokens ... (stream = false)
2025-02-28 23:05:33 [INFO]
[LM STUDIO SERVER] [7b] Generated prediction: {"id": "chatcmpl-cc7tk9bfa4b9gb6mhlztg","object": "chat.completion","created": 1740755072,"model": "7b","choices": [{"index": 0,"logprobs": null,"finish_reason": "stop","message": {"role": "assistant","content": "<think>\n好,我现在要介绍重庆。首先,重庆是一个直辖市,在中国南方,连接长江和嘉陵江。地理位置优越,是长江经济带的重要城市。\n\n重庆有很多景点,比如洪崖洞、解放碑、长江索道等,这些都是游客必去的地方。还有火锅和川菜非常有名,尤其是磁器口古镇里的小吃,可以品尝到地道的重庆味道。\n\n重庆的地形多样,既有 flat 的地区,也有山和江。著名的龙舟峡和武隆喀斯特地貌吸引了不少游客。\n\n重庆是一个比较开放的城市,经济繁荣,而且语言相对通用,这对于国际交流很有帮助。\n\n交通方面,重庆有便捷的高铁、地铁和轻轨系统,方便游客出行。\n\n气候温暖湿润,四季分明,适合各种活动。\n\n最后,重庆不仅是一个旅游胜地,也是一座充满活力的城市,有很多现代化的设施和文化活动。总的来说,重庆是一个值得一游的地方。\n</think>\n\n当然!重庆是中国的一个直辖市,位于中国南方,具体位置是在重庆市,地处长江与嘉陵江之间。以下是关于重庆的一些详细介绍:\n\n### 1. **地理位置**\n - 重庆是中国南方的交通枢纽之一,连接长江和嘉陵江。\n - 地处长江经济带中心地带,具有重要的战略地位。\n\n### 2. **景点与文化**\n - **洪崖洞**:以吊脚楼建筑和夜景闻名,是重庆的标志性景点。\n - **解放碑**:重庆的商业中心之一,拥有众多店铺和商业娱乐设施。\n - **长江索道**:横跨长江的空中交通工具,提供壮丽的景色观赏。\n - **磁器口古镇**:以美食和传统手工艺品闻名,是品尝重庆火锅和了解当地文化的好去处。\n\n### 3. **美食**\n - 重庆火锅是中国最著名的火锅之一,以其麻辣鲜香著称。\n - 其他特色美食包括小面、酸辣粉、毛血旺等。\n\n### 4. **地形与气候**\n - 重庆地形多样,既有平坦的地区,也有山脉和河流。武隆喀斯特地貌是世界自然遗产之一。\n - 气候温暖湿润,四季分明,雨量充沛。\n\n### 5. **经济与开放**\n - 作为直辖市,重庆在西南地区的经济发展中占有重要地位。\n - 外贸中心之一,拥有较为自由的市场准入政策。\n\n### 6. **交通**\n - 运输系统完善,包括高铁、地铁和轻轨,方便游客出行。\n - 公共交通发达,覆盖范围广。\n\n### 7. **语言与文化**\n - 汉语以外的主要少数民族有苗族、汉族、土家族等,多元文化交融显著。\n\n总的来说,重庆是一个历史悠久、风景优美且充满活力的城市。无论是自然风光、美食文化还是历史遗迹,都让人流连忘返。"}}],"usage": {"prompt_tokens": 15,"completion_tokens": 601,"total_tokens": 616},"stats": {},"system_fingerprint": "7b"
}
内网穿透访问
内网穿透工具较多,此处使用花生壳为例子。
- 登录后,选择内网穿透
- 选择添加映射
- 填写映射信息
-
查看公网网址
-
公网访问
总结
总结: 为了方便本地化部署后,异地调用本地模型进行推理,可以按照以下步骤操作:
- 基础环境:在LM Studio官网下载并运行对应的GGUF模型,以及安装对应的python包。
- Flask构建网页:Flask结合LM Studio的端口和HTML构建网页,实现网页对话。
- 内网穿透:通过花生壳将Flask所开放的端口进行映射,实现异地访问本地的模型。
互动
- 你觉得上述内容对你有帮助吗?`
欢迎在评论区解答上述问题,分享你的经验和疑问!
当然,也欢迎一键三连给我鼓励和支持:👍点赞 📁 关注 💬评论。
致谢
欲尽善本文,因所视短浅,怎奈所书皆是瞽言蒭议。行文至此,诚向予助与余者致以谢意。
参考
[1] DeepSeek API 文档
往期回顾
![]() 👆 DeepSeek本地化部署保姆级教程👆 | ![]() 👆 EfficientTrain++帮你降低网络训练的成本👆 | ![]() 👆 PyCharm环境下Git与Gitee联动👆 |
![]() 👆 Ping通但SSH连接失败的解决办法👆 | ![]() 👆 轻量化设计如何提高模型的推理速度👆 | ![]() 👆 正则化与正则剪枝👆 |
相关文章:

【异地访问本地DeepSeek】Flask+内网穿透,轻松实现本地DeepSeek的远程访问
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言依赖Flask构建本地网页访问LM Studio 开启网址访问DeepSeek 调用模板Flask 访问本…...

Nacos + Dubbo3 实现微服务的Rpc调用
文章目录 概念整理基本概念概念助记前提RPC与HTTP类比RPC接口类的一些理解 实例代码主体结构父项目公共接口项目提供者项目项目结构POM文件实现配置文件实现公共接口实现程序入口配置启动项目检查是否可以注入到Nacos 消费者项目项目结构POM文件实现配置文件实现注册RPC服务类实…...

散户如何实现自动化交易下单——篇1:体系介绍与获取同花顺资金账户和持仓信息
一、为什么要实现自动化交易 在瞬息万变的金融市场中,越来越多的散户投资者开始尝试构建自己的交易策略:有人通过技术指标捕捉趋势突破,有人利用基本面分析挖掘低估标的,还有人设计出复杂的网格交易或均值回归模型。然而&a…...

基于Electron的应用程序安全测试基础 — 提取和分析.asar文件的案例研究
目录: 4.4. 案例研究 4.4.2. 情况描述 4.4.3. 信息收集 4.4.3.2. 检查隐藏目录(点目录)的可能性 4.4.3.3. 使用 DB Browser for SQLite 打开 .db 文件 4.4.3.4. 寻找加密算法 4.4.3.5. 找到加密算法 4.4.3.6. 理解加密流程 4.4.3.7. 找到“Ke…...
vue中computed方法使用;computed返回函数
文章目录 1.正常使用computed2.使用computed返回可传参的函数 1.正常使用computed 一般我们使用computed返回一个变量字段,这个字段会根据具体的某个变量计算得到 例如 <div>{{num}}--{{num10}}</div>let num ref(1) let num10 computed(()>{ret…...
大语言模型的评测
大语言模型评测是评估这些模型在各种任务和场景下的性能和能力的过程。 能力 1. 基准测试(Benchmarking) GLUE(General Language Understanding Evaluation):包含多个自然语言处理任务,如文本分类、情感分…...

【Vue3】浅谈setup语法糖
Vue3 的 setup 语法糖是通过 <script setup> 标签启用的特性,它是对 Composition API 的进一步封装,旨在简化组件的声明式写法,同时保留 Composition API 的逻辑组织能力。以下是其核心概念和原理分析: 一、<script setu…...

EasyRTC嵌入式WebRTC技术与AI大模型结合:从ICE框架优化到AI推理
实时通信技术在现代社会中扮演着越来越重要的角色,从视频会议到在线教育,再到远程医疗,其应用场景不断拓展。WebRTC作为一项开源项目,为浏览器和移动应用提供了便捷的实时通信能力。而EasyRTC作为基于WebRTC的嵌入式解决方案&…...
如何管理路由器
一、管理路由器的必要性 1、需要修改拨号上网的密码。 2、需要修改WIFI的SSID名字和密码。 3、设置DHCP协议信息。 4、设置IP地址的过滤规则。 5、给某个设备连接设置网络限速。 二、常见的方式 (一)web网页方式 1、计算机用双绞线或者WIFI的方式连接路由器。 2、在计算机中打开…...

【NTN 卫星通信】低轨卫星通信需要解决的关键问题
1 低轨卫星通信需要考虑的关键问题 3GPP在开始阶段对低轨卫星通信需要面对的关键问题对架构的影响进行了探讨,主要在协议23.737中,我们来看看有哪些内容吧。 2 关键问题讨论 2.1 大型卫星覆盖区域的移动性管理 PLMN的覆盖区域受到HPLMN母国监管机构的限…...
DOM HTML:深入理解与高效运用
DOM HTML:深入理解与高效运用 引言 随着互联网的飞速发展,前端技术逐渐成为软件开发中的关键部分。DOM(文档对象模型)和HTML(超文本标记语言)是前端开发中的基石。本文将深入探讨DOM和HTML的概念、特性以及在实际开发中的应用,帮助读者更好地理解和使用这两项技术。 …...
如何进行OceanBase 运维工具的部署和表性能优化
本文来自OceanBase 用户的实践分享 随着OceanBase数据库应用的日益深入,数据量不断攀升,单个表中存储数百万乃至数千万条数据的情况变得愈发普遍。因此,部署专门的运维工具、实施针对性的表性能优化策略,以及加强指标监测工作&…...

docker简介-学习与参考
docker Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱…...
AcWing 蓝桥杯集训·每日一题2025·密接牛追踪2
密接牛追踪2 农夫约翰有 N 头奶牛排成一排,从左到右依次编号为 1∼N。 不幸的是,有一种传染病正在蔓延。 最开始时,只有一部分奶牛受到感染。 每经过一个晚上,受感染的牛就会将病毒传染给它左右两侧的牛(如果有的话…...
LeetCode 每日一题 2025/2/24-2025/3/2
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/24 1656. 设计有序流2/25 2502. 设计内存分配器2/26 1472. 设计浏览器历史记录2/27 2296. 设计一个文本编辑器2/28 2353. 设计食物评分系统3/1 131. 分割回文串3/2 132. …...

TeX Live 2025 最新版安装与中文环境配置全教程(Windows/Mac/Linux)
一、软件定位与特性 TeX Live 是由国际TeX用户组(TUG)维护的跨平台专业排版系统,支持LaTeX、XeLaTeX等多种排版引擎,广泛应用于学术论文、书籍出版等领域。2025版核心升级: 智能编译:自动检测编码错误并提…...

Android实现漂亮的波纹动画
Android实现漂亮的波纹动画 本文章讲述如何使用二维画布canvas和camera、矩阵实现二、三维波纹动画效果(波纹大小变化、画笔透明度变化、画笔粗细变化) 一、UI界面 界面主要分为三部分 第一部分:输入框,根据输入x轴、Y轴、Z轴倾…...
JAVA学习笔记038——bean的概念和常见注解标注
什么是bean? Bean 就是 被 Spring 管理的对象,就像工厂流水线上生产的“标准产品”。这些对象不是你自己 new 出来的,而是由 Spring 容器(一个超级工厂)帮你创建、组装、管理。 由 Component、Service、Controller 等注解标记的…...
自然语言处理NLP入门 -- 第十节NLP 实战项目 2: 简单的聊天机器人
一、为什么要做聊天机器人? 在互联网时代,我们日常接触到的“在线客服”“自动问答”等,大多是以聊天机器人的形式出现。它能帮我们快速回复常见问题,让用户获得及时的帮助,并在一定程度上减少人工客服的压力。 同时&…...
【网络安全 | 渗透工具】小程序反编译分析源码 | 图文教程
未经许可,禁止转载。 本文仅供学习使用,严禁用于非法渗透测试,笔者不承担任何责任。 文章目录 1、下载Proxifier2、下载反编译工具unveilr3、寻找小程序文件包4、对文件包进行反编译5、对源码进行分析6、渗透思路6.1、查找敏感信息泄露6.2、解析加解密逻辑6.3、枚举 API 接口…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...