通过python连接Ollama服务,调用本地部署Deepseek模型的API接口,方法步骤详细教学,简单实用,一起来学习吧!!!

前言

本篇文章我将教会大家如何使用python代码调用Deepseek的API接口,实现AI模型的自动化启动,并进行交互式对话。通过该方法大家可以搭建属于自己的AI问答网站或开发AI软件,当然在教学前,我们首先需要在本地部署Deepseek模型,操作非常简单,大家都能学会,这里可以参考下面这篇文章:

windows使用Ollama本地部署Deepseek详细教学

1、基础API调用方法及演示

1.1 环境准备

  • 1、启动Ollama服务
    在运行代码前,我们需要保证Ollma处于运行状态,可以通过任务栏图标任务管理器查看Ollama是否正在运行,若Ollama服务未启动,打开CMD命令行窗口,随意输入一个Ollama命令即可,如下:

    ollama list  # 查看已下载模型
    
  • 2、安装requests模块

    pip install requests
    

1.2 同步请求方法

该方法通过同步请求的方式获取模型响应信息,运行代码后程序会暂停,这是因为模型正在生成回答,根据所提问题难度,模型生成回答的时间有所不同,程序运行完毕后,才会显示回答信息。

# 调用模块
import requests

def deepseek_chat(prompt, model):
    # deepseek的API接口链接
    url = "http://localhost:11434/api/generate"
    # 基本请求参数
    payload = {
        "model": model, # 调用的AI模型
        "prompt": prompt, # 输入的对话文本或指令
        "stream": False  # 非流式响应
    }
    print('模型正在生成回复,请稍等...')
    # 向Deepseek模型的API接口发起请求
    response = requests.post(url, json=payload)
    # 获取响应信息,得到模型回复的答案
    answer = response.json()["response"]
    return answer

# 1、向AI进行提问,写出需要询问的问题
prompt = "如何学习Python编程?"
# 2、需要调用的AI模型,根据本地下载的模型,写入模型名称即可
model = 'deepseek-r1:1.5b'
# 3、调用函数,与Deepseek建立响应
answer = deepseek_chat(prompt,model)
# 4、输出模型回复的答案
print("模型回复:\n", answer)

效果演示:
在这里插入图片描述

1.2 流式响应方法

该方法的好处就是在运行程序后,可以实时显示模型回复的信息,可以给用户更好的体验。

# 调用模块
import requests
import json

def deepseek_chat(prompt, model):
    # # deepseek的API接口链接
    url = "http://localhost:11434/api/generate"
    # 基本请求参数
    payload = {
        "model": model,  # 调用的AI模型
        "prompt": prompt,  # 输入的对话文本或指令
        "stream": True  # 启用流式响应
    }
    # 向Deepseek模型的API接口发起请求,并实时显示回复信息
    with requests.post(url, json=payload, stream=True) as res:
        for line in res.iter_lines():
            if line:
                chunk = json.loads(line.decode('utf-8'))
                print(chunk.get("response",""),end="", flush=True)

# 1、向AI进行提问,写出需要询问的问题
prompt = "如何学习Python编程?"
# 2、需要调用的AI模型,根据本地下载的模型,写入模型名称即可
model = 'deepseek-r1:1.5b'
# 3、调用函数,与Deepseek建立响应
deepseek_chat(prompt,model)

效果演示:
在这里插入图片描述


1.3 核心参数说明及效果演示

在前面两个方法中我们使用了三个基本请求参数:model、prompt、stream,这三个参数是必须携带的。除此之外,我们还可以携带一些其它参数,通过调整携带的参数信息,可以使模型的回复富有多样性。

1、参数展示及说明:

参数类型说明
modelstrOllama 中加载的模型名称(必须与部署时使用的名称一致)
promptstr输入的提示文本/问题
streambool是否启用流式传输(默认为False,为True 时逐块返回结果,适合实时显示)
temperaturefloat控制生成随机性:(0.1-2.0)
num_predictint限制生成内容的最大长度(根据模型上下文窗口调整)
top_pfloat核采样参数:(0-1)仅保留累计概率超过此值的候选词(影响输出多样性)
systemstr(可选) 系统级提示,用于定义模型行为(如角色设定)


