OpenAI库学习笔记 - 从入门到实战

本文记录了OpenAI库(兼容阿里云百炼平台)的学习过程,包括API调用、流式输出和历史消息管理等核心功能。


📚 目录


01 - 测试API KEY的使用

📝 学习目标

掌握OpenAI库的基本配置和API调用流程。

💡 核心代码

import os
from openai import OpenAI

# 创建客户端对象
client = OpenAI(
    api_key="your-api-key-here",  # 替换为你的API Key
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

# 调用模型
completion = client.chat.completions.create(
    model="deepseek-v3.2",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "帮我分析agent开发未来的前景?"},
    ],
    stream=True
)

# 流式输出结果
for chunk in completion:
    print(chunk.choices[0].delta.content, end="", flush=True)

🔑 关键知识点

  1. 客户端初始化

    • api_key: 你的API密钥(需要在阿里云百炼平台获取)
    • base_url: 阿里云百炼的兼容模式接口地址
  2. 模型调用参数

    • model: 指定使用的模型(如 deepseek-v3.2)
    • messages: 消息列表,包含角色和内容
    • stream: 是否启用流式输出
  3. 消息角色说明

    • system: 系统提示词,定义AI的行为
    • user: 用户输入的问题

02 - OpenAI库的基本使用

📝 学习目标

学习如何使用多轮对话和角色设定来调用模型。

💡 核心代码

from openai import OpenAI

# 1. 获取client对象
client = OpenAI(
    api_key="your-api-key-here",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

# 2. 模型调用
response = client.chat.completions.create(
    model="deepseek-v3.2",
    messages=[
        {"role": "system", "content": "你是一个python编程专家"},
        {"role": "assistant", "content": "我是编程专家, 你要问什么"},
        {"role": "user", "content": "你是谁"}
    ]
)

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

🔑 关键知识点

  1. 三步调用流程

    • 步骤1: 创建客户端对象
    • 步骤2: 调用模型API
    • 步骤3: 处理返回结果
  2. 角色类型扩展

    • assistant: AI助手的回复,可用于模拟对话历史
  3. 非流式输出

    • 直接通过 response.choices[0].message.content 获取完整回复
    • 适合需要一次性获取完整结果的场景

03 - OpenAI库的流式输出

📝 学习目标

掌握流式输出的使用方法,实现实时响应效果。

💡 核心代码

from openai import OpenAI

# 1. 获取client对象
client = OpenAI(
    api_key="your-api-key-here",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

# 2. 模型调用(开启流式输出)
response = client.chat.completions.create(
    model="deepseek-v3.2",
    messages=[
        {"role": "system", "content": "你是一个python编程专家"},
        {"role": "assistant", "content": "我是编程专家, 你要问什么"},
        {"role": "user", "content": "你是谁"}
    ],
    stream=True  # 开启流式输出
)

# 3. 处理流式结果
for chunk in response:
    print(chunk.choices[0].delta.content, end=" ", flush=True)

🔑 关键知识点

  1. 流式输出的优势

    • ✅ 实时显示生成内容,提升用户体验
    • ✅ 减少等待时间,适合长文本生成
    • ✅ 可以提前中断生成过程
  2. 流式输出的实现

    • 设置 stream=True 参数
    • 使用 for 循环遍历响应块
    • 通过 chunk.choices[0].delta.content 获取增量内容
  3. 打印技巧

    • end=" ": 不换行,用空格分隔
    • flush=True: 立即刷新输出缓冲区,实现实时显示

04 - OpenAI库附带历史消息调用模型

📝 学习目标

学习如何通过历史消息实现上下文记忆功能。

💡 核心代码

from openai import OpenAI

# 1. 获取client对象
client = OpenAI(
    api_key="your-api-key-here",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

# 2. 模型调用(包含完整对话历史)
response = client.chat.completions.create(
    model="deepseek-v3.2",
    messages=[
        {"role": "system", "content": "你是AI助理,回答很简洁"},
        {"role": "user", "content": "小明有2条宠物狗"},
        {"role": "assistant", "content": "好的"},
        {"role": "user", "content": "小红有3条宠物猫"},
        {"role": "assistant", "content": "好的"},
        {"role": "user", "content": "总共有几个宠物?"},
    ],
    stream=True
)

# 3. 处理结果
for chunk in response:
    print(chunk.choices[0].delta.content, end=" ", flush=True)

🔑 关键知识点

  1. 历史消息的作用

    • 🧠 让AI具备上下文记忆能力
    • 🔗 实现多轮对话的连贯性
    • 📊 AI可以基于历史信息进行推理
  2. 消息列表的构建

    • 按时间顺序排列所有对话
    • 交替使用 userassistant 角色
    • system 消息通常放在最前面
  3. 实际应用场景

    • 聊天机器人的对话管理
    • 需要上下文理解的问答系统
    • 多步骤任务的执行

🎯 总结与进阶

核心要点回顾

功能 关键参数 适用场景
基本调用 stream=False 简单问答,一次性获取结果
流式输出 stream=True 长文本生成,实时交互
历史消息 messages 列表 多轮对话,上下文理解

最佳实践建议

  1. API Key 安全

    • ⚠️ 不要将API Key硬编码在代码中
    • ✅ 使用环境变量或配置文件管理
    • ✅ 代码上传前务必移除敏感信息
  2. 性能优化

    • 对于长对话,定期清理历史消息避免token超限
    • 合理使用 system 提示词控制回复风格
    • 流式输出适合需要实时反馈的场景
  3. 错误处理

    • 添加异常捕获机制
    • 处理网络超时和API限流
    • 记录日志便于问题排查

下一步学习方向

  • 🚀 Function Calling(函数调用)
  • 🎨 多模态能力(图像理解)
  • 🔧 Agent开发框架(LangChain、AutoGPT)
  • 📊 Token管理和成本优化

📖 参考资源


💡 提示: 本文所有代码示例均已测试通过,可直接运行。记得替换为你自己的API Key!

📝 作者: yedou
📅 日期: 2026-01-22
🏷️ 标签: OpenAI Python AI Agent开发 大模型

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