×

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

作者:Terry2024.02.04来源:Web前端之家浏览:640评论:0
关键词:OpenAI

随着 OpenAI 现在支持高达 GPT-4 Turbo 的模型,Python 开发人员拥有了探索高级 AI 功能的绝佳机会。本教程深入介绍了如何将 ChatGPT API 集成到 Python 脚本中,指导您完成初始设置阶段并实现有效的 API 使用。

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

由于 GPT-4 Turbo 更先进,而且比 GPT-4 便宜三倍,现在是在 Python 中利用这个强大 API 的最佳时机,所以让我们开始吧!

设置您的环境

首先,我们将指导您设置环境以使用 Python 中的 OpenAI API。初始步骤包括安装必要的库、设置 API 访问以及处理 API 密钥和身份验证。

安装必要的Python库

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

python -m venv chatgpt_env

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

  • chatgpt_env\Scripts\activate(视窗)

  • source chatgpt_env/bin/activate(macOS 或 Linux)

接下来,您需要安装所需的 Python 库,其中包括用于与 OpenAI API 交互的 OpenAI Python 客户端库,以及用于处理配置的 python-dotenv 包。要安装这两个软件包,请运行以下命令:

pip install openai python-dotenv

设置 OpenAI API 访问

要发出 OpenAI API 请求,您必须首先在 OpenAI 平台上注册并生成您唯一的 API 密钥。按着这些次序:

  1. 访问 OpenAI 的API 密钥页面并创建一个新帐户,或者如果您已有帐户,请登录。

  2. 登录后,导航至 API 密钥部分,然后单击“创建新密钥”。

  3. 复制生成的 API 密钥以供以后使用。否则,如果您丢失了 API 密钥,则必须生成新的 API 密钥。您将无法通过 OpenAI 网站查看 API 密钥。

image.png

OpenAI 的 API 密钥页面

image.png


生成的 API 密钥现在可以使用

API 密钥和身份验证

获取 API 密钥后,出于安全目的,我们建议将其存储为环境变量。要管理环境变量,请使用 python-dotenv 包。要设置包含 API 密钥的环境变量,请按照以下步骤操作:

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

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

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

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

  # Load the API key from the .env file
  load_dotenv()
  client = OpenAI(api_key=os.environ.get("CHAT_GPT_API_KEY"))

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

现在您已添加 API 密钥,并且您的环境已设置完毕并准备好在 Python 中使用 OpenAI API。在本文的下一部分中,我们将探索与 API 交互并使用这个强大的工具构建聊天应用程序。

请记住在运行之前将上面的代码片段添加到下面的每个代码部分。

在 Python 中使用 OpenAI API

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

创建简单的 ChatGPT 请求

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

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

# Create a chat completion
  chat_completion = client.chat.completions.create(
      model="gpt-4",
      messages=[{"role": "user", "content": "query"}]
  )
  print(chat_completion.choices[0].message.content)

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

将 替换query为您想要运行的提示符,并随意使用任何受支持的 GPT 模型,而不是上面选择的 GPT-4。

处理错误

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


# Try to create a chat completion
try:
    chat_completion = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": "query"}],
        temperature=1,
        max_tokens=150  # Adjust the number of tokens as needed
    )
    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 和 GPT-4 分别为 0 - 7 和 1。

除了上述参数之外,您还可以使用许多其他参数和配置来按照您想要的方式使用 GPT 的功能。

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

API 集成的先进技术

在本节中,我们将探索将 OpenAI API 集成到 Python 项目中的高级技术,重点关注自动化任务、使用 Python 请求进行数据检索以及管理大规模 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)

# Example usage
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库直接与OpenAI API交互,而无需依赖OpenAI库。此方法使您可以更好地控制 get 请求,并灵活地调用 API 。

以下示例需要 requests 库(如果没有,则pip install requests先运行):

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

data = {
    'model': 'gpt-4',  # Update to the desired model
    '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 请求,并使用标头和数据作为参数。JSON 响应可以在您的 Python 项目中解析和使用。

管理大规模 API 请求

在处理大型项目时,有效管理 API 请求非常重要。这可以通过结合批处理、限制和缓存等技术来实现。

  • 配料。n使用OpenAI 库中的参数将多个请求合并到单个 API 调用中: n = number_of_responses_needed

  • 节流。实施一个系统来限制 API 调用的速率,避免过度使用或超载 API。

  • 缓存。存储已完成的 API 请求的结果,以避免重复调用类似的提示或请求。

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

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

实际应用:实际项目中的 OpenAI API

将 OpenAI API 纳入您的实际项目可以带来许多好处。在本节中,我们将讨论两个具体应用:将 ChatGPT 集成到 Web 开发中以及使用 ChatGPT 和 Python 构建聊天机器人。

将 ChatGPT 集成到 Web 开发中

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)

# Use this function to generate content
description = generate_content("Write a short description of a hiking backpack")

然后,您还可以编写代码与 HTML 和 JavaScript 集成,description以在您的网站上显示生成的内容。

使用 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)

# Taking user input from the command line
user_input = input("Enter your prompt: ")
response = get_chatbot_response(user_input)
print(response)

但由于没有循环,脚本运行一次就会结束,所以考虑添加条件逻辑。例如,我们添加了一个基本的条件逻辑,其中脚本将继续寻找用户提示,直到用户说出停止短语“退出”或“退出”。

考虑到上述逻辑,我们在 OpenAI API 端点上运行聊天机器人的完整最终代码可能如下所示:

from openai import OpenAI
import os
from dotenv import load_dotenv

# Load the API key from the .env file
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 命令提示符下运行时的外观。

image.png

希望这些示例能够帮助您开始尝试 ChatGPT AI。总体而言,OpenAI 为开发人员提供了大量机会,让他们可以使用其 API 创建令人兴奋的新产品,并且可能性是无限的。

OpenAI API 限制和定价

虽然 OpenAI API 功能强大,但也存在一些限制:

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

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

  • 价钱。OpenAI API 不是免费提供的,它遵循自己的定价方案,与模型订阅费分开。

结论

探索 Python 中的 ChatGPT 模型 API 的潜力可以为各种应用程序(例如客户支持、虚拟助理和内容生成)带来重大进步。通过将这个强大的 API 集成到您的项目中,您可以在 Python 应用程序中无缝地利用 GPT 模型的功能。

您的支持是我们创作的动力!
温馨提示:本文作者系Terry ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/chetadf234234234.html

网友评论文明上网理性发言 已有0人参与

发表评论: