OpenAI API 快速開始

2023-03-21 14:20 更新

OpenAI 訓(xùn)練了非常擅長(zhǎng)理解和生成文本的尖端語(yǔ)言模型。我們的 API 提供對(duì)這些模型的訪問,可用于解決幾乎任何涉及處理語(yǔ)言的任務(wù)。

在本快速入門教程中,您將構(gòu)建一個(gè)簡(jiǎn)單的示例應(yīng)用程序。在此過程中,您將學(xué)習(xí)使用 API 完成任何任務(wù)的關(guān)鍵概念和技術(shù),包括:

  • 內(nèi)容生成

  • 歸納
  • 分類、分類和情感分析

  • 數(shù)據(jù)提取

  • 翻譯
  • 更多

介紹

完成端點(diǎn)是我們 API 的核心,它提供了一個(gè)非常靈活和強(qiáng)大的簡(jiǎn)單接口。您輸入一些文本作為提示,API 將返回一個(gè)文本完成,試圖匹配您提供的任何指令或上下文。


您可以將其視為非常高級(jí)的自動(dòng)完成——模型處理您的文本提示并嘗試預(yù)測(cè)接下來最有可能出現(xiàn)的內(nèi)容。

從指令開始

假設(shè)您想創(chuàng)建一個(gè)寵物名字生成器。從頭開始想出名字很難!

首先,您需要一個(gè)明確說明您想要什么的提示。讓我們從一個(gè)指令開始。提交此提示以生成您的第一個(gè)完成。

不錯(cuò)!現(xiàn)在,試著讓你的指示更具體。


如您所見,在我們的提示中添加一個(gè)簡(jiǎn)單的形容詞會(huì)改變生成的完成。設(shè)計(jì)提示本質(zhì)上就是您“編程”模型的方式。

添加一些例子

制定好的說明對(duì)于取得好的結(jié)果很重要,但有時(shí)它們還不夠。讓我們?cè)囍屇愕闹噶罡鼜?fù)雜。


這個(gè)完成并不是我們想要的。這些名稱非常通用,而且模型似乎沒有接受我們指令中的馬匹部分。讓我們看看能否讓它提出一些更相關(guān)的建議。

在許多情況下,向模型展示和告訴模型您想要什么是很有幫助的。在您的提示中添加示例可以幫助傳達(dá)模式或細(xì)微差別。嘗試提交此提示,其中包含幾個(gè)示例。


好的!添加我們期望給定輸入的輸出示例有助于模型提供我們正在尋找的名稱類型。

調(diào)整您的設(shè)置

提示設(shè)計(jì)并不是您可以使用的唯一工具。您還可以通過調(diào)整設(shè)置來控制完成。最重要的設(shè)置之一稱為溫度。

您可能已經(jīng)注意到,如果您在上面的示例中多次提交相同的提示,模型將始終返回相同或非常相似的完成。這是因?yàn)槟臏囟仍O(shè)置為 0。

嘗試將溫度設(shè)置為 1 重新提交幾次相同的提示。

看看發(fā)生了什么?當(dāng)溫度高于 0 時(shí),每次提交相同的提示會(huì)導(dǎo)致不同的完成。

請(qǐng)記住,該模型預(yù)測(cè)哪個(gè)文本最有可能跟在它前面的文本之后。溫度是一個(gè)介于 0 和 1 之間的值,基本上可以讓您控制模型在進(jìn)行這些預(yù)測(cè)時(shí)的置信度。降低溫度意味著它將承擔(dān)更少的風(fēng)險(xiǎn),并且完成將更加準(zhǔn)確和確定。升高溫度將導(dǎo)致更多樣化的完成。

了解 tokens 和 probabilities

我們的模型通過將文本分解為更小的單元(稱為標(biāo)記)來處理文本。標(biāo)記可以是單詞、單詞塊或單個(gè)字符。編輯下面的文本以查看它是如何被標(biāo)記化的。

