OpenAI 訓練了非常擅長理解和生成文本的尖端語言模型。我們的 API 提供對這些模型的訪問,可用于解決幾乎任何涉及處理語言的任務。
在本快速入門教程中,您將構建一個簡單的示例應用程序。在此過程中,您將學習使用 API 完成任何任務的關鍵概念和技術,包括:
內(nèi)容生成
分類、分類和情感分析
數(shù)據(jù)提取
完成端點是我們 API 的核心,它提供了一個非常靈活和強大的簡單接口。您輸入一些文本作為提示,API 將返回一個文本完成,試圖匹配您提供的任何指令或上下文。
您可以將其視為非常高級的自動完成——模型處理您的文本提示并嘗試預測接下來最有可能出現(xiàn)的內(nèi)容。
從指令開始
假設您想創(chuàng)建一個寵物名字生成器。從頭開始想出名字很難!
首先,您需要一個明確說明您想要什么的提示。讓我們從一個指令開始。提交此提示以生成您的第一個完成。
不錯!現(xiàn)在,試著讓你的指示更具體。
如您所見,在我們的提示中添加一個簡單的形容詞會改變生成的完成。設計提示本質上就是您“編程”模型的方式。
添加一些例子
制定好的說明對于取得好的結果很重要,但有時它們還不夠。讓我們試著讓你的指令更復雜。
這個完成并不是我們想要的。這些名稱非常通用,而且模型似乎沒有接受我們指令中的馬匹部分。讓我們看看能否讓它提出一些更相關的建議。
在許多情況下,向模型展示和告訴模型您想要什么是很有幫助的。在您的提示中添加示例可以幫助傳達模式或細微差別。嘗試提交此提示,其中包含幾個示例。
好的!添加我們期望給定輸入的輸出示例有助于模型提供我們正在尋找的名稱類型。
調(diào)整您的設置
提示設計并不是您可以使用的唯一工具。您還可以通過調(diào)整設置來控制完成。最重要的設置之一稱為溫度。
您可能已經(jīng)注意到,如果您在上面的示例中多次提交相同的提示,模型將始終返回相同或非常相似的完成。這是因為您的溫度設置為 0。
嘗試將溫度設置為 1 重新提交幾次相同的提示。
看看發(fā)生了什么?當溫度高于 0 時,每次提交相同的提示會導致不同的完成。
請記住,該模型預測哪個文本最有可能跟在它前面的文本之后。溫度是一個介于 0 和 1 之間的值,基本上可以讓您控制模型在進行這些預測時的置信度。降低溫度意味著它將承擔更少的風險,并且完成將更加準確和確定。升高溫度將導致更多樣化的完成。
了解 tokens 和 probabilities
我們的模型通過將文本分解為更小的單元(稱為標記)來處理文本。標記可以是單詞、單詞塊或單個字符。編輯下面的文本以查看它是如何被標記化的。
I have an orange cat named Butterscotch.
像“貓”這樣的常用詞是單個標記,而不太常用的詞通常被分解成多個標記。例如,“Butterscotch”翻譯成四個標記:“But”、“ters”、“cot”和“ch”。許多標記以空格開頭,例如“hello”和“bye”。
給定一些文本,該模型確定下一個最有可能出現(xiàn)的標記。例如,文本“Horses are my favorite”最有可能跟隨標記“animal”。
這是 temperature 發(fā)揮作用的地方。如果您在 temperature 為 0 的情況下提交此提示 4 次,則模型將始終在下一個返回“animal”,因為它的概率最高。如果你提高 temperature,它會承擔更多的風險,并考慮概率較低的 tokens。
通常最好為所需輸出明確定義的任務設置低 temperature。較高的 temperature 對于需要多樣性或創(chuàng)造力的任務可能很有用,或者如果您想為最終用戶或人類專家生成一些變化以供選擇。
對于您的昵稱生成器,您可能希望能夠生成很多名字創(chuàng)意。 0.6 的適中 temperature 應該可以正常工作。
構建您的應用程序
現(xiàn)在你已經(jīng)找到了一個好的提示和設置,你已經(jīng)準備好構建你的寵物名稱生成器了!我們已經(jīng)編寫了一些代碼來幫助您入門——按照下面的說明下載代碼并運行應用程序。
確保已經(jīng)安裝 Node.js。然后克隆該倉庫
git clone https://github.com/openai/openai-quickstart-node.git
如果您不想使用 git,您也可以使用此 zip 文件下載代碼。
添加您的 API 密鑰
導航到項目目錄并復制示例環(huán)境變量文件。
cd openai-quickstart-node
cp .env.example .env
復制您的 API 密鑰并將其設置為新創(chuàng)建的 .env 文件中的 OPENAI_API_KEY。
重要說明:使用 Javascript 時,所有 API 調(diào)用都應僅在服務器端進行,因為在客戶端瀏覽器代碼中進行調(diào)用會暴露您的 API 密鑰。
運行應用
在項目目錄下運行以下命令安裝依賴并運行應用程序。
npm install
npm run dev
在瀏覽器中打開 http://localhost:3000,您應該會看到寵物名稱生成器!
理解代碼
在 openai-quickstart-node/pages/api 文件夾中打開 generate.js。在底部,您會看到生成我們在上面使用的提示的函數(shù)。由于用戶將輸入他們寵物的動物類型,因此它會動態(tài)換出指定動物的提示部分。
function generatePrompt(animal) {
const capitalizedAnimal = animal[0].toUpperCase() + animal.slice(1).toLowerCase();
return `Suggest three names for an animal that is a superhero.
Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: ${capitalizedAnimal}
Names:`;
}
在 generate.js 的第 9 行,您將看到發(fā)送實際 API 請求的代碼。如上所述,它使用 temperature 為 0.6 的完成端點。
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: generatePrompt(req.body.animal),
temperature: 0.6,
});
就是這樣!您現(xiàn)在應該完全了解您的寵物名稱生成器如何使用 OpenAI API!
確保已經(jīng)安裝 Python。然后克隆該倉庫
git clone https://github.com/openai/openai-quickstart-python.git
如果您不想使用 git,您也可以使用此 zip 文件下載代碼。
添加您的 API 密鑰
導航到項目目錄并復制示例環(huán)境變量文件。
cd openai-quickstart-python
cp .env.example .env
復制您的 API 密鑰并將其設置為新創(chuàng)建的 .env 文件中的 OPENAI_API_KEY。
運行應用
在項目目錄下運行以下命令安裝依賴并運行應用程序。運行命令時,您可能需要鍵入 python3/pip3 而不是 python/pip,具體取決于您的設置。
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
flask run
在瀏覽器中打開 http://localhost:5000,您應該會看到寵物名稱生成器!
理解代碼
在 openai-quickstart-python 文件夾中打開 app.py。在底部,您會看到生成我們在上面使用的提示的函數(shù)。由于用戶將輸入他們寵物的動物類型,因此它會動態(tài)換出指定動物的提示部分。
def generate_prompt(animal):
return """Suggest three names for an animal that is a superhero.
Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: {}
Names:""".format(animal.capitalize())
在 app.py 的第 14 行,您將看到發(fā)送實際 API 請求的代碼。如上所述,它使用 temperature 為 0.6 的完成端點。
response = openai.Completion.create(
model="text-davinci-003",
prompt=generate_prompt(animal),
temperature=0.6
)
就是這樣!您現(xiàn)在應該完全了解您的寵物名稱生成器如何使用 OpenAI API!
這些概念和技術將大大有助于您構建自己的應用程序。也就是說,這個簡單的例子只是展示了可能性的一小部分!完成端點非常靈活,幾乎可以解決任何語言處理任務,包括內(nèi)容生成、摘要、語義搜索、主題標記、情感分析等等。
要記住的一個限制是,對于大多數(shù)模型,單個 API 請求在提示和完成之間最多只能處理 2,048 個標記(大約 1,500 個單詞)。
模型和價格
我們提供一系列具有不同功能和價位的型號。在本教程中,我們使用了我們最強大的自然語言模型 text-davinci-003。我們建議在試驗時使用此模型,因為它會產(chǎn)生最佳結果。一旦一切正常,您就可以查看其他模型是否可以以更低的延遲和成本產(chǎn)生相同的結果。
單個請求(提示和完成)中處理的令牌總數(shù)不能超過模型的最大上下文長度。對于大多數(shù)模型,這是 2,048 個標記或大約 1,500 個單詞。根據(jù)粗略的經(jīng)驗法則,對于英文文本,1 個標記大約為 4 個字符或 0.75 個單詞。
對于更高級的任務,您可能會發(fā)現(xiàn)自己希望能夠提供更多的示例或上下文,而不是單個提示中的內(nèi)容。fine-tuning API 是執(zhí)行此類更高級任務的絕佳選擇。微調(diào)允許您提供數(shù)百甚至數(shù)千個示例來為您的特定用例定制模型。
更多建議: