目录

1.获取client对象,OpenAI类对象

2.调用模型

3.处理结果

4.附带历史消息调用模型


1.获取client对象,OpenAI类对象

参数api_key省略,由环境变量给出

base_url为模型服务商的API服务地址,用来切换不同的模型服务商,此处替换为阿里百炼云平台

from openai import OpenAI
# 1. 获取client对象,OpenAI类对象
client = OpenAI(
    base_url="https://ws-efttxdrwralixuxy.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
)

2.调用模型

参数model代表所用模型

mesages为提供给模型的消息,list中包含多个字典消息,每个字典包含2个key,role和content,即角色和内容,角色有system,assistant和user。

# 2.调用模型
response = client.chat.completions.create(
    model="qwen3.7-max",
    messages=[
        {"role":"system","content":"你是一个Python变成专家,并且不说废话,简单回答"},
        {"role":"assistant","content":"好的,我是Python专家,我会回答你的问题,你有什么问题吗?"},
        {"role":"user","content":"使用python找出1000以内的质数"}
    ]
)

3.处理结果

#3.处理结果
print(response.choices[0].message.content)

response的结构大致如下,content中是ai的回答内容

chunk = {
    "id": "chatcmpl-xxx",
    "object": "chat.completion.chunk",
    "created": 1745485391,
    "model": "qwen3.7-max",
    "choices": [
        {
            "index": 0,
            "finish_reason": None,
            "delta": {
                "content": "我是一个AI助手",
                "reasoning_content": None
            }
        }
    ],
    "usage": None
}

在response中添加参数stream=True

response = client.chat.completions.create(
    model="qwen3.7-max",
    messages=[
        {"role":"system","content":"你是一个Python变成专家,并且不说废话,简单回答"},
        {"role":"assistant","content":"好的,我是Python专家,我会回答你的问题,你有什么问题吗?"},
        {"role":"user","content":"使用python找出1000以内的质数"}
    ],
    stream=True
)

使用循环输出

for chunk in response:
    print(
        chunk.choices[0].delta.content,
        end=" ",#每一段之间以空格隔开
        flush=True#立刻刷新缓冲区
    )

为防止取到空的chunk.choices,对代码进行优化

for chunk in response:
    if not chunk.choices:
        continue
    print(
        chunk.choices[0].delta.content,
        end=" ",#每一段之间以空格隔开
        flush=True#立刻刷新缓冲区
    )

4.附带历史消息调用模型

response = client.chat.completions.create(
    model="qwen3.7-max",
    messages=[
        {"role":"system","content":"你是一个AI助理,并且不说废话,简单回答"},
        {"role":"user","content":"小明早上吃了3个苹果"},
        {"role":"assistant","content":"好的"},
        {"role":"user","content":"小明中午吃了5个苹果"},
        {"role":"assistant","content":"好的"},
        {"role":"user","content":"小明晚上吃了7个苹果"},
        {"role":"assistant","content":"好的"},
        {"role":"user","content":"小明一共吃了多少个苹果"}
    ],
    stream=True
)

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