I have an orange cat named Butterscotch.

像“貓”這樣的常用詞是單個(gè)標(biāo)記,而不太常用的詞通常被分解成多個(gè)標(biāo)記。例如,“Butterscotch”翻譯成四個(gè)標(biāo)記:“But”、“ters”、“cot”和“ch”。許多標(biāo)記以空格開頭,例如“hello”和“bye”。

給定一些文本,該模型確定下一個(gè)最有可能出現(xiàn)的標(biāo)記。例如,文本“Horses are my favorite”最有可能跟隨標(biāo)記“animal”。

這是 temperature 發(fā)揮作用的地方。如果您在 temperature 為 0 的情況下提交此提示 4 次,則模型將始終在下一個(gè)返回“animal”,因?yàn)樗母怕首罡?。如果你提?nbsp;temperature,它會(huì)承擔(dān)更多的風(fēng)險(xiǎn),并考慮概率較低的 tokens。


通常最好為所需輸出明確定義的任務(wù)設(shè)置低 temperature。較高的 temperature 對(duì)于需要多樣性或創(chuàng)造力的任務(wù)可能很有用,或者如果您想為最終用戶或人類專家生成一些變化以供選擇。

對(duì)于您的昵稱生成器,您可能希望能夠生成很多名字創(chuàng)意。 0.6 的適中 temperature 應(yīng)該可以正常工作。

構(gòu)建您的應(yīng)用程序

  • Node.JS
  • 現(xiàn)在你已經(jīng)找到了一個(gè)好的提示和設(shè)置,你已經(jīng)準(zhǔn)備好構(gòu)建你的寵物名稱生成器了!我們已經(jīng)編寫了一些代碼來幫助您入門——按照下面的說明下載代碼并運(yùn)行應(yīng)用程序。

    設(shè)置

    確保已經(jīng)安裝 Node.js。然后克隆該倉(cāng)庫(kù)

    git clone https://github.com/openai/openai-quickstart-node.git

    如果您不想使用 git,您也可以使用此 zip 文件下載代碼。

    添加您的 API 密鑰

    導(dǎo)航到項(xiàng)目目錄并復(fù)制示例環(huán)境變量文件。

    cd openai-quickstart-node
    cp .env.example .env

    復(fù)制您的 API 密鑰并將其設(shè)置為新創(chuàng)建的 .env 文件中的 OPENAI_API_KEY。

    重要說明:使用 Javascript 時(shí),所有 API 調(diào)用都應(yīng)僅在服務(wù)器端進(jìn)行,因?yàn)樵诳蛻舳藶g覽器代碼中進(jìn)行調(diào)用會(huì)暴露您的 API 密鑰。

    運(yùn)行應(yīng)用

    在項(xiàng)目目錄下運(yùn)行以下命令安裝依賴并運(yùn)行應(yīng)用程序。

    npm install
    npm run dev

    在瀏覽器中打開 http://localhost:3000,您應(yīng)該會(huì)看到寵物名稱生成器!

    理解代碼

    在 openai-quickstart-node/pages/api 文件夾中打開 generate.js。在底部,您會(huì)看到生成我們?cè)谏厦媸褂玫奶崾镜暮瘮?shù)。由于用戶將輸入他們寵物的動(dòng)物類型,因此它會(huì)動(dòng)態(tài)換出指定動(dòng)物的提示部分。

    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ā)送實(shí)際 API 請(qǐng)求的代碼。如上所述,它使用 temperature 為 0.6 的完成端點(diǎn)。

    const completion = await openai.createCompletion({
      model: "text-davinci-003",
      prompt: generatePrompt(req.body.animal),
      temperature: 0.6,
    });

    就是這樣!您現(xiàn)在應(yīng)該完全了解您的寵物名稱生成器如何使用 OpenAI API!

  • PYTHON(FLASK)
  • 設(shè)置

    確保已經(jīng)安裝 Python。然后克隆該倉(cāng)庫(kù) 

    git clone https://github.com/openai/openai-quickstart-python.git

    如果您不想使用 git,您也可以使用此 zip 文件下載代碼。

    添加您的 API 密鑰

    導(dǎo)航到項(xiàng)目目錄并復(fù)制示例環(huán)境變量文件。

    cd openai-quickstart-python
    cp .env.example .env

    復(fù)制您的 API 密鑰并將其設(shè)置為新創(chuàng)建的 .env 文件中的 OPENAI_API_KEY。

    運(yùn)行應(yīng)用

    在項(xiàng)目目錄下運(yùn)行以下命令安裝依賴并運(yùn)行應(yīng)用程序。運(yùn)行命令時(shí),您可能需要鍵入 python3/pip3 而不是 python/pip,具體取決于您的設(shè)置。

    python -m venv venv
    . venv/bin/activate
    pip install -r requirements.txt
    flask run

    在瀏覽器中打開 http://localhost:5000,您應(yīng)該會(huì)看到寵物名稱生成器!

    理解代碼

    在 openai-quickstart-python 文件夾中打開 app.py。在底部,您會(huì)看到生成我們?cè)谏厦媸褂玫奶崾镜暮瘮?shù)。由于用戶將輸入他們寵物的動(dòng)物類型,因此它會(huì)動(dòng)態(tài)換出指定動(dòng)物的提示部分。

    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ā)送實(shí)際 API 請(qǐng)求的代碼。如上所述,它使用 temperature 為 0.6 的完成端點(diǎn)。

    response = openai.Completion.create(
      model="text-davinci-003",
      prompt=generate_prompt(animal),
      temperature=0.6
    )

    就是這樣!您現(xiàn)在應(yīng)該完全了解您的寵物名稱生成器如何使用 OpenAI API!

