deepseek本地调用

目录

1.介绍

2.开始调用

2.1模型检验

[2.2 通过url调用](#2.2 通过url调用)

3.总结


1.介绍

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

2.开始调用

2.1模型检验

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

复制代码
ollama list

2.2使用subprocess

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

复制代码
import subprocess

def 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 subprocess

app = 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:7b
        result = 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 requests

def 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制作一个本地聊天机器人)。

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

相关推荐
笨拙的老猴子3 分钟前
[特殊字符] Java GC机制详解:G1、ZGC、Shenandoah全面解析与版本演进对比
java·开发语言
tedcloud1238 分钟前
hello-agents部署教程:从零学习AI Agent开发
服务器·人工智能·学习·自动化·powerpoint
qq_2651533710 分钟前
Redis在游戏服务器中怎么实现开合服数据同步?
服务器·redis·游戏·游戏服务器
szxinmai主板定制专家18 分钟前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·服务器·人工智能·嵌入式硬件·fpga开发
砍材农夫33 分钟前
物联网 基于netty构建mqtt协议规范(遗嘱与保留消息)
java·开发语言·物联网·netty
DFT计算杂谈36 分钟前
KPROJ编译教程
java·前端·python·算法·conda
qq_369224331 小时前
Windows系统缺失ddraw.dll文件?游戏闪退、图形报错原因详解及处理办法
windows·游戏·dll·dll修复·dll丢失·dll错误
重生之我是Java开发战士1 小时前
【笔试强训】Week5:空调遥控, kotor和气球,走迷宫,主持人调度II,体操队形,二叉树的最大路径和,排序子序列,消减整数
java·算法·动态规划
L、2181 小时前
CANN调优工具链全景:从profiler到tensorboard的完整观测体系
linux·运维·服务器·深度学习
林下溪畔1 小时前
部署claude code(Windows版)
windows