Python OpenAI
openai 是一个强大的 Python 库,用于与 OpenAI 的一系列模型和服务进行交互。

openai 封装了所有 RESTful API 调用,让开发者能轻松地在自己的 Python 应用中集成强大的 AI 能力,例如自然语言处理、图像生成和语音识别等。

主要功能:

文本生成:使用 GPT-4 或 GPT-5 等模型生成文章、代码、摘要、对话等。
图像生成:通过 DALL-E 模型根据文本描述创建图像。
嵌入(Embeddings):将文本转换成向量表示,常用于语义搜索、文本分类和聚类等任务。
语音转文本:使用 Whisper 模型将音频文件转录成文本。
微调(Fine-tuning):通过提供自己的数据集来训练一个更具针对性的模型。
助手(Assistants)API:构建能够理解上下文、调用工具并进行长期交互的复杂应用。
openai 开源地址:https://github.com/openai/openai-python

如何使用?
首先,你需要用 pip 安装 openai 库:

# 如果下述命令报错,请将pip替换为pip3
pip install openai
然后需要去 OpenAI 官网注册账号,并在 API 密钥页面生成一个 API Key。

实例
import os
from openai import OpenAI

client = OpenAI(
    # This is the default and can be omitted
    api_key="你申请的 API key",
)

response = client.responses.create(
    model="gpt-4o",
    instructions="You are a coding assistant that talks like a pirate.",
    input="How do I check if a Python object is an instance of a class?",
)

print(response.output_text)
我们国内目前访问 openai 还是有点麻烦,所以本章节采阿里云百炼的 AI 模型来调用演示,国内很多也支持 openai,比如 DeepSeek。

阿里云百炼的通义千问模型支持 OpenAI 兼容接口,您只需调整 API Key、BASE_URL 和模型名称,即可将原有 OpenAI 代码迁移至阿里云百炼服务使用。

我们需要开通阿里云百炼模型服务并获得 API-KEY。

我们可以先使用阿里云主账号访问百炼模型服务平台:https://bailian.console.aliyun.com/,然后点击右上角登录,登录成功后点击右上角的齿轮⚙️图标,选择 API key,然后复制 API key,如果没有也可以创建 API key:

开通阿里云百炼不会产生费用,仅模型调用(超出免费额度后)、模型部署、模型调优会产生相应计费。

现在要使用 API,都需要按 token 来计费,还好都不贵,我们可以先购买个最便宜的包:阿里云百炼大模型服务平台。

使用方式
接下来我们使用 OpenAI SDK 访问百炼服务上的通义千问模型。

非流式调用示例
实例
from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        api_key="sk-xxx",  # 请用阿里云百炼 API Key
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",  # 填写DashScope SDK的base_url
    )
    completion = client.chat.completions.create(
        model="qwen-plus",  # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
        messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
                  {'role': 'user', 'content': '你是谁?'}]
        )
    # json 数据
    #print(completion.model_dump_json())
    print(completion.choices[0].message.content)

if __name__ == '__main__':
    get_response()
运行代码可以获得以下结果:

我是通义千问,阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我可以帮助你回答问题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等等,还能表达观点,玩游戏等。如果你有任何问题或需要帮助,欢迎随时告诉我!
流式调用示例
实例
from openai import OpenAI

def get_response():
    client = OpenAI(
        api_key="sk-xxx",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )

    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': '你是谁?'}
        ],
        stream=True,
        stream_options={"include_usage": True}
    )

    for chunk in completion:
        # chunk 里可能没有 choices 或 delta
        if hasattr(chunk, "choices") and len(chunk.choices) > 0:
            choice = chunk.choices[0]
            if hasattr(choice, "delta") and hasattr(choice.delta, "content"):
                print(choice.delta.content, end='', flush=True)

if __name__ == '__main__':
    get_response()

运行代码可以获得以下结果:

我是通义千问,阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我可以帮助你回答问题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等等,还能表达观点,玩游戏等。如果你有任何问题或需要帮助,欢迎随时告诉我!
参考手册
>功能说明
分类    方法 / 属性    方法 / 属性    示例代码
安装与导入    pip install openai    安装官方 Python SDK    import openai
客户端初始化    openai.OpenAI(api_key="API_KEY")    创建客户端对象    client = openai.OpenAI(api_key="sk-xxx")
模型管理    client.models.list()    获取可用模型列表    models = client.models.list()
文本补全    client.completions.create()    根据提示生成文本    client.completions.create(model="text-davinci-003", prompt="你好", max_tokens=50)
聊天生成    client.chat.completions.create()    基于消息生成对话    client.chat.completions.create(model="gpt-3.5-turbo", messages=[{'role':'user','content':'你好'}])
流式输出    stream=True    边生成边输出    for chunk in client.chat.completions.create(…, stream=True): print(chunk.choices[0].delta.content, end='')
上传文件    client.files.upload()    上传训练或微调文件    client.files.upload(file=open("data.jsonl","rb"), purpose="fine-tune")
查看文件    client.files.list()    获取文件列表    client.files.list()
微调模型    client.fine_tunes.create()    对模型进行微调    client.fine_tunes.create(training_file="file-xxx", model="davinci")
生成嵌入    client.embeddings.create()    获取文本向量    client.embeddings.create(input="Hello world", model="text-embedding-3-small")
音频转文本    client.audio.transcriptions.create()    将音频转为文字    client.audio.transcriptions.create(file=open("audio.mp3","rb"), model="whisper-1")
错误处理    openai.error.OpenAIError    捕获 SDK 错误    try: … except openai.error.OpenAIError as e: print(e)
配置超时    client = OpenAI(api_key="xxx", timeout=30)    设置请求超时    client = OpenAI(api_key="sk-xxx", timeout=30)
更多 API 参考:

Logo

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

更多推荐