OpenAI库的基础使用

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 人  
相关推荐
五月仲夏3 小时前
基础LLM 和指令调优LLM
llm
Lupino3 小时前
实测 Codex:它是如何精准地把“正常代码”修出死循环的?
openai·haskell
梦想很大很大4 小时前
从 0 到 1 实现 AI Agent(01):LLM 对话 + 本地 Tool 调用
人工智能·llm·agent
树獭叔叔4 小时前
Agent 记忆系统设计全景:从短期对话到长期知识沉淀
后端·aigc·openai
sun_tao15 小时前
RAG 系统 Embedding 选型要点
人工智能·llm·embedding·rag
Elaine3366 小时前
【Agent 设计模式全景图:从 ReAct 到工业级多智能体架构】
设计模式·llm·软件架构·ai agent
xixixi777776 小时前
AI 用于漏洞检测、威胁狩猎、合规审查;安全沙箱 / 隐私计算保障 AI 模型与数据可信
人工智能·网络安全·ai·openai·数据·多模型
WitsMakeMen7 小时前
relu激活函数为什么有效
llm
王小义笔记7 小时前
大模型微调步骤与精髓总结
python·大模型·llm