從零到AI高手:用OpenAI API極速打造智能應用!

像我之前也提到過,AI 的發展愈發迅猛這是無可置疑的,但很多人知道 AI 好,卻不會引進實際的業務中去。無論是市面上常見的文本生成工具,還是智能 Copilot,這些應用都展示了 AI 的強大能力。面對這些新技術,許多設計師可能會好奇:如何才能將這些能力運用到自己的項目中?其實你能用且會用 AI 工具做端外提效已經超過 80%的人了,但如何將能力接入端內?實實在在的給項目提效,而非個人。有些底層邏輯你還是要懂的。

OpenAI 的 GPT 模型是當前自然語言處理領域的核心技術之一。它不僅功能強大,而且極具靈活性,能夠應對多種復雜的任務。然而,對于許多設計師來說,如何實際操作這些模型,尤其是如何利用 OpenAI 提供的 API,仍然是一個挑戰。本文將詳細介紹 OpenAI API 的工作原理,帶你一步步了解 GPT 模型的核心概念,并讓你感知到如何將這些技術應用到實際項目的底層邏輯。

這篇文章主要是技術分享,由于我是設計師出身,有些地方可能總結得不夠全面,還請專業人士多多指教!

一、GPT 模型與關鍵概念

1. GPT 模型概述

在進入實際應用講解之前,我們首先需要理解 GPT 模型的核心原理。GPT 是生成式預訓練 Transformer(Generative Pre-trained Transformer)的縮寫。這種模型經過大量的文本數據訓練,能夠理解和生成自然語言文本。與這些模型的交互方式通常是通過提供一個“提示”,即一段輸入文本,模型會根據提示生成一個連貫的響應。正是這種能力使得 GPT 模型能夠用于從內容生成到創意寫作等各種任務。

GPT 模型的設計理念源自 Transformer 架構,這是一種神經網絡模型,特別擅長處理序列數據。與傳統的循環神經網絡(RNN)不同,Transformer 依賴于自注意力機制,能夠并行處理整個文本序列。這使得它在處理長文本時效率更高,并且能夠捕捉更復雜的語言結構和語義關系。

這些特性使得 GPT 模型在自然語言處理 (NLP) 領域中大放異彩。無論是編寫代碼、撰寫文章、生成對話,還是執行其他復雜的語言任務,GPT 都展示出了卓越的性能。

2. 嵌入與代幣

在 NLP 領域,嵌入 (Embeddings) 和代幣 (Tokens) 是兩個非常重要的概念。理解這兩個概念有助于我們更好地掌握 GPT 模型的工作原理。

嵌入是指將文本數據轉化為向量表示的過程。這些向量保留了文本的語義信息,使得機器能夠理解文本的含義。OpenAI 提供的文本嵌入模型能夠將文本字符串轉換為嵌入向量,這些向量可用于各種任務,如搜索、聚類和推薦。在實際應用中,嵌入的質量直接影響到模型的表現,因為它決定了模型對文本語義的理解程度。

代幣是文本的基本構建塊。代幣化是將文本分割成一個個最小語義單元的過程。例如,“Hello, world!” 這個短語,有點代碼基礎的應該都不陌生吧,哈哈哈! 那這個短語可能就會被分割成四個代幣:“Hello”、“,”、“world“、”!”。在 GPT 模型中,代幣化的結果會影響到模型的輸入和輸出。特別需要注意的是,每次 API 調用時,輸入和輸出的總代幣數不能超過模型的最大上下文長度。因此,理解代幣的工作原理對于有效利用 GPT 模型至關重要。

可以在 這里 測試一下:

從零到AI高手:用OpenAI API極速打造智能應用!

官網上的 tokenizer 測試

GPT 模型使用的代幣化過程基于字節對編碼 (Byte Pair Encoding, BPE)。這種方法通過不斷合并頻繁出現的字符對,最終生成固定大小的詞匯表,從而實現代幣化。由于 BPE 的特性,一個詞可能被分割成多個代幣,尤其是對于較長或復雜的單詞。例如,“tokenization” 可能會被分割成 “token”、“ization” 兩個代幣。這種分割方式在實際使用中對模型性能有重要影響,特別是在處理多語言文本或專有名詞時。

不同的模型 API 調用的價格不一樣,這個可以去官網上了解不同模型的定價,我這里就先放一張截圖:

從零到AI高手:用OpenAI API極速打造智能應用!

GPT-4O 不同版本的 API 調用價格

2. OpenAI API 的工作原理

① API 基礎

API(應用程序編程接口)是一組允許程序相互通信的規則。簡單來說,API 是開發者與服務之間的橋梁。通過 API,開發者可以訪問特定的功能或數據,而不需要了解背后的復雜實現細節。

OpenAI 的 API 使開發者能夠訪問其強大的 GPT 模型。這意味著你可以通過簡單的 HTTP 請求與模型進行交互,發送輸入文本并接收模型生成的輸出文本。這種方式使得復雜的自然語言處理任務變得更加容易實現。

