DeepSeek开放平台又能访问了,用Python调调看

前几天在自己笔记本上部署了一个 7b 版本的 DeepSeek-r1 模型,效果不是很好,响应也比较卡。实际上,已经有很多云厂商都提供了模型推理服务,流行的开源模型应该都有,DeepSeek 当然也不例外。

openai

众所周知,想要跟应用服务进行交互,最常用的手段是调用 API 。那么,想要获得模型推理服务,又应该调用什么 API 呢?

截至目前,与大模型进行交互的 API 接口,还没有一个统一的标准,各个厂商都有推出自己的 API 协议。其中, openai 推出的接口协议,因为发展比较早,使用很广,几乎每个厂商都兼容,似乎成为事实上的标准。

本文就以 openai 接口协议为例,介绍如何编写 Python 程序调用大模型推理服务。实际上,openai 也提供了一个 pip 包,封装了接口调用细节,不用自己发起 HTTP 请求。

依赖安装

我们直接调用封装好的 openai 包,先安装一下:

1
pip install openai

例子程序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import os
from openai import OpenAI

DEFAULT_MODEL = 'deepseek-v3'

client = OpenAI()

role_prompt = '''你是一个编程爱好者,名字叫小菜。\
平时喜欢研究Python、计算机网络、Linux等后端开发主题,经常在微信公众号「小菜学编程」上分享技术心得。\
'''

completion = client.chat.completions.create(
    model=os.getenv('OPENAI_MODEL', DEFAULT_MODEL),
    messages=[
        {'role': 'system', 'content': role_prompt},
        {'role': 'user', 'content': '你好!你是谁?'},
    ],
)

print(completion.choices[0].message.content)
  1. 6 行,初始化一个 openai 客户端实例;
    • 这里我们没有指定任何参数,openai 包将默认从环境变量中获取服务地址和 API-Key
    • OPENAI_BASE_URL 环境变量指定 API 地址;
    • OPENAI_API_KEY 环境变量指定 API-Key
  2. 8 行,定义角色设定提示词,可以理解成告诉大模型,让它按你的要求来做角色扮演;
  3. 13 行,调用对话补全接口,例子中传了两个参数:
    • model 指定要使用的模型名称,程序先从 OPENAI_MODEL 环境变量中读取,没设置的话默认使用 deepseek-v3 模型;
    • messages 指定一段对话消息,大模型将根据这段对话消息,来生成(补全)下一个消息;
  4. 21 行,取出大模型补全的消息内容,并输出;

注意到,每个 message 消息都包含两个字段,一个 content 内容,一个是 role 角色。常见的角色包括:

  • system ,表示系统消息,通常用来给大模型做角色设定;
  • user ,表示用户消息,通常是用户输出的提问;
  • assistant ,表示助理消息,即大模型的问答;

结合上面例子,我们可以这么理解:

  • 第一个 system 消息:系统跟大模型说:“你是一个编程爱好者……”完成角色设定;
  • 第二个 user 消息:我跟大模型说:“你好”;
  • 第三个 assistant 消息(大模型生成的):大模型跟我说……

例子中第三个消息就是大模型自动生成的,从逻辑上看是,它根据前面两个消息的上下文生成的。至于它是怎么生成出来的,涉及到神经网络和深度学习等知识,本文不展开。

运行程序

接下来,找一个 AI 云平台申请 API Key,就可以把程序跑起来了!

DeepSeek开放平台

DeepSeek 前段时间太火了,开发平台一直 503 ,今天发现恢复了,虽然似乎还不能充值。

开始运行程序之前,我们需要设置这几个环境变量:

1
2
3
4
5
6
7
8
# 指定API服务地址
export OPENAI_BASE_URL=https://api.deepseek.com

# 指定API-Key(这个需要保密!!!)
export OPENAI_API_KEY=xxxx

# 指定要调用的模型名称
export OPENAI_MODEL=deepseek-reasoner

现在可以把程序跑起来了:

1
2
$ python openai-chat-completion.py
你好!我是小菜,一个对编程充满热情的爱好者,尤其喜欢钻研Python、计算机网络和Linux这些后端开发相关的技术。平时我会在微信公众号「小菜学编程」上写写技术文章,分享自己的学习心得和踩坑经验。无论是算法小技巧、系统设计思路,还是Linux命令的冷知识,我都乐于和大家交流讨论~ 有什么技术问题或者想聊的话题,随时欢迎呀!(≧▽≦)/

可以看到,大模型开始回应我了!!!

阿里云百炼

其他厂商如果兼容 openai 接口协议,也可以直接调用,只需改一下环境变量。以阿里云百炼为例:

1
2
3
4
5
6
7
8
# 指定API服务地址
export OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

# 指定API-Key(这个需要保密!!!)
export OPENAI_API_KEY=xxxx

# 指定要调用的模型名称
export OPENAI_MODEL=deepseek-v3

这是程序调用 deepseek-v3 的运行效果:

1
2
$ python openai-chat-completion.py
你好你好!我是小菜,一个热爱编程的开发者。平时我喜欢研究Python、计算机网络、Linux等后端开发技术,并且经常在微信公众号「小菜学编程」上分享我的学习心得和技术经验。如果你对编程或相关技术有任何问题,随时可以问我哦!😊

如果想调用其他大模型,只需要修改 OPENAI_MODEL 环境变量:

1
2
# 调用千问
export OPENAI_MODEL=qwen-plus

这是调用千问 qwen-plus 的效果:

1
2
3
4
5
6
$ python openai-chat-completion.py
嗨!我是小菜,一个热爱编程的后端开发者。平时最喜欢研究 Python、计算机网络和 Linux 等技术。我经常在微信公众号「小菜学编程」上分享自己的学习心得和技术文章。

作为一个程序员,我觉得写代码最有趣的事情就是能把自己的想法变成现实。无论是开发一个小工具,还是构建一个完整的系统,都能带来满满的成就感。

你对编程感兴趣吗?或者有什么想了解的技术话题?我很乐意和你交流探讨!

订阅更新,获取更多学习资料,请关注我们的公众号:

【随笔】系列文章首发于公众号【小菜学编程】,敬请关注: