Python3入门指南Python语言的特点和实际应用Python3环境搭建配置VSCode进行Python开发Python基础语法Python变量与数据类型Python数据类型转换Python解释器使用Python注释使用Python运算符Python数字类型Python字符串操作Python列表操作Python元组使用Python字典使用Python集合使用Python条件控制详解Python循环语句详解Python编程入门实践Python推导式详解Python迭代器和生成器Python with语句详解Python函数详解Python lambda(匿名函数)Python装饰器Python数据结构Python模块和包使用Python中__name__和__main__的用法Python输入输出:从基础到文件操作Python文件操作Python OS模块使用Python错误和异常处理Python面向对象编程Python命名空间和作用域Python虚拟环境:venv详细教程Python类型注解Python标准库常用模块Python正则表达式Python CGI编程Python MySQL(mysql-connector驱动)Python MySQL(PyMySQL驱动)Python网络编程Python发送邮件Python多线程编程Python XML解析Python JSON解析Python日期和时间处理Python操作MongoDBPython urllib库使用Python uWSGI 安装与配置Python pip包管理工具Python operator模块Python math模块Python requests模块HTTP请求Python random模块Python OpenAI库Python AI绘画制作Python statistics模块Python hashlib模块:哈希加密Python量化交易Python pyecharts数据可视化Python Selenium网页自动化Python BeautifulSoup网页数据提取Python Scrapy爬虫框架Python Markdown转HTMLPython sys模块Python Pickle模块:数据存储Python subprocess模块Python queue队列模块Python StringIO内存文件操作Python logging日志记录Python datetime日期时间处理Python re正则表达式Python csv表格数据处理Python threading 多线程编程Python asyncio 异步编程Python PyQt 图形界面开发Python 应用方向和常用库框架

Python OpenAI库

OpenAI Python库让开发者能够轻松使用各种人工智能模型。通过这个库,我们可以在自己的程序中添加文本生成、图像创建、语音识别等智能功能。


安装和设置

首先需要安装OpenAI库:

pip install openai

如果你使用Python 3,可能需要用pip3:

pip3 install openai

安装完成后,还需要获取api密钥。访问OpenAI官网注册账号,然后在API密钥页面生成密钥。


基本使用方法

下面是使用OpenAI库的基本代码结构:

from openai import OpenAI

# 创建客户端,需要填入你的API密钥
client = OpenAI(api_key="你的API密钥")

# 发送请求获取响应
response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": "请用简单的话解释什么是人工智能"}
    ]
)

# 显示回答
print(response.choices[0].message.content)


国内替代方案

由于国内访问OpenAI可能遇到困难,我们可以使用阿里云百炼等国内服务。这些服务提供了与OpenAI兼容的接口。

使用阿里云百炼

首先访问阿里云百炼平台(bailian.console.aliyun.com),注册账号并获取API密钥。

使用示例:

from openai import OpenAI

def ask_question():
    client = OpenAI(
        api_key="你的阿里云API密钥",  # 替换成你的实际密钥
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    
    completion = client.chat.completions.create(
        model="qwen-plus",  # 使用通义千问模型
        messages=[
            {'role': 'system', 'content': '你是一个有用的助手。'},
            {'role': 'user', 'content': 'Python是什么?'}
        ]
    )
    
    answer = completion.choices[0].message.content
    print(answer)

if __name__ == '__main__':
    ask_question()

这段代码会向AI模型提问"Python是什么?"并显示回答。


对话聊天功能

AI模型可以记住对话上下文,进行连续对话:

from openai import OpenAI

def chat_example():
    client = OpenAI(
        api_key="你的API密钥",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    
    # 定义对话历史
    messages = [
        {'role': 'system', 'content': '你是一个编程专家,用中文回答。'},
        {'role': 'user', 'content': '怎么学习Python?'}
    ]
    
    # 第一次提问
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=messages
    )
    
    first_answer = completion.choices[0].message.content
    print("AI回答:", first_answer)
    
    # 添加AI的回答到对话历史
    messages.append({'role': 'assistant', 'content': first_answer})
    
    # 继续提问,AI会记住之前的对话
    messages.append({'role': 'user', 'content': '能推荐具体的学习资源吗?'})
    
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=messages
    )
    
    second_answer = completion.choices[0].message.content
    print("AI继续回答:", second_answer)

chat_example()


流式输出

对于长回答,可以使用流式输出,让文字逐个显示:

from openai import OpenAI

def stream_example():
    client = OpenAI(
        api_key="你的API密钥",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )

    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=[
            {'role': 'user', 'content': '用300字介绍中国的长城'}
        ],
        stream=True  # 启用流式输出
    )

    print("AI回答:", end="", flush=True)
    for chunk in completion:
        if chunk.choices[0].delta.content is not None:
            print(chunk.choices[0].delta.content, end="", flush=True)
    print()  # 最后换行

stream_example()


实际应用示例

代码助手

from openai import OpenAI

def code_helper():
    client = OpenAI(
        api_key="你的API密钥",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    
    question = """
    请帮我写一个Python函数,功能是:
    1. 接收一个数字列表
    2. 返回列表中所有偶数的平方
    3. 包含详细的代码注释
    """
    
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=[
            {'role': 'system', 'content': '你是一个专业的Python程序员。'},
            {'role': 'user', 'content': question}
        ]
    )
    
    print("生成的代码:")
    print(completion.choices[0].message.content)