例如,要與 OpenAI 的 GPT 模型進行交互,你只需發送一個 HTTP POST 請求,其中包含你想要提供的提示文本和 API 密鑰。然后,API 會處理你的請求,并返回一個響應,其中包含模型生成的文本。這種簡單而強大的機制使得 GPT 模型能夠輕松集成到各種應用程序中,從聊天機器人到內容生成器,無所不包。

② 模型選擇與代幣管理

當使用 OpenAI API 時,你會發現可以選擇不同的模型。這些模型各有優劣,適用于不同的任務。當前的最新模型包括 GPT-3.5 和 GPT-4。這些模型在處理自然語言任務時展示了卓越的性能,但它們之間仍然存在一些差異。例如,GPT-4 在理解復雜上下文和生成更連貫的長文本方面表現得更為出色,而 GPT-3.5 則更適合處理較簡單的任務。

在選擇模型時,還需要考慮代幣管理。每個模型都有其最大上下文長度,這決定了它可以處理的最大代幣數。為了確保 API 調用的有效性,必須控制提示和響應的總代幣數不超過這個限制。理解并有效管理代幣使用,對于優化模型性能、減少成本至關重要。

在實際操作中,代幣管理可以通過以下幾種方式實現:

  1. 簡化提示:確保提示的簡潔性和直接性,避免不必要的冗長描述。
  2. 控制輸出:通過調整模型的參數(如溫度、max_tokens)來限制輸出的長度和隨機性。
  3. 分割長文本:對于超長文本,可以將其分割成多個段落,并分別處理這些段落,從而避免超過模型的上下文長度限制。

3. 實際操作:與 OpenAI API 交互

① 安裝與驗證

要開始使用 OpenAI API,你首先需要安裝必要的工具和進行驗證。以下是使用 Python 與 OpenAI API 交互的基本步驟。

安裝 OpenAI Python 庫:

pip install openai

安裝完成后,你需要獲取一個 OpenAI API 密鑰。這個密鑰用于驗證你的請求并確保安全性。在發送 API 請求時,需要在 HTTP 標頭中包含此密鑰。

示例代碼:

import openai

# 設置 API 密鑰
openai.api_key = 'your-api-key'

# 定義請求
response = openai.Completion.create(
model="gpt-4",
prompt="告訴我一些關于機器學習的有趣事實。",
max_tokens=150
)

# 打印響應
print(response['choices'][0]['text'].strip())

在上面的代碼中,我們使用了 openai.Completion.create 方法來發送一個請求。我們提供了模型名稱、提示文本以及生成文本的最大長度(max_tokens)。最終的響應會返回一個包含生成文本的字典對象,你可以從中提取并顯示文本內容。

② 發出請求與解析響應

使用 OpenAI API 發出請求后,API 會返回一個響應,這個響應通常是 JSON 格式的。了解如何解析這個響應,對于進一步處理生成的文本至關重要。

響應結構:

一個典型的 API 響應可能包含以下幾個關鍵部分:

  1. id: 響應的唯一標識符。
  2. object: 表示響應類型,例如 "text_completion"。
  3. created: 響應生成的時間戳。
  4. model: 使用的模型名稱。
  5. choices: 生成的文本選擇列表,通常我們只會使用第一個選擇。
  6. usage: 顯示生成該響應所使用的代幣數量。

示例響應:

