deepseek本地调用

news/2025/2/22 11:07:50/

目录

1.介绍

2.开始调用

2.1模型检验

 2.2 通过url调用

3.总结


1.介绍

这篇博客用来教你如何从本地调用ollama中deepseek的模型接口,直接和deepseek进行对话。

2.开始调用

2.1模型检验

首先要保证ollama已经安装到本地,并且已经下载了deepseek模型。可以使用下面的命令检验:

ollama list

 2.2使用subprocess

使用subprocess直接与模型进行对话,使用ollama命令中的pullrun选项来调用模型。

import subprocessdef ollama_deepseek_conversation(prompt):try:# 通过命令行使用 ollama run deepseek-r1:7b 模型,注意这里的模型名字,可以使用ollama list可以看见模型名字result = subprocess.run(['ollama', 'run', 'deepseek-r1:7b'], input=prompt,stdout=subprocess.PIPE, text=True)# 获取模型响应并返回return result.stdout.strip()except Exception as e:return f"Error occurred: {e}"if __name__ == "__main__":print("开始对话,输入'quit'退出")while True:# 获取用户输入user_input = input("你: ")if user_input.lower() == 'quit':print("对话结束")break# 调用deepseek模型获取响应response = ollama_deepseek_conversation(user_input)print(f"deepseek: {response}")

 

 2.2 通过url调用

1.创建一个本地的服务来将命令行调用转化为 REST API 请求

from flask import Flask, request, jsonify
import subprocessapp = Flask(__name__)# 定义一个路由来处理POST请求
@app.route('/deepseek', methods=['POST'])
def deepseek_conversation():data = request.get_json()  # 获取用户的 JSON 输入prompt = data.get('prompt', '')  # 从 JSON 中获取 'prompt'try:# 运行 ollama 命令并将用户输入传给 deepseek-r1:7bresult = subprocess.run(['ollama', 'run', 'deepseek-r1:7b'], input=prompt,stdout=subprocess.PIPE, text=True)# 获取模型的响应response = result.stdout.strip()return jsonify({"response": response})  # 返回 JSON 格式的响应except Exception as e:return jsonify({"error": str(e)}), 500  # 捕获错误并返回500状态码if __name__ == "__main__":app.run(host="0.0.0.0", port=5000)  # 启动 Flask 服务,监听5000端口

2.使用 requests 库来向这个本地服务发送 HTTP 请求,并获得 deepseek 模型的响应。

import requestsdef ollama_deepseek_conversation(prompt):try:url = "http://localhost:5000/deepseek"  # Flask API 地址response = requests.post(url, json={"prompt": prompt})  # 发送 POST 请求if response.status_code == 200:return response.json().get("response", "无响应")  # 解析返回的 JSON 数据else:return f"Error: {response.status_code} {response.text}"except Exception as e:return f"Error occurred: {e}"if __name__ == "__main__":print("开始对话,输入'quit'退出")while True:user_input = input("你: ")if user_input.lower() == 'quit':print("对话结束")break# 调用 deepseek 模型并获取响应response = ollama_deepseek_conversation(user_input)print(f"deepseek: {response}")

3.总结

和deepseek对话,可行的方式不仅仅只有命令窗口或webui等等,还可以使用url调用,这样一来,你就可以使用一些硬件接入deepseek(例如使用ESP32接入自己的本地deepseek制作一个本地聊天机器人)。

希望这一片博客可以为你的思路提供新的参考。


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

相关文章

Dify怎么创建数据交易的智能体

Dify怎么创建数据交易的智能体 Dify是一个低代码AI应用开发平台,能帮助你快速创建智能体。以下是使用Dify创建一个数据定价智能体的大致步骤和示例: 1. 注册与登录 首先,访问Dify官网(https://dify.ai/ ),完成注册并登录到你的账号。 2. 创建新项目 登录后,点击创建…

CSS定位全解析:position属性详解与应用场景

在网页布局中,CSS定位是实现元素精准控制的关键技术之一。通过position属性,我们可以将元素放置在页面的任何位置,并控制其相对于其他元素的行为。本文将深入解析position属性的各个取值及其应用场景,帮助你掌握CSS定位的精髓。 …

Springboot应用开发工具类整理

目录 一、编写目的 二、映射工具类 2.1 依赖 2.2 代码 三、日期格式 3.1 依赖 3.2 代码 四、加密 4.1 代码 五、Http请求 5.1 依赖 5.2 代码 六、金额 6.1?代码 七、二维码 7.1 依赖 7.2 代码 八、坐标转换 8.1 代码 九、树结构 9.1?代码 9.1.1 节点 …

RV1126解码—ffmpeg_read_thread线程的讲解

fmpeg_read_thread线程的用处 解码这一块,在第一篇的时候就看到了,有三个线程,这篇先介绍一个线程的作用是怎么样的。 ffmpeg_read_thread线程的主要作用是读取每一帧流媒体文件,这个流媒体文件可以是复合流文件。如:T…

工控自动化领域:数字量信号与模拟量信号的差异解析

在工控自动化的神秘世界里,信号如同传递指令和信息的使者,而数字量信号和模拟量信号则是其中的两大主角。它们各自有着独特的 “性格” 和 “使命”,在不同的场景中发挥着关键作用。下面,就让我们一起来深入了解一下它们的区别。 …

以ChatGPT为例解析大模型背后的技术

目录 1、大模型分类 2、为什么自然语言处理可计算? 2.1、One-hot分类编码(传统词表示方法) 2.2、词向量 3、Transformer架构 3.1、何为注意力机制? 3.2、注意力机制在 Transformer 模型中有何意义? 3.3、位置编…

React进阶之前端业务Hooks库(二)

前端业务Hooks库 Actiondeploy.ymltest.yml基于 state 的 hooks 方法useBooleanpackages/hooks/src/useBoolean/index.tsusePrevioususeDeleteRole防抖和节流useDebounceuseThrottlelocalStorage和sessionStorager区别packages/hooks/src/useLocalStorageStatepackages/hooks/s…

【大语言模型_2】mindie部署deepseek模型

一、模型下载 https://modelscope.cn/home 下载地址:https://modelscope.cn/home 二、服务器驱动/固件安装 驱动/固件下载地址: https://www.hiascend.com/hardware/firmware-drivers/community?product1&model23&cannAll&driver1.0.21…