鱼C论坛

 找回密码
 立即注册
查看: 38|回复: 5

[AI工作流] OpenAI库的基础使用

[复制链接]
发表于 昨天 20:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 什么是OpenAI库?
是OpenAI公司发布的python SDK,便于调用大模型。现在很多大模型服务商都兼容OpenAI SDK的调用。

2. 基础操作
  1. # In[1]
  2. from openai import OpenAI

  3. # 1.获取client 对象,OpenAI类对象
  4. client = OpenAI(base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")   #模型地址

  5. # 2.调用模型
  6. response = client.chat.completions.create(
  7.     model = "qwen3-max",  #模型名称
  8.     messages= [
  9.         {"role": "system", "content" : "你是一个python编程专家,并且不说废话,简单回答"},  #约束模型所扮演的角色
  10.         {"role": "assistant", "content" : "好的,我是编程专家,并且话不多,你要问什么?"},  #模型之前生成的回复,用于构建多轮对话上下文,让模型记住历史交互内容
  11. {"role": "user", "content" : "使用python打印出1-10"} #用户的指令
  12.         ]
  13.     )

  14. # 3.处理结果
  15. print(response.choices[0].message.content)  
复制代码

3. 流式输出
效果:模型回答一个字一个字的打印出来
  1. from openai import OpenAI

  2. # 1.获取client 对象,OpenAI类对象
  3. client = OpenAI(base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
  4.       
  5.        )



  6. # 2.调用模型
  7. response = client.chat.completions.create(
  8.     model = "qwen3-max",
  9.     messages= [
  10.         {"role": "system", "content" : "你是一个python编程专家,话有点多"},
  11.         {"role": "assistant", "content" : "好的,我是编程专家,并且话有点多,你要问什么?"},
  12.         {"role": "user", "content" : "使用python打印出1-10"}
  13.         ],
  14.     stream = True
  15.     )

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

  18. for chunk in response:
  19.    print(chunk.choices[0].delta.content,
  20.     end = ' ' , #每一段之间以空格分隔
  21.     flush = 'True' #立刻刷新缓冲区
  22.     )
复制代码

4. 附带历史消息调用模型
当前的历史消息是一次性的,如果是生产系统可以将消息保存到文件、数据库等持久化工具内,需要的时候提取使用
  1. from openai import OpenAI

  2. # 1.获取client 对象,OpenAI类对象
  3. client = OpenAI(base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
  4.       
  5.        )



  6. # 2.调用模型
  7. response = client.chat.completions.create(
  8.     model = "qwen3-max",
  9.     messages= [
  10.          {"role":"system","content":"你是AI助理,回答很简洁"},
  11.          {"role":"user","content":"小明有2条宠物狗"},
  12.          {"role":"assistant", "content":"好的"},
  13.          {"role":"user","content":"小红有3只宠物猫"},
  14.          {"role":"assistant","content":"好的"},
  15.          {"role":"user","content":"总共有几个宠物?"}
  16.         ],
  17.     stream = True
  18.     )

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

  21. for chunk in response:
  22.    print(chunk.choices[0].delta.content,
  23.     end = ' ' , #每一段之间以空格分隔
  24.     flush = 'True' #立刻刷新缓冲区
  25.     )
复制代码

学习视频:【黑马程序员大模型RAG与Agent智能体项目实战教程,基于主流的LangChain技术从大模型提示词到实战项目】
https://www.bilibili.com/video/BV1yjz5BLEoY/?p=10&share_source=copy_web&vd_source=792a2cb63a1882bff4ed856eadc41a71



本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 20:45 | 显示全部楼层
你好!我来为你解释OpenAI库的基础使用。

1. 什么是OpenAI库?
OpenAI库是OpenAI公司发布的Python SDK,方便调用大语言模型。现在很多大模型服务商(如阿里云等)都兼容OpenAI SDK的调用方式。

2. 基础操作
基础操作分为三个步骤:获取client对象、调用模型、处理结果。
代码示例:
  1. from openai import OpenAI

  2. # 1. 获取client对象
  3. client = OpenAI(base_url="[url=https://dashscope.aliyuncs.com/compatible-mode/v1")]https://dashscope.aliyuncs.com/compatible-mode/v1")[/url]

  4. # 2. 调用模型,注意messages需要是一个列表
  5. response = client.chat.completions.create(
  6.     model="qwen3-max",
  7.     messages=[
  8.         {"role": "user", "content": "你好"}
  9.     ]
  10. )

  11. # 3. 处理结果
  12. print(response.choices[0].message.content)
