找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2786

积分

0

好友

374

主题
发表于 3 天前 | 查看: 21| 回复: 0

前几天我在自己笔记本上部署了一个7b版本的DeepSeek-r1模型,效果不太理想,响应也比较慢。其实,现在已经有很多云厂商提供了现成的模型推理服务,热门的开源模型基本都能找到,DeepSeek自然也不例外。相比于本地部署,直接调用云服务API更方便,性能也更有保障。

那么,如何与这些云上的大模型服务交互呢?最通用的方式就是调用API。

OpenAI协议成为事实标准

目前,各大模型服务提供商推出的API接口协议尚未统一,每家都有自己的设计。其中,由OpenAI推出的接口协议,由于发展早、应用广,几乎得到了所有主流厂商的兼容,正在成为业界的实际标准。

本文将以OpenAI接口协议为例,介绍如何编写Python程序来调用大模型的推理服务。幸运的是,OpenAI官方提供了一个Python包,它封装了底层的HTTP请求细节,让我们的调用工作变得非常简单。

安装依赖

我们直接使用这个封装好的openai包。首先通过pip安装它:

pip install openai

编写示例程序

下面是一个完整的Python示例程序,展示了如何使用openai包进行对话补全。

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客户端实例。这里没有指定任何参数,客户端会默认从环境变量中读取服务地址和API Key。
  2. 第8行,定义了一个系统提示词(role_prompt),用于给大模型设定一个特定的角色。
  3. 第13行,调用对话补全接口。这里传入了两个关键参数:
    • model:指定要使用的模型名称。程序优先从OPENAI_MODEL环境变量中读取,若未设置则使用默认的deepseek-v3
    • messages:指定一段对话消息列表,大模型将基于这段上下文来生成(补全)下一条消息。
  4. 第21行,打印出大模型生成的回答内容。

每个message都包含role(角色)和content(内容)两个字段。常见的角色有三种:

  • system:系统消息,通常用于设定模型的角色或行为指令。
  • user:用户消息,代表用户的输入或提问。
  • assistant:助手消息,代表模型生成的回复。

以上面的例子来理解对话流:

  1. system消息:系统告诉模型“你是一个编程爱好者……”,完成角色设定。
  2. user消息:用户对模型说“你好!你是谁?”。
  3. assistant消息(由模型生成):模型根据前两条消息的上下文,生成并回复了符合“小菜”这个角色的自我介绍。

运行程序:调用DeepSeek开放平台

接下来,我们只需要找一个提供兼容OpenAI协议的AI云平台,申请一个API Key,就能让程序跑起来了!

前段时间DeepSeek开放平台因为访问量过大经常返回503错误,目前已经恢复,可以正常调用API了。

运行前,需要设置以下环境变量来配置客户端:

# 指定API服务地址
export OPENAI_BASE_URL=https://api.deepseek.com

# 指定API-Key(请使用你自己申请的Key,注意保密!)
export OPENAI_API_KEY=your_api_key_here

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

设置好环境变量后,运行程序:

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

看,大模型已经成功地按照我们设定的角色进行了回复!

扩展应用:调用阿里云百炼

只要云厂商兼容OpenAI接口协议,我们的代码无需任何修改,只需调整环境变量即可切换服务商。以阿里云百炼为例:

# 指定API服务地址(百炼的兼容模式端点)
export OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

# 指定API-Key(阿里云百炼的API Key)
export OPENAI_API_KEY=your_aliyun_api_key_here

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

再次运行程序,即可调用阿里云百炼上的DeepSeek-V3模型:

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

如果想调用阿里云百炼平台上的其他模型,比如通义千问,也只需修改OPENAI_MODEL环境变量:

# 调用千问模型
export OPENAI_MODEL=qwen-plus

运行效果如下:

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

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

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

通过这个简单的例子可以看出,利用标准的OpenAI客户端,我们可以用一套代码灵活地调用不同服务商提供的多种大模型,这极大地方便了我们的开发和测试工作。如果你对人工智能应用开发感兴趣,不妨在云栈社区与其他开发者一起交流更多实践技巧。




上一篇:使用 shawl 将 serverstatus 等程序部署为 Windows 服务并实现开机自启
下一篇:WebSocket协议核心解析:从握手到数据帧,实现Web实时双向通信
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 18:12 , Processed in 0.788295 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表