2、核心参数组合效果

参数组合适用场景示例值
低temperature + 低num_predict事实性回答temp=0.3, num_predict=512
高temperature + 高num_predict创意写作temp=1.2, num_predict=2048
中temperature + 流式传输实时对话temp=0.7, stream=True


3、案例演示

案例1:添加高级参数进行对话:

# 调用模块
import requests
import json

def deepseek_chat(prompt, model):
    # # deepseek的API接口链接
    url = "http://localhost:11434/api/generate"
    # 基本请求参数
    payload = {
        "model": model,  # 调用的AI模型
        "prompt": prompt,  # 输入的对话文本或指令
        "stream": True , # 启用流式响应
        # 高级参数(可选)
        "options": {
            "temperature": 1.2, # 生成随机性
            "num_predict": 100, # 最大生成长度
            "top_p": 0.1 # 核采样概率阈值
        },
    }
    # 向Deepseek模型的API接口发起请求,并实时显示回复信息
    with requests.post(url, json=payload, stream=True) as res:
        for line in res.iter_lines():
            if line:
                chunk = json.loads(line.decode('utf-8'))
                print(chunk.get("response",""),end="", flush=True)

# 1、向AI进行提问,写出需要询问的问题
prompt = "如何学习Python编程?"
# 2、需要调用的AI模型,根据本地下载的模型,写入模型名称即可
model = 'deepseek-r1:1.5b'
# 3、调用函数,与Deepseek建立响应
deepseek_chat(prompt,model)

效果展示:(可以看到模型回复的长度限制为了100字)
在这里插入图片描述


案例2:添加角色设定,进行对话

# 调用函数
import requests
import json


def deepseek_chat(prompt, system_role):
    # deepseek的API请求链接,注意这里链接相比前面的案例有所不同,后缀为chat
    url = "http://localhost:11434/api/chat"

    # 请求参数
    data = {
        "model": "deepseek-r1:1.5b", # 调用的AI模型
        # 存放角色设定信息的参数
        "messages": [
            {"role": "system", "content": system_role}, # system:表示系统角色,content为角色设定信息
            {"role": "user", "content": prompt} # user:表示用户自己,content为用户输入的问题
        ],
        "stream": False,  # 非流式响应
    }
    print('模型正在生成回复,请稍等...')
    # 发送请求,获取响应信息
    response = requests.post(url,headers={"Content-Type": "application/json"},data=json.dumps(data))
    # 得到响应结果
    result = response.json()
    # 返回模型回复的答案
    return result['message']['content']


if __name__ == "__main__":
    # 1、定义角色设定(示例:程序员角色)
    system_prompt = """你是一个资深程序员,回答需要满足以下要求:
    1. 使用中文回复
    2. 保持专业但易懂的语气
    3. 包含具体实现步骤
    4. 必要时给出代码示例"""

    # 2、用户输入问题
    user_input = "请详细解释如何在Python中实现异步网络请求"

    # 3、调用函数,返回答案
    answer = deepseek_chat(prompt=user_input,system_role=system_prompt,)
    print("模型回复:\n",answer)

效果演示:
在这里插入图片描述


2、常见问题处理及总结

  1. 连接失败:

    • 检查Ollama服务是否运行

    • 确认防火墙允许本地11434端口通信

    • 验证模型名称是否正确

  2. 响应质量优化:

    • 调整temperature参数(0.3-0.7适合技术问答)

    • 增加num_predict获取更长回复

    • 在system_prompt中明确格式要求

  3. 模型未找到

    • 现象:Error: model ‘deepseek’ not found

    • 解决:确认模型已下载,执行 ollama pull deepseek模型名称

  4. 中文输出不稳定

    • 在system_prompt中明确要求:“请始终使用中文回答,避免使用其他语言”

总结:
通过以上方法,您可以灵活调用本地DeepSeek模型,建议从简单查询开始逐步尝试高级功能。实际使用时请注意硬件资源限制,复杂任务建议设置num_predict参数控制输出长度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盲敲代码的阿豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值