{
"id": "cmpl-5uXf8u9GZFmVgtHKg3JpJ7nE5X",
"object": "text_completion",
"created": 1690446648,
"model": "gpt-4",
"choices": [
{
"text": "\n\n 機器學習是人工智能的一個分支,致力于開發可以從數據中學習的算法。",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 15,
"completion_tokens": 35,
"total_tokens": 50
}
}

在這個響應中,最重要的部分是 choices,它包含了模型生成的文本。你可以通過 choices[0]['text'] 來獲取這個文本并進行進一步處理。

③ 提示工程:制作有效提示

  1. 提示工程是使用 GPT 模型生成高質量響應的關鍵技術。有效的提示不僅能夠引導模型生成理想的結果,還能提高模型的響應效率。
  2. 提示的設計可以分為以下幾種策略:
  3. 明確指令:清晰簡潔的提示可以有效減少模型生成錯誤信息的可能性。例如,與其簡單地問“誰是世界上最好的足球運動員?”,不如直接說明背景:“在 2022 年的世界杯上,誰表現最為突出?”
  4. 分步提示:對于復雜任務,可以將提示分解為多個步驟。例如,如果你想生成一篇關于機器學習的簡短文章,你可以先要求模型提供一個概述,然后分別生成每個章節的內容。
  5. 使用上下文:在對話生成中,提供上下文信息可以幫助模型生成更連貫的響應。例如,通過添加一條系統消息“你是一名體育記者”,可以讓模型更好地理解接下來的問題。
  6. 控制輸出格式:在某些情況下,你可能需要模型生成特定格式的輸出。例如,你可以要求模型以 JSON 格式返回信息,或者以列表形式展示數據。

示例代碼:

response = openai.Completion.create(
model="gpt-4",
prompt="請用三點總結人工智能的未來發展趨勢:",
max_tokens=50,
temperature=0.5
)

print(response['choices'][0]['text'].strip())

在這個例子中,我們通過設置 temperature 參數控制模型輸出的隨機性,同時通過 max_tokens 限制輸出長度,確保響應集中在我們需要的內容上。

4. 實戰示例:創建定制化 AI 代理

① 從簡單到復雜的 AI 代理

創建一個 AI 代理的過程可以從一個簡單的聊天機器人開始,然后逐步擴展其功能。以下是一個使用 OpenAI API 構建簡單 AI 代理的示例:

第一步:初始化代理

首先,我們定義一個函數來初始化代理并設置基本的對話上下文。

import openai

openai.api_key = 'your-api-key'

def initialize_agent():
return [{"role": "system", "content": "你是一位友好的 AI 助手,隨時準備幫助用戶。"}]

conversation_history = initialize_agent()

第二步:發送用戶消息并獲取響應

我們定義一個函數,用于發送用戶消息并將其添加到對話歷史中。

def send_message(conversation_history, user_message):
conversation_history.append({"role": "user", "content": user_message})

response = openai.ChatCompletion.create(
model="gpt-4",
messages=conversation_history
)

assistant_message = response['choices'][0]['message']['content']
conversation_history.append({"role": "assistant", "content": assistant_message})

return assistant_message

user_input = "告訴我今天的新聞熱點是什么?"
response = send_message(conversation_history, user_input)
print(response)

第三步:擴展代理功能

隨著代理的基礎功能建立起來,你可以添加更多的功能,例如將代理與外部 API 集成,實現動態數據檢索。下面是一個示例,展示如何將代理與天氣 API 集成。

import requests

def get_weather(location):
api_key = "your-weather-api-key"
url = f"http://api.weatherapi.com/v1/current.json?key={api_key}&q={location}&aqi=no"
response = requests.get(url)
weather_data = response.json()
return f"{location} 的天氣是

 {weather_data['current']['condition']['text']},溫度為 {weather_data['current']['temp_c']}°C。"

def send_message_with_weather(conversation_history, user_message):
if "天氣" in user_message:
location = user_message.split("天氣")[1].strip()
weather_info = get_weather(location)
assistant_message = f"以下是你請求的天氣信息:\n{weather_info}"
conversation_history.append({"role": "assistant", "content": assistant_message})
else:
assistant_message = send_message(conversation_history, user_message)

return assistant_message

user_input = "告訴我北京的天氣"
response = send_message_with_weather(conversation_history, user_input)
print(response)

在這個示例中,我們通過識別用戶輸入中的關鍵詞“天氣”,調用外部 API 獲取實時數據并將其整合到代理的響應中。

② 使用工具和高級功能

OpenAI API 提供了一些高級工具,可以進一步增強 AI 代理的功能。例如,代碼解釋器和文件檢索工具。

使用代碼解釋器

代碼解釋器允許代理直接運行 Python 代碼并返回結果。這對于自動化任務和數據分析非常有用。

import openai

def run_code(code):
response = openai.Completion.create(
model="gpt-4",
prompt=f"執行以下 Python 代碼:\n```python\n{code}\n```",
max_tokens=150,
temperature=0
)
return response['choices'][0]['text'].strip()

code_to_run = """
import math
result = math.sqrt(25)
result
"""
output = run_code(code_to_run)
print(f"代碼執行結果: {output}")

使用文件檢索

文件檢索工具允許代理在給定的文檔中搜索信息。這在處理大量數據或長文檔時非常有用。

def upload_and_search_file(file_path, query):
file = openai.File.create(
file=open(file_path),
purpose='search'
)
response = openai.Completion.create(
model="gpt-4",
prompt=f"在上傳的文件中找到與 '{query}' 相關的信息。",
file_ids=[file['id']],
max_tokens=150
)
return response['choices'][0]['text'].strip()

file_path = "path_to_your_file.pdf"
query = "人工智能的發展歷程"
result = upload_and_search_file(file_path, query)
print(result)

結論

通過本文的介紹,我們從基礎到進階,詳細探討了如何使用 OpenAI API 構建和定制基于 GPT 模型的應用。從理解 GPT 模型的核心概念,到實際操作中的安裝、驗證、提示工程,再到創建功能齊全的 AI 代理,本文為你提供了全面的指導。

隨著技術的發展,GPT 模型的應用場景也在不斷擴展。未來,AI 的能力將更加廣泛,應用也會更加深入。作為開發者,可以利用這些工具創造出更強大、更個性化的應用,滿足各種需求。作為設計師,我們要了解底層邏輯,并掌握一定的代碼基礎,才能更好的配合技術側推進項目建設。

無論你是設計師,還是開發者,掌握和學習 OpenAI API 并將其應用到實際項目中,都是我認為現階段的玩法必備。希望本文能為你提供啟發,激發你在 AI 開發領域的更多創意。繼續探索、不斷創新,你將發現人工智能的無限可能!

收藏 17
點贊 40

復制本文鏈接 文章為作者獨立觀點不代表優設網立場,未經允許不得轉載。