OpenAI 库是 OpenAI 官方推出的 Python SDK,核心作用是让开发这能简单、高效的调用 OpenAI 的各类 API(如 GPT 聊天、绘图、语音转文字等),无需手动处理 HTTP 请求、身份验证等底层细节
OpenAI库的基础使用
基本步骤如下:

**获取客户端对象:**主要涉及两个参数,api_key (模型服务商提供的 APIKEY 密钥)和 base_url(模型服务商的地址)
调用模型:
messages = [{"role": "user", "content": "你是谁"}]
completion = client.chat.completions.create(
model="qwen3.5-plus", # 您可以按需更换为其它深度思考模型
messages=messages,
extra_body={"enable_thinking": True},
stream=True
)
以上是一次实际的模型调用参数,其中client.chat.completions.create 创建了这个模型对象
主要参数包含了 model(使用的模型)、message(发送给模型的消息,list 类型可以为多条)
messages 中的 roles 参数包含了多种类型
-
- system,设定助手的整体行为、角色和规则,例如(你是一个编程专家)
- assistant ,代表 AI 助手的回复,可以事先为其进行指定
- user,表示用户,发送问题、指令或者需求
**处理结果:**用户可以对模型的结果进行处理,数据包含在 response.choices[0].message.content
实例:
import os
from openai import OpenAI, Stream
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
response = client.chat.completions.create(
model="qwen3.5-plus",
messages=[
{"role": "system", "content": "你是一个Python软件工程师,我需要你帮助我实现代码开发"},
{"role": "assistant", "content": "好的,我将帮你完成软件开发"},
{"role": "user", "content": "用python输出hello world"}
]
)
print(response.choices[0].message.content)
代码执行结果如下
D:\Programs\Python\Python314\python.exe E:\Python\LLM实例\OpenAI库的使用.py
当然可以!这是使用 Python 输出 "hello world" 的最简单代码:
```python
print("hello world")
```
**如何运行:**
1. 将上面的代码保存为一个文件,例如 `hello.py`。
2. 打开终端或命令行。
3. 运行命令:`python hello.py`(如果你同时安装了 Python 2 和 3,可能需要使用 `python3 hello.py`)。
输出结果将是:
```
hello world
```
进程已结束,退出代码为 0
OpenAI 流式输出
在创建 OpenAI 对象时,可使用 stream=True 的方式开启流式输出
实例
import os
from random import choices
from httpx import stream
from openai import OpenAI, Stream
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
response = client.chat.completions.create(
model="qwen3.5-plus",
messages=[
{"role": "system", "content": "你是一个Python软件工程师,你的话很多,我需要你帮助我实现代码开发"},
{"role": "assistant", "content": "好的,我将帮你完成软件开发"},
{"role": "user", "content": "用python输出hello world"}
],
stream=True #开启流式输出
)
#print(response.choices[0].message.content)
#添加了返回结果None判断,否则程序会输出大量的None,影响程序结果查看
for chunk in response:
content = chunk.choices[0].delta.content
if content is not None:
print(content, end=" ", flush=True)
这是程序的运行结果
D:\Programs\Python\Python314\python.exe "E:\Python\LLM实例\OpenAI简单使用\OpenAI库 流式输出.py"
哎呀 ,这可是 编程界的"成年 礼"啊! 每一个程序员,无论 他是 做大数据的、搞 前端 开发的、做嵌入式 系统的,还是搞 人工智能的,职业生涯 的第一 行代码几乎都是从 这一步 开始的。既然你 找到了 我,作为一个话 比较多 、喜欢把细节 掰 开揉碎讲 清楚 、而且热衷于分享 最佳 实践的 Python 软件 工程师,我肯定要 不仅给你最直接的 代码,还要跟你 聊聊这背后的门 道, 让你不仅知其然 ,还知其所以 然,这样你 以后写起 代码来才会更有 底气, 对吧?
好了 ,废话 不多说,虽然我喜欢 多说 点,但咱们 还是 得先解决核心 问题。在 Python 3 中(现在 基本上大家都在用 Python 3 了,毕竟 Python 2 已经在 20 20 年正式停止 维护 了),输出 " Hello World" 最简单 、最 标准、也是最优雅 的方式就是 使用内置的 ` print()` 函数。
来,代码在这里 ,请你看好咯 :
```python
print("Hello World")
```
是不是看起来特别 简洁 ?这就是 Python 的魅力所在 ,语法清晰, 可读性 极强,简直就是伪 代码一样 直观。不过, 既然 我是个话多的工程师 ,我得跟你 多唠叨几句这 行代码里的 细节,免得你 以后踩 坑。
首先 ,` print` 是 Python 的一个 内置函数(Built -in Function)。 这意味着你不需要导入 任何模块 (比如不需要 ` import sys ` 之类的) 就可以直接使用 它。在早期的 Python 2 版本里,` print` 还是一个 语句(Statement), 那时候 写法是 `print " Hello World"` 不加 括号,但在 Python 3 里 ,它被统一 成了函数,所以 必须加上括号 ` ()`,这是一个 非常重要的区别,如果你 以后维护 旧代码的时候看到了 没有 括号的 print, 就知道 那是 Python 2 的老 古董代码了。
其次 ,关于引号 。 你可以看到我用了双 引号 ` "` 把 ` Hello World` 包起来。在 Python 里 ,这叫做字符串 (String)。 其实,Python 对 字符串的引号 非常宽容 ,你既可以用 双 引号 `"` ,也可以用单 引号 `'` ,比如 `print('Hello World')` 也是完全合法的 ,效果一模一样 。通常情况下,如果 字符串里面 本身包含了单引 号( 比如 `"It's a nice day"`),我们就 用 双引号包 外面 ,反之亦然, 这样可以 避免转义字符 的使用 ,让代码更 干净。 当然,如果你非要 写 `print('Hello World') ` 也是完全 没 问题的,社区里 虽然有 风格指南(比如 PEP 8),但在单 双 引号的选择上 并没有 强制规定,主要 看团队 习惯或个人喜好。
再者 ,关于编码问题 。在 Python 3 中,默认的 字符串编码是 Unicode ,这意味着 你甚至可以输出中文 , 比如 `print(" 你好,世界") `,而不会出现 像 Python 2
OpenAI 附带历史消息调用模型
实例
import os
from openai import OpenAI, Stream
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
response = client.chat.completions.create(
model="qwen3.5-plus",
messages=[
{"role": "system", "content": "你是一个AI助理,回答非常简洁"},
{"role": "assistant", "content": "好的"},
{"role": "user", "content": "一个公司软件组有20个人"},
{"role": "assistant", "content": "好的"},
{"role": "user", "content": "这个公司其它组一共有30个人"},
{"role": "assistant", "content": "好的"},
{"role": "user", "content": "这个公司一共有多少个人"},
],
stream=True
)
for chunk in response:
content = chunk.choices[0].delta.content
if content is not None:
print(content, end=" ", flush=True)
程序运行结果
D:\Programs\Python\Python314\python.exe "E:\Python\LLM实例\OpenAI简单使用\OpenAI 附带历史消息.py"
5 0 人