大数跨境
0
0

AI模型对话Chat Completions

AI模型对话Chat Completions 二进制跳动
2025-04-15
0
导读:AI模型对话Chat Completions
我会使用阿里云百炼提供的 DeepSeek-R1 模型为大家演示 Chat Completions
模型环境变量配置
当我们获取了 api_key 之后,为了保密和调用方便,可以将其配置到环境变量。以 Windows 系统为例,我的电脑 -> 右键属性 -> 高级系统设置 -> 环境变量,在系统变量中点击新建。
输入变量名和 api_key 的值即可。接下来我们开始写初始化用于访问大模型的客户端的代码。首先将 OpenAI SDK 下载下来。
pip install openai
为什么是 OpenAI 的 SDK 呢?这是因为 OpenAI 是行业标杆,是龙头,因此后续几乎所有的模型厂商的 API 都是兼容 OpenAI 数据格式的。
下载完成,开始初始化一个 OpenAI 客户端,需要填充 api_key 和 base_url 两项,用于客户端与大模型服务器的连接。api_key 之前我们说过,用于验证身份。base_url 则是代表了提供模型服务的厂商的服务地址。如果 base_url 不设置,由于使用了 OpenAI SDK,就会默认请求 OpenAI 的服务。这里我使用的阿里云百炼,因此 base_url 是百炼服务器的地址。
client = OpenAI(    api_key=os.getenv("AliDeep"),      base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
了不泄露 api_key,我们通常使用 os 包从环境变量中获取 api_key。
如果是使用 DeepSeek 官方的模型呢?只需修改 api_key 和 base_url 即可。代码如下:
client = OpenAI(    api_key=os.getenv("DeepSeek"),      base_url="https://api.deepseek.com/v1")
Chat Completions
在演示工具选择之前,首先需要把和大模型对话的基础代码写好。这就要用到 Chat Completions。Chat Completions 是 OpenAI SDK 提供的对话补全的方法,我们使用它可以完成和大模型的对话。

与大模型交流时,我们用三种角色来明确对话是谁说的:

  • system(系统)
    :相当于给大模型设定一个“身份”或“规则”,限定它的回答范围。这就像聊天前的“背景设定”。
  • user(用户/人类)
    :代表这是我们人类说的话。
  • assistant(助手/AI)
    :代表这是大模型返回给我们的答案。

有些工具或场景(比如 LangChain)可能会用 human 代替 user,用 AI 代替 assistant,意思是一样的。

我举一个例子,演示一下使用以上三种角色完成一次 Chat Completions。
system你是一个足球领域的专家,请尽可能地帮我回答与足球相关的问题。userC罗是哪个国家的足球运动员?assistant葡萄牙
如果想要实现多轮对话效果,则需要每一次都带着历史对话提问,例如:
system你是一个足球领域的专家,请尽可能地帮我回答与足球相关的问题。userC罗是哪个国家的足球运动员?assistant葡萄牙user内马尔呢?
虽然最后一次人类的提问“内马尔呢”是一个模糊提问,但由于存在历史对话,因此大模型可以理解用户的提问的意思是“内马尔是哪个国家的足球运动员?”
理解了三种角色后,我们开始写代码。
completion = client.chat.completions.create(    model="deepseek-r1",    messages=[        {'role''system''content''你是一个足球领域的专家,请尽可能地帮我回答与足球相关的问题。'},        {'role''user''content''C罗是哪个国家的足球运动员?'},        {'role''assistant''content''C罗是葡萄牙足球运动员。'},        {'role''user''content''内马尔呢?'},    ])
在这段代码里,我使用了预先设置好的客户端,调用了 chat.completions.create 这个方法。这个方法的作用是发起一次和 AI 大模型的对话,大模型给出的回复会存储在叫做 completion 的变量中。在 create 方法里,我通过 model 参数指定了要使用的 AI 模型是 deepseek-r1。接着,我用了一个叫做 messages 的列表,这个列表里包含了系统给出的提示语、之前的对话记录以及用户最新的问题。
我们知道 deepseek-r1 是带深度思考的,因此可以用如下方法,从 completions 中,将思考过程和最终回复都打印出来看一下。
# 通过reasoning_content字段打印思考过程print("思考过程:")print(completion.choices[0].message.reasoning_content)
# 通过content字段打印最终答案print("最终答案:")print(completion.choices[0].message.content)
输出:
在上面的例子中,大模型成功的根据对话历史,理解了“内马尔呢?”表达的真正含义。

【声明】内容源于网络
0
0
二进制跳动
15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
内容 739
粉丝 0
二进制跳动 15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
总阅读284
粉丝0
内容739