Closing

這些概念和技術(shù)將大大有助于您構(gòu)建自己的應(yīng)用程序。也就是說,這個(gè)簡(jiǎn)單的例子只是展示了可能性的一小部分!完成端點(diǎn)非常靈活,幾乎可以解決任何語(yǔ)言處理任務(wù),包括內(nèi)容生成、摘要、語(yǔ)義搜索、主題標(biāo)記、情感分析等等。

要記住的一個(gè)限制是,對(duì)于大多數(shù)模型,單個(gè) API 請(qǐng)求在提示和完成之間最多只能處理 2,048 個(gè)標(biāo)記(大約 1,500 個(gè)單詞)。

模型和價(jià)格

我們提供一系列具有不同功能和價(jià)位的型號(hào)。在本教程中,我們使用了我們最強(qiáng)大的自然語(yǔ)言模型 text-davinci-003。我們建議在試驗(yàn)時(shí)使用此模型,因?yàn)樗鼤?huì)產(chǎn)生最佳結(jié)果。一旦一切正常,您就可以查看其他模型是否可以以更低的延遲和成本產(chǎn)生相同的結(jié)果。

單個(gè)請(qǐng)求(提示和完成)中處理的令牌總數(shù)不能超過模型的最大上下文長(zhǎng)度。對(duì)于大多數(shù)模型,這是 2,048 個(gè)標(biāo)記或大約 1,500 個(gè)單詞。根據(jù)粗略的經(jīng)驗(yàn)法則,對(duì)于英文文本,1 個(gè)標(biāo)記大約為 4 個(gè)字符或 0.75 個(gè)單詞。

對(duì)于更高級(jí)的任務(wù),您可能會(huì)發(fā)現(xiàn)自己希望能夠提供更多的示例或上下文,而不是單個(gè)提示中的內(nèi)容。fine-tuning API 是執(zhí)行此類更高級(jí)任務(wù)的絕佳選擇。微調(diào)允許您提供數(shù)百甚至數(shù)千個(gè)示例來為您的特定用例定制模型。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)