基本使用

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步:

  1. 在client.chat.completions.create()调用模型的时候设定参数:stream=True
  2. 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)

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