openai
·
基本使用
pip install openai
import os
from openai import OpenAI
# 1 获取客户端对象
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
# 2 调用模型
response = client.chat.completions.create(
model="qwen3-max",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是谁?"},
],
stream=True
)
# 3 处理返回结果
for chunk in response:
print(
chunk.choices[0].delta.content,
end=" ", # 每段之间用空格分隔
flush=True # 立即刷新缓存区
)
发送消息参数说明:
client.chat.completions.create创建ChatCompletion对象
model:选择所用模型,如代码的qwen3-max
messages:提供给模型的消息
类型:list,可以包含多个字典消息每个字典消息包含2个key
- role:角色
- content:内容
stream:是否流式输出
system角色:设定助手的整体行为、角色和规则,为对话提供上下文框架(如指定助手身份、回答风格、核心要求),是全局的背景设定,影响后续所有交互。(非必须)
assistant角色:代表 AI助手的回答,可以在代码中认为设定 (非必须)
user角色:代表用户,发送问题、指令或需求

响应数据参数说明:
print(response.choices[0].message.content) 输出模型回答的内容

流式输出
可以设定结果输出为stream模式(流式输出),获得更好的使用体验。开启流式输出主要就2步:
- 在client.chat.completions.create()调用模型的时候设定参数:stream=True
- for循环response对象,并在循环内输出内容

附带历史消息
在message中加组织历史消息,让模型基于历史消息回的问题
PS:当前的历史消息是一次性的,如果是生产系统可以将消息保存到文件、数据库等持久化工具内,需要的时候提取使用
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
# api_key=os.getenv("OPENAI_API_KEY"),
api_key="sk-xxx",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-max",
messages=[
{"role": "system", "content": "你是AI助理,简洁回答问题."},
{"role": "user", "content": "小明有2条宠物狗?"},
{"role": "assistant", "content": "好的"},
{"role": "user", "content": "小明有2条宠物猫?"},
{"role": "assistant", "content": "好的"},
{"role": "user", "content": "小明有几只宠物?"},
],
stream=True
)
for chunk in completion:
print(chunk.choices[0].delta.content, end="", flush=True)
更多推荐
所有评论(0)