使用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於Python中的最佳時機,讓我們開始吧!

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)

接下來,您需要安裝必要的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金鑰。您無法透過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密鑰,您的環境已經設置好,準備好在Python中使用OpenAI API。在本文的下一部分,我們將探討如何與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請求進行數據檢索,以及管理大規模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請求進行數據檢索

您可以使用流行的請求庫直接與OpenAI API互動,而無需依賴OpenAI庫。此方法讓您對GET請求有更多控制,並對您的API調用提供更大的靈活性。

以下示例需要請求庫(如果尚未安裝,請先運行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請求,並將標頭和數據作為參數。JSON響應可以被解析並應用於您的Python項目。

管理大規模API請求

在處理大型專案時,高效管理API請求至關重要。這可以透過採用批次處理、節流和快取等技術來實現。

  • 批次處理。將多個請求合併為一個API呼叫,使用OpenAI庫中的n參數:n = 所需回應數量
  • 節流。實施一個系統來限制API呼叫的頻率,避免過度使用或使API過載。
  • 快取。儲存已完成API請求的結果,以避免對類似提示或請求進行重複呼叫。

為有效管理API請求,請追蹤您的使用情況並相應調整配置設定。如有需要,可考慮使用時間庫在請求之間添加延遲或超時。

在您的Python專案中應用這些高級技巧,將幫助您最大限度地利用OpenAI API,同時確保高效和可擴展的API整合。

實際應用:OpenAI API在現實世界專案中的應用

將OpenAI API整合到您的現實世界專案中可以帶來眾多益處。在本節中,我們將討論兩個具體應用:在網頁開發中整合ChatGPT以及使用ChatGPT和Python構建聊天機器人。

在網頁開發中整合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”。

考慮到上述邏輯,我們在 OpenAI API 端點上運行聊天機器人的完整最終代碼可能如下所示:

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/