使用OpenAI API在Python中构建您自己的AI工具

随着OpenAI现已支持高达GPT-4 Turbo的模型,Python开发者迎来了一个探索高级AI功能的绝佳机会。本教程将深入探讨如何将ChatGPT API整合到您的Python脚本中,从初始设置阶段到有效使用API,一步步指导您。

ChatGPT API指的是允许开发者与GPT模型互动并利用其生成对话响应的编程接口。但实际上,这只是OpenAI的通用API,适用于他们所有的模型。

鉴于GPT-4 Turbo更为先进且价格仅为GPT-4的三分之一,现在正是利用这一强大API的最佳时机。让我们开始吧!

Table of Contents

配置您的环境

首先,我们将指导您设置环境以使用Python与OpenAI API进行交互。初始步骤包括安装必要的库、设置API访问权限以及处理API密钥和认证。

安装必要的Python库

在开始之前,请确保您的系统上已安装Python。我们建议使用虚拟环境来保持一切井然有序。您可以使用以下命令创建虚拟环境:

python -m venv chatgpt_env

通过运行以下命令激活虚拟环境:

  • chatgpt_env\Scripts\activate (Windows)
  • source chatgpt_env/bin/activate (macOS或Linux)

接下来,您需要安装包括OpenAI Python客户端库(用于与OpenAI API交互)和python-dotenv包(用于处理配置)在内的必要Python库。要安装这两个包,请运行以下命令:

pip install openai python-dotenv

设置OpenAI API访问权限

要发起OpenAI API请求,您必须首先在OpenAI平台上注册并生成您的唯一API密钥。请按照以下步骤操作:

  1. 访问OpenAI的API密钥页面并创建新账户,或如果您已有账户则登录。
  2. 登录后,导航至API密钥部分并点击创建新的密钥
  3. 复制生成的API密钥以备后用。否则,一旦丢失,您将不得不重新生成一个新的API密钥。您无法通过OpenAI网站查看API密钥。

OpenAI的API密钥页面

当前可用的已生成API密钥

API密钥与认证

获取API密钥后,建议将其作为环境变量存储以确保安全。要管理环境变量,请使用python-dotenv包。设置包含您的API密钥的环境变量,请遵循以下步骤:

  1. 在项目目录中创建一个名为.env的文件。

  2. .env文件中添加以下行,将your_api_key替换为您之前复制的实际API密钥:CHAT_GPT_API_KEY=your_api_key

  3. 在您的Python代码中,使用python-dotenv包中的load_dotenv函数从.env文件加载API密钥:

  import openai
  from openai import OpenAI
  import os
  from dotenv import load_dotenv

  # 从.env文件加载API密钥
  load_dotenv()
  client = OpenAI(api_key=os.environ.get("CHAT_GPT_API_KEY"))

注意:在OpenAI Python库的最新版本中,您需要实例化一个OpenAI客户端以进行API调用,如下所示。这与先前版本不同,之前您可以直接使用全局方法。

现在您已添加API密钥,环境设置完毕,准备好使用OpenAI API进行Python编程。本文后续部分将探讨如何与API交互并利用这一强大工具构建聊天应用。

请记住,在运行以下每个代码段之前,务必添加上述代码片段。

在Python中使用OpenAI API

.env文件加载API后,我们可以在Python中实际开始使用它。要在Python中使用OpenAI API,我们可以通过客户端对象发起API调用。然后,我们可以将一系列消息作为输入传递给API,并接收模型生成的消息作为输出。

创建一个简单的ChatGPT请求

  1. 确保已完成以下步骤:创建虚拟环境、安装必要库、生成OpenAI密钥并在项目目录中创建.env文件。

  2. 使用以下代码片段设置一个简单的ChatGPT请求:

  # 创建聊天完成
  chat_completion = client.chat.completions.create(
      model="gpt-4",
      messages=[{"role": "user", "content": "query"}]
  )
  print(chat_completion.choices[0].message.content)

这里,client.chat.completions.createclient对象的方法调用chat属性访问API的聊天特定功能,而completions.create是一个方法,请求AI模型根据提供的输入生成响应或完成。

query替换为您希望运行的提示,并可自由使用任何支持的GPT模型替代上述的GPT-4。

错误处理

在发出请求时,可能会遇到各种问题,包括网络连接问题、速率限制超限或其他非标准响应状态码。因此,正确处理这些状态码至关重要。我们可以使用Python的tryexcept块来维护程序流程和更好的错误处理:

# 尝试创建聊天完成
try:
    chat_completion = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": "query"}],
        temperature=1,
        max_tokens=150  # 根据需要调整令牌数量
    )
    print(chat_completion.choices[0].message.content)

except openai.APIConnectionError as e:
    print("The server could not be reached")
    print(e.__cause__)

except openai.RateLimitError as e:
    print("A 429 status code was received; we should back off a bit.")

except openai.APIStatusError as e:
    print("Another non-200-range status code was received")
    print(e.status_code)
    print(e.response)

注意:您需要拥有可用信用额度才能使用OpenAI API的任何模型。如果您的账户创建已超过三个月,您的免费信用额度可能已过期,您需要购买额外信用(至少5美元)。

以下是一些进一步配置API请求的方法:

  • 最大令牌数。通过设置max_tokens参数来限制最大输出长度以满足您的需求。这是一种成本节约措施,但请注意,这仅会截断超过限制的生成文本,而不是使整体输出变短。
  • 温度。调整温度参数以控制随机性。(较高的值使响应更多样化,而较低的值产生更一致的答案。)

如果未手动设置任何参数,则使用相应模型的默认值,如GPT-3.5-turbo为0-7,GPT-4为1。

除了上述参数外,还有许多其他参数和配置可以进行,以便以您想要的方式充分利用GPT的功能。建议研究OpenAI的API文档以供参考。

尽管如此,无论进行了多少参数配置,有效的上下文提示仍然是必要的。

API集成的高级技巧

在本节中,我们将探讨如何将OpenAI API高级技术集成到您的Python项目中,重点关注任务自动化、使用Python requests进行数据检索以及管理大规模API请求。

利用OpenAI API自动化任务

为了提高Python项目的效率,您可以使用OpenAI API自动化各种任务。例如,您可能希望自动生成电子邮件回复、客户支持答案或内容创作。

以下是一个使用OpenAI API自动化任务的示例:

def automated_task(prompt):
    try:
        chat_completion = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": prompt}],
            max_tokens=250
        )
        return chat_completion.choices[0].message.content
    except Exception as e:
        return str(e)

# 示例用法
generated_text = automated_task("Write an short note that's less than 50 words to the development team asking for an update on the current status of the software update")
print(generated_text)

此函数接收一个提示,并返回生成的文本作为输出。

使用Python requests进行数据检索

您可以使用流行的requests库直接与OpenAI API交互,无需依赖OpenAI库。这种方法让您能更精细地控制GET请求,并在API调用中拥有更大的灵活性。

以下示例需要requests库(如果您尚未安装,请首先运行pip install requests):

headers = {
    'Content-Type': 'application/json',
    'Authorization': f'Bearer {api_key}',
}

data = {
    'model': 'gpt-4',  # 更新到所需模型
    'messages': [{'role': 'user', 'content': 'Write an interesting fact about Christmas.'}]
}

response = requests.post('https://api.openai.com/v1/chat/completions', headers=headers, json=data)
print(response.json())

这段代码展示了如何向OpenAI API发起一个POST请求,并通过headers和data作为参数。JSON响应可以被解析并在您的Python项目中使用。

管理大规模API请求

在大规模项目中工作时,高效管理API请求至关重要。这可以通过采用批处理、节流和缓存等技术来实现。

  • 批处理。将多个请求合并为一个API调用,使用OpenAI库中的n参数:n = 所需响应数量
  • 节流。实施系统以限制API调用的速率,避免过度使用或使API过载。
  • 缓存。存储已完成API请求的结果,以避免对类似提示或请求进行重复调用。

为有效管理API请求,需跟踪使用情况并相应调整配置设置。如有必要,考虑使用时间库在请求之间添加延迟或超时。

在Python项目中应用这些高级技术,将帮助您充分利用OpenAI API,同时确保API集成的高效性和可扩展性。

实际应用:OpenAI API在现实世界项目中的应用

将OpenAI API整合到您的真实项目中可以带来众多益处。本节我们将探讨两个具体应用:在Web开发中集成ChatGPT以及使用ChatGPT和Python构建聊天机器人。

在Web开发中集成ChatGPT

OpenAI API可用于创建互动性强、动态响应用户查询或需求的内容。例如,你可以利用ChatGPT生成个性化产品描述、创作引人入胜的博客文章,或者解答关于服务的常见问题。借助OpenAI API的强大功能及简单的Python代码,创新空间无限广阔。

以下是一个从Python后端发起API调用的简单示例:

def generate_content(prompt):
    try:
        response = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": prompt}]
        )
        return response.choices[0].message.content
    except Exception as e:
        return str(e)

# 使用此函数生成内容
description = generate_content("Write a short description of a hiking backpack")

随后,你还可以编写代码将description与HTML和JavaScript整合,以便在你的网站上展示生成的内容。

利用ChatGPT与Python构建聊天机器人

人工智能驱动的聊天机器人正逐渐成为提升用户体验的关键因素。通过结合ChatGPT的自然语言处理能力与Python,你可以打造出能够理解上下文并智能回应用户输入的聊天机器人。

考虑以下处理用户输入并获取响应的示例:

def get_chatbot_response(prompt):
    try:
        response = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": prompt}]
        )
        return response.choices[0].message.content
    except Exception as e:
        return str(e)

# 从命令行接收用户输入
user_input = input("Enter your prompt: ")
response = get_chatbot_response(user_input)
print(response)

但由于没有循环结构,脚本运行一次后即结束,因此建议加入条件逻辑。例如,我们添加了一个基本条件逻辑,使得脚本持续等待用户输入,直至用户输入停止短语“exit”或“quit”。

根据上述逻辑,我们最终完整的聊天机器人运行代码可能如下所示:

from openai import OpenAI
import os
from dotenv import load_dotenv

# 从 .env 文件加载 API 密钥
load_dotenv()
client = OpenAI(api_key=os.environ.get("CHAT_GPT_API_KEY"))

def get_chatbot_response(prompt):
    try:
        response = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": prompt}]
        )
        return response.choices[0].message.content
    except Exception as e:
        return str(e)

while True:
    user_input = input("You: ")
    if user_input.lower() in ["exit", "quit"]:
        print("Chat session ended.")
        break
    response = get_chatbot_response(user_input)
    print("ChatGPT:", response)

以下是在 Windows 命令提示符下运行的示例。

希望这些示例能帮助您开始尝试使用 ChatGPT AI。总体而言,OpenAI 为开发者提供了利用其 API 创造新奇产品的巨大机会,可能性无穷无尽。

OpenAI API 的限制与定价

尽管 OpenAI API 功能强大,但仍存在一些限制:

  • 数据存储。OpenAI 将您的 API 数据保留 30 天,使用 API 即表示同意数据存储。请注意您发送的数据。

  • 模型容量。聊天模型有最大令牌限制。(例如,GPT-3 支持 4096 个令牌。)如果 API 请求超出此限制,您需要截断或省略文本。

  • 定价。OpenAI API 并非免费,遵循其独立的定价方案,与模型订阅费用分开。更多定价信息,请参考 OpenAI 的定价详情。(再次提醒,GPT-4 Turbo 的定价是 GPT-4 的三分之一!)

结论

探索ChatGPT模型API在Python中的潜力,能为客户支持、虚拟助手及内容生成等应用带来显著进步。通过将这一强大的API整合到您的项目中,您可以无缝地在Python应用中利用GPT模型的能力。

如果您喜欢本教程,您可能还会对以下内容感兴趣:

Source:
https://www.sitepoint.com/python-build-ai-tools-openai-api/