复制代码

说明:
- messages 参数是一个列表,每个元素是字典,包含 role(如"user"或"assistant")和 content(消息内容)。
- 结果中,通过 response.choices[0].message.content 获取模型回复。

3. 流式输出
流式输出让模型回答逐字显示,提升交互体验。
代码示例:
  1. from openai import OpenAI

  2. client = OpenAI(base_url="[url=https://dashscope.aliyuncs.com/compatible-mode/v1")]https://dashscope.aliyuncs.com/compatible-mode/v1")[/url]

  3. response = client.chat.completions.create(
  4.     model="qwen3-max",
  5.     messages=[
  6.         {"role": "user", "content": "你好"}
  7.     ],
  8.     stream=True  # 启用流式输出
  9. )

  10. for chunk in response:
  11.     if chunk.choices[0].delta.content is not None:
  12.         print(chunk.choices[0].delta.content, end='', flush=True)  # flush应为布尔值True
复制代码

修正要点:
- flush=True 是布尔值,不是字符串。
- 需要检查 delta.content 是否不为None,避免打印空值。

4. 附带历史消息调用模型
多轮对话需要传递历史消息。注意:当前示例中消息是临时的,生产环境可持久化到文件或数据库。
代码示例:
  1. from openai import OpenAI

  2. client = OpenAI(base_url="[url=https://dashscope.aliyuncs.com/compatible-mode/v1")]https://dashscope.aliyuncs.com/compatible-mode/v1")[/url]

  3. # 历史消息列表,包含多轮对话
  4. history_messages = [
  5.     {"role": "user", "content": "你好"},
  6.     {"role": "assistant", "content": "你好!有什么可以帮助你的?"},
  7.     {"role": "user", "content": "请介绍Python"}
  8. ]

  9. response = client.chat.completions.create(
  10.     model="qwen3-max",
  11.     messages=history_messages,  # 传入历史消息
  12.     stream=False  # 关闭流式输出,若需流式可设为True
  13. )

  14. print(response.choices[0].message.content)
复制代码

提示:持久化历史消息时,可每次调用后追加新消息到存储,下次调用时加载整个列表。

这些是OpenAI库的基础用法。如果你有更多问题,欢迎继续交流!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 20:48 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 20:50 | 显示全部楼层


看到你开心的表情,我也很高兴!

看来你对OpenAI库的基础使用已经有了初步了解。如果在实际编码中遇到任何具体问题(比如messages列表具体该怎么写、如何保存对话历史、或者API密钥的设置等),随时可以提出,我会帮你一步步分析和解决。

祝你学习愉快!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 21:40 | 显示全部楼层
FishC 发表于 2026-3-6 20:50
看到你开心的表情,我也很高兴!

看来你对OpenAI库的基础使用已经有了初步了解。如果在实 ...

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 21:41 | 显示全部楼层
糖逗 发表于 2026-03-06 21:40
FishC 发表于 2026-3-6 20:50
看到你开心的表情,我 ...


哈哈,看到你的笑脸,感觉你已经成功运行了代码,或者对OpenAI的使用有了更清晰的理解!

OpenAI库的基础操作确实不难,关键就是掌握 client 的创建、 messages 列表的构建,以及如何从响应中提取结果。

如果你在后续的实践中遇到了具体的报错信息,或者想了解如何构建一个完整的对话机器人、如何调整模型参数(如 temperature、max_tokens 等),随时都可以来问。这些都是在入门后很自然会遇到,也非常值得探索的内容。

继续加油,期待看到你更多的进展!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-7 07:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表