code_helper()

学习辅导助手

from openai import OpenAI

def study_assistant():
    client = OpenAI(
        api_key="你的API密钥",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    
    topic = "光合作用"
    grade = "初中"
    
    prompt = f"""
    请为{grade}学生解释{topic}:
    1. 用简单易懂的语言
    2. 举一个生活中的例子
    3. 列出3个关键点
    """
    
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=[{'role': 'user', 'content': prompt}]
    )
    
    print(completion.choices[0].message.content)

study_assistant()


参数调整

通过调整参数可以控制AI的回答:

from openai import OpenAI

def controlled_response():
    client = OpenAI(
        api_key="你的API密钥",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=[{'role': 'user', 'content': '写一个关于友谊的短故事'}],
        max_tokens=150,     # 限制回答长度
        temperature=0.7,    # 控制创造性(0-1,越小越确定)
    )
    
    print(completion.choices[0].message.content)

controlled_response()


错误处理

在实际使用中需要处理可能出现的错误:

from openai import OpenAI
import time

def safe_ai_request(prompt, max_retries=3):
    client = OpenAI(
        api_key="你的API密钥",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    
    for attempt in range(max_retries):
        try:
            completion = client.chat.completions.create(
                model="qwen-plus",
                messages=[{'role': 'user', 'content': prompt}],
                timeout=30  # 30秒超时
            )
            return completion.choices[0].message.content
            
        except Exception as e:
            print(f"请求失败,第{attempt + 1}次重试... 错误: {e}")
            if attempt < max_retries - 1:
                time.sleep(2)  # 等待2秒后重试
            else:
                return "请求失败,请检查网络连接和API密钥"
    
    return "未知错误"

# 使用示例
result = safe_ai_request("什么是机器学习?")
print(result)


费用管理

使用AI服务需要注意费用控制:

from openai import OpenAI

class AIChat:
    def __init__(self, api_key):
        self.client = OpenAI(
            api_key=api_key,
            base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
        )
        self.conversation_history = []
        self.total_tokens = 0
    
    def add_message(self, role, content):
        self.conversation_history.append({"role": role, "content": content})
    
    def ask(self, question, max_tokens=500):
        self.add_message("user", question)
        
        completion = self.client.chat.completions.create(
            model="qwen-plus",
            messages=self.conversation_history,
            max_tokens=max_tokens
        )
        
        answer = completion.choices[0].message.content
        self.add_message("assistant", answer)
        
        # 统计使用情况
        if hasattr(completion, 'usage'):
            self.total_tokens += completion.usage.total_tokens
            print(f"本次使用token数: {completion.usage.total_tokens}")
            print(f"累计使用token数: {self.total_tokens}")
        
        return answer

# 使用示例
chat_bot = AIChat("你的API密钥")
response = chat_bot.ask("Python有哪些主要应用领域?")
print(response)

response2 = chat_bot.ask("其中哪个最适合初学者?")
print(response2)


创建完整的对话程序

from openai import OpenAI

def interactive_chat():
    client = OpenAI(
        api_key="你的API密钥",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    
    messages = [
        {'role': 'system', 'content': '你是一个友好、乐于助人的助手。用中文回答,回答要简洁明了。'}
    ]
    
    print("AI助手已启动!输入'退出'结束对话")
    print("-" * 50)
    
    while True:
        user_input = input("你: ").strip()
        
        if user_input.lower() in ['退出', 'exit', 'quit']:
            print("再见!")
            break
        
        if not user_input:
            continue
        
        messages.append({'role': 'user', 'content': user_input})
        
        try:
            completion = client.chat.completions.create(
                model="qwen-plus",
                messages=messages,
                max_tokens=300
            )
            
            ai_response = completion.choices[0].message.content
            print(f"AI: {ai_response}")
            
            messages.append({'role': 'assistant', 'content': ai_response})
            
        except Exception as e:
            print(f"出错: {e}")

# 启动对话
interactive_chat()


使用建议

  1. 保护API密钥:不要将密钥直接写在代码中,可以使用环境变量

  2. 控制费用:设置使用限制,避免意外产生高额费用

  3. 错误处理:添加重试机制和超时设置

  4. 内容审核:对用户输入和AI输出进行适当检查

  5. 用户体验:使用流式输出改善长时间等待的感受


环境变量配置

更安全的方式是使用环境变量存储API密钥:

import os
from openai import OpenAI

# 从环境变量读取API密钥
api_key = os.getenv('ALIYUN_API_KEY')

if not api_key:
    print("请设置ALIYUN_API_KEY环境变量")
    exit(1)

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

在命令行中设置环境变量:

export ALIYUN_API_KEY="你的实际API密钥"


参考手册

分类方法 / 属性方法 / 属性示例代码
安装与导入pip install openai安装官方 Python SDKimport 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)

总结

OpenAI Python库为开发者提供了强大的人工智能能力。通过国内服务如阿里云百炼,我们可以方便地在项目中使用这些功能。

主要使用步骤:

  1. 安装openai库

  2. 获取API密钥

  3. 创建客户端连接

  4. 发送请求并处理响应

这个库可以用于构建聊天机器人、代码助手、学习工具等各种智能应用。使用时要注意费用控制和错误处理,确保程序的稳定性和安全性。

本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!

链接: https://fly63.com/course/36_2127

目录选择