前几天在自己笔记本上部署了一个 7b 版本的 DeepSeek-r1 模型,效果不是很好,响应也比较卡。实际上,已经有很多云厂商都提供了模型推理服务,流行的开源模型应该都有,DeepSeek 当然也不例外。
openai
众所周知,想要跟应用服务进行交互,最常用的手段是调用 API 。那么,想要获得模型推理服务,又应该调用什么 API 呢?
截至目前,与大模型进行交互的 API 接口,还没有一个统一的标准,各个厂商都有推出自己的 API 协议。其中, openai 推出的接口协议,因为发展比较早,使用很广,几乎每个厂商都兼容,似乎成为事实上的标准。
本文就以 openai 接口协议为例,介绍如何编写 Python 程序调用大模型推理服务。实际上,openai 也提供了一个 pip 包,封装了接口调用细节,不用自己发起 HTTP 请求。
依赖安装
我们直接调用封装好的 openai 包,先安装一下:
|
|
例子程序
|
|
- 第 6 行,初始化一个 openai 客户端实例;
- 这里我们没有指定任何参数,openai 包将默认从环境变量中获取服务地址和 API-Key ;
- OPENAI_BASE_URL 环境变量指定 API 地址;
- OPENAI_API_KEY 环境变量指定 API-Key ;
- 第 8 行,定义角色设定提示词,可以理解成告诉大模型,让它按你的要求来做角色扮演;
- 第 13 行,调用对话补全接口,例子中传了两个参数:
- model 指定要使用的模型名称,程序先从 OPENAI_MODEL 环境变量中读取,没设置的话默认使用 deepseek-v3 模型;
- messages 指定一段对话消息,大模型将根据这段对话消息,来生成(补全)下一个消息;
- 第 21 行,取出大模型补全的消息内容,并输出;
注意到,每个 message 消息都包含两个字段,一个 content 内容,一个是 role 角色。常见的角色包括:
- system ,表示系统消息,通常用来给大模型做角色设定;
- user ,表示用户消息,通常是用户输出的提问;
- assistant ,表示助理消息,即大模型的问答;
结合上面例子,我们可以这么理解:
- 第一个 system 消息:系统跟大模型说:“你是一个编程爱好者……”完成角色设定;
- 第二个 user 消息:我跟大模型说:“你好”;
- 第三个 assistant 消息(大模型生成的):大模型跟我说……
例子中第三个消息就是大模型自动生成的,从逻辑上看是,它根据前面两个消息的上下文生成的。至于它是怎么生成出来的,涉及到神经网络和深度学习等知识,本文不展开。
运行程序
接下来,找一个 AI 云平台申请 API Key,就可以把程序跑起来了!
DeepSeek开放平台
DeepSeek 前段时间太火了,开发平台一直 503 ,今天发现恢复了,虽然似乎还不能充值。
开始运行程序之前,我们需要设置这几个环境变量:
|
|
现在可以把程序跑起来了:
|
|
可以看到,大模型开始回应我了!!!
阿里云百炼
其他厂商如果兼容 openai 接口协议,也可以直接调用,只需改一下环境变量。以阿里云百炼为例:
|
|
这是程序调用 deepseek-v3 的运行效果:
|
|
如果想调用其他大模型,只需要修改 OPENAI_MODEL 环境变量:
|
|
这是调用千问 qwen-plus 的效果:
|
|
订阅更新,获取更多学习资料,请关注我们的公众号: