前言
本篇文章我将教会大家如何使用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、参数展示及说明:
参数 | 类型 | 说明 |
---|---|---|
model | str | Ollama 中加载的模型名称(必须与部署时使用的名称一致) |
prompt | str | 输入的提示文本/问题 |
stream | bool | 是否启用流式传输(默认为False,为True 时逐块返回结果,适合实时显示) |
temperature | float | 控制生成随机性:(0.1-2.0) |
num_predict | int | 限制生成内容的最大长度(根据模型上下文窗口调整) |
top_p | float | 核采样参数:(0-1)仅保留累计概率超过此值的候选词(影响输出多样性) |
system | str | (可选) 系统级提示,用于定义模型行为(如角色设定) |
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、常见问题处理及总结
-
连接失败:
-
检查Ollama服务是否运行
-
确认防火墙允许本地11434端口通信
-
验证模型名称是否正确
-
-
响应质量优化:
-
调整temperature参数(0.3-0.7适合技术问答)
-
增加num_predict获取更长回复
-
在system_prompt中明确格式要求
-
-
模型未找到
-
现象:Error: model ‘deepseek’ not found
-
解决:确认模型已下载,执行 ollama pull deepseek模型名称
-
-
中文输出不稳定
- 在system_prompt中明确要求:“请始终使用中文回答,避免使用其他语言”
总结:
通过以上方法,您可以灵活调用本地DeepSeek模型,建议从简单查询开始逐步尝试高级功能。实际使用时请注意硬件资源限制,复杂任务建议设置num_predict参数控制输出长度。