瞭解如何產生或操作文字

完成端點可用於各種不同的工作。 其對任何模型提供簡單但功能強大的文字輸入、文字輸出介面。 您會輸入一些文字做為提示,而模型會產生文字完成,可嘗試比對您提供的任何內容或模式。 例如,如果您向 API 提供提示,「笛卡爾說:我思」,其有很高機率會傳回「故我在」的完成。

開始探索完成的最佳方式是透過我們在 Azure OpenAI Studio 中的遊樂場。 這只是一個文字方塊,您可以在其中提交提示來產生完成。 您可以從簡單的範例開始進行,如下所示:

write a tagline for an ice cream shop

提交之後,您會看到產生類似下列的內容:

write a tagline for an ice cream shop
we serve up smiles with every scoop!

您看到的實際完成結果可能會有所不同,因為 API 預設為隨機。 換句話說,每次呼叫時,您可能會收到稍微不同的完成結果,即使您的提示維持不變也一樣。 您可以使用溫度設定來控制此行為。

此簡單的「文字輸入、文字輸出」介面表示您可以藉由提供指示,或僅提供您想要執行的幾個範例,對模型進行「程式設計」。 其成功與否通常取決於工作的複雜度,以及提示的品質。 一般規則是思考如何撰寫一個文字問題,讓中等學校學生解決問題。 撰寫良好的提示會提供足夠的資訊,讓模型知道您所需的內容及其回應方式。

注意

請記住,模型的定型資料會在 2019 年 10 月停止供應,因此其可能不知道目前的事件。 我們計畫在未來新增更多持續定型。

提示設計

基本動作

OpenAI 的模型可以執行所有作業,從產生原始劇本到執行複雜的文字分析。 因為其可以執行許多作業,所以您必須明確顯示您所需的作業。 顯示 (而不只是告知) 通常是良好提示的秘密。

模型會嘗試從提示中預測您所需的內容。 如果您傳送「給我一份貓品種的清單」這些字,模型不會自動假設您是在要求一份貓品種的清單。 您可以輕鬆地要求模型繼續交談,其中前一段文字是「給我一份貓品種的清單」,而下一段文字是「我會告訴您我喜歡哪一些」。若模型只假設您想要一份貓清單,則在內容建立、分類或其他工作上就會表現不佳。

建立提示有三個基本指導方針:

顯示並告知。 透過指示和/或範例清楚說明您所需的內容。 如果您想要讓模型依字母順序排列項目清單,或依情感分類段落,請向其顯示這是您所需的項目。

提供品質資料。 如果您嘗試建置分類器或讓模型遵循模式,請確定您有足夠的範例。 請務必校訂您的範例 — 模型通常很聰明,可以看出基本拼字錯誤並為您提供回應,但也可能會假設這是刻意為之,可能會影響回應。

檢查您的設定。 溫度和 top_p 設定可控制模型產生回應時的確定性程度。 若您想要求其提供回應,而其中只有一個正確答案,則您就要將這些設定設定為較低的值。 若您想尋找不明顯的回應,則可能需要將設定設定為較高的值。 使用者搭配這些設定使用時最常發生的一個錯誤,就是假設其為「聰明」或「創意」控制項。

疑難排解

如果您在讓 API 如預期般執行時遇到問題,請遵循下列檢查清單:

  1. 所應產生的目標是否清楚?
  2. 是否有足夠範例?
  3. 您是否檢查過您的範例中是否有錯誤? (API 不會直接告知您)
  4. 您是否正確使用 temp 和 top_p?

分類

如需使用 API 建立文字分類器,我們提供工作的描述,並提供一些範例。 在此示範中,我們會示範 API 分類推文的情感的方式。

This is a tweet sentiment classifier

Tweet: "I loved the new Batman movie!"
Sentiment: Positive

Tweet: "I hate it when my phone battery dies." 
Sentiment: Negative

Tweet: "My day has been 👍"
Sentiment: Positive

Tweet: "This is the link to the article"
Sentiment: Neutral

Tweet: "This new music video blew my mind"
Sentiment:

在此範例中,有數個功能值得注意:

1. 使用純語言來描述您的輸入和輸出:我們使用純語言來輸入「推文」和預期的輸出「情感」。如需最佳做法,請從純語言描述開始。 雖然您通常可以使用速記或索引鍵來指出輸入和輸出,但建置提示時,最好從盡可能具描述性開始著手,然後回溯工作,只要提示的效能一致,即移除額外的單字。

2. 顯示 API 回應任何案例的方式在此範例中,我們提供多個「正面」、「負面」和「中性」的結果。中性結果很重要,因為在許多情況下,即使是人類也很難以判斷某個項目是正面還是負面,而且情況卻兩者都不是。

3. 您可以使用文字和表情圖示分類器混合文字和表情圖示👍。 API 會讀取表情圖示,甚至可以將運算式轉換成表情圖示,反之亦然。

4. 您對於熟悉的工作只需要較少的範例在此分類器中,我們只會提供幾個範例。 這是因為 API 已經了解情感和推文的概念。 如果您要為 API 可能不熟悉的項目建置分類器,則可能需要提供更多範例。

改善分類器的效率

既然我們已經了解如何建置分類器,讓我們採用該範例,使其更有效率,讓我們可以使用其從一個 API 呼叫取得多個結果。

This is a tweet sentiment classifier

Tweet: "I loved the new Batman movie!"
Sentiment: Positive

Tweet: "I hate it when my phone battery dies"
Sentiment: Negative

Tweet: "My day has been 👍"
Sentiment: Positive

Tweet: "This is the link to the article"
Sentiment: Neutral

Tweet text
1. "I loved the new Batman movie!"
2. "I hate it when my phone battery dies"
3. "My day has been 👍"
4. "This is the link to the article"
5. "This new music video blew my mind"

Tweet sentiment ratings:
1: Positive
2: Negative
3: Positive
4: Neutral
5: Positive

Tweet text
1. "I can't stand homework"
2. "This sucks. I'm bored 😠"
3. "I can't wait for Halloween!!!"
4. "My cat is adorable ❤️❤️"
5. "I hate chocolate"

Tweet sentiment ratings:
1.

顯示 API 如何依情感分類推文之後,我們接著會為其提供推文清單,然後提供具有相同數目索引的情感評等清單。 API 可以從第一個範例中得知應該如何分類推文。 在第二個範例中,其會了解如何將此套用至推文清單。 這可讓 API 僅在一個 API 呼叫中評分五個 (甚至更多個) 推文。

請務必注意,當您要求 API 建立清單或評估文字時,必須特別注意您的機率設定 (Top P 或 Temperature) 以避免漂移。

  1. 執行多個測試,確定已正確校正您的機率設定。

  2. 請勿讓您的清單過長,否則 API 可能會漂移。


第幾代

您可以使用 API 完成最強大卻最簡單的工作之一,就是產生新的想法或輸入版本。 您可以為 API 提供一些劇本想法的清單,其就會嘗試新增至該清單。 我們看過其建立商務方案、字元描述和行銷口號,只需提供幾個範例即可。 在此示範中,我們將使用 API 來建立更多範例,以了解如何在教室中使用虛擬實境:

Ideas involving education and virtual reality

1. Virtual Mars
Students get to explore Mars via virtual reality and go on missions to collect and catalog what they see.

2.

在此範例中,我們只須透過清單內容的描述以及一個範例來提供 API。 然後,我們提示 API 提供數字 2.,指出其為清單的接續。

雖然這是非常簡單的提示,但有幾個值得注意的詳細資料:

1. 我們已說明清單的意圖
就如同使用分類器,我們會提前告知 API 清單的用途。 這可協助其專注於完成清單,而不會嘗試猜測其背後的模式。

2. 我們的範例會設定清單其餘部分的模式
因為我們提供了單一句子的描述,所以 API 會針對其新增至清單的其餘項目,嘗試遵循該模式。 如果我們想要更詳細的回應,則必須從頭開始設定。

3. 我們藉由新增不完整的項目來提示 API
當 API 看到 2. 且提示突然結束時,其嘗試執行的第一件事,就是找出其隨後應該會發生什麼事。 因為我們已經有一號的範例,並為清單提供標題,所以最明顯的回應是繼續將項目新增至清單。

進階世代技術
您可以在提示中建立更多樣化的延伸清單,以改善回應的品質。 其中一個做法是從一個範例開始,讓 API 產生更多項目,並選取您最喜歡的項目,然後將其新增至清單。 一些更高品質的變化可以大幅改善回應的品質。


交談

API 非常熟悉與人類、甚至是與其本身進行對話。 僅透過幾行指示,我們就會看到 API 以客戶服務聊天機器人的形式執行,以智慧方式回答問題,始終不急不徐,或是以一個愛說俏皮話的交談夥伴形式執行,幽默且妙語如珠。 金鑰是告訴 API 其運作方式,然後提供幾個範例。

以下是 API 扮演 AI 回答問題角色的範例:

The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.

Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human: 

建立能夠進行交談的聊天機器人只需如此。 但在其簡易性之下,有幾件事值得注意:

1. 我們會告知 API 意圖,但我們也會告知其該如何運作如同其他提示,我們會提示 API 到範例所代表的內容,但我們也會新增另一個主要詳細資料:我們會向其提供如何與「助理很有幫助、有創意、聰明且非常友善」這句互動的明確指示。

如果沒有該指示,API 可能會偏離並模擬與其互動的人類,並且變得諷刺或變成我們要避免的一些其他行為。

2. 我們會為 API 提供身分識別一開始,我們會讓 API 以 OpenAI 所建立的 AI 形式進行回應。 雖然 API 沒有內建身分識別,但這可協助其以盡可能接近真實的方式來回應。 您可以透過其他方式使用身分識別,來建立其他類型的聊天機器人。 如果您告訴 API 以身為生物學研究科學家的女性身分回應,則您會收到來自 API 智慧且思慮縝密的看法,與您預期具有該背景者所提供的看法類似。

在此範例中,我們會建立一個聊天機器人,會有點諷刺並有點勉強地回答問題:

Marv is a chatbot that reluctantly answers questions.

###
User: How many pounds are in a kilogram?
Marv: This again? There are 2.2 pounds in a kilogram. Please make a note of this.
###
User: What does HTML stand for?
Marv: Was Google too busy? Hypertext Markup Language. The T is for try to ask better questions in the future.
###
User: When did the first airplane fly?
Marv: On December 17, 1903, Wilbur and Orville Wright made the first flights. I wish they'd come and take me away.
###
User: Who was the first man in space?
Marv: 

為了建立有趣而有點幫助的聊天機器人,我們提供幾個示範 API 如何回覆的問題與解答範例。 只需要幾個諷刺的回應,API 就能挑選模式,並提供無數的勁爆回應。


轉換

API 是一種語言模型,熟悉各種可使用文字和字元來表達資訊的方式。 這個範圍從自然語言文字到英文以外的程式碼和語言。 API 也能夠了解層級 (可讓其進行摘要、轉換並以不同方式表達) 的內容。

翻譯

在此範例中,我們會示範 API 如何從英文轉換為法文:

English: I do not speak French.
French: Je ne parle pas français.
English: See you later!
French: À tout à l'heure!
English: Where is a good restaurant?
French: Où est un bon restaurant?
English: What rooms do you have available?
French: Quelles chambres avez-vous de disponible?
English:

此範例可行是因為 API 已經掌握法文,因此不需要嘗試教導此語言。 相反地,我們只需要提供足夠的範例,讓 API 了解其是從一種語言轉換成另一種語言。

如果您想要從英文翻譯成一種 API 不熟悉的語言,則需要為其提供更多範例和微調的模型,才能運用自如。

轉換

在此範例中,我們會將電影的名稱轉換成表情圖示。 這會顯示 API 挑選模式並與其他字元搭配使用的適應性。

Back to Future: 👨👴🚗🕒
Batman: 🤵🦇
Transformers: 🚗🤖
Wonder Woman: 👸🏻👸🏼👸🏽👸🏾👸🏿
Spider-Man: 🕸🕷🕸🕸🕷🕸
Winnie the Pooh: 🐻🐼🐻
The Godfather: 👨👩👧🕵🏻‍♂️👲💥
Game of Thrones: 🏹🗡🗡🏹
Spider-Man:

摘要

API 能夠掌握文字內容並以不同的方式重新撰寫。 在此範例中,API 會採用一組文字,並建立子系會了解的說明。 這說明 API 能夠深入掌握語言。

My ten-year-old asked me what this passage means:
"""
A neutron star is the collapsed core of a massive supergiant star, which had a total mass of between 10 and 25 solar masses, possibly more if the star was especially metal-rich.[1] Neutron stars are the smallest and densest stellar objects, excluding black holes and hypothetical white holes, quark stars, and strange stars.[2] Neutron stars have a radius on the order of 10 kilometres (6.2 mi) and a mass of about 1.4 solar masses.[3] They result from the supernova explosion of a massive star, combined with gravitational collapse, that compresses the core past white dwarf star density to that of atomic nuclei.
"""

I rephrased it for him, in plain language a ten-year-old can understand:
"""

在此範例中,我們會將我們想要摘要的任何項目放在三引號之間。 值得注意的是,我們會在所要摘要的文字前後說明我們的意圖為何,以及說明摘要所適用的目標對象。 這是為了讓 API 在處理大量文字區塊之後避免漂移。

Completion

雖然所有提示都會導致完成,但在您希望 API 從先前離開之處繼續的案例中,將文字完成視為本身的工作會很有用。 例如,如果出現此提示,則 API 會繼續訓練對垂直農法的思考。 您可以降低溫度設定,讓 API 更專注於提示的意圖,或增加溫度使其離題。

Vertical farming provides a novel solution for producing food locally, reducing transportation costs and

下一個提示顯示如何使用完成來協助撰寫 React 元件。 我們會將一些程式碼傳送至 API,並且能夠繼續其餘部分,因為其已了解 React 程式庫。 建議您針對涉及了解或產生程式碼的工作使用 Codex 系列的模型。 目前,我們支援兩個 Codex 模型:code-davinci-002code-cushman-001。 如需 Codex 模型的詳細資訊,請參閱模型中的 Codex 模型一節。

import React from 'react';
const HeaderComponent = () => (

事實回應

API 具有許多從其所定型資料中習得的知識。 其也能夠提供看似非常真實但實際上卻是虛構的回應。 有兩種方式可以限制 API 虛構答案的可能性。

1. 提供 API 的基準真相如果您向 API 提供回答問題相關的文字本文 (例如維基百科內容),則比較不可能會虛構回應。

2. 使用低機率,並向 API 示範如何說出「我不知道」如果 API 了解在某些情況下,可以適時說出「我不知道」或某些變化說法來表達較不確定的回應,則較不會傾向於虛構答案。

在此範例中,我們會向 API 提供問題和其所知回答的範例,然後提供其所不知道的範例並提供問號。 我們也將機率設定為零,如此一來,如果有任何疑問,API 更可能會以 "?" 回應。

Q: Who is Batman?
A: Batman is a fictional comic book character.

Q: What is torsalplexity?
A: ?

Q: What is Devz9?
A: ?

Q: Who is George Lucas?
A: George Lucas is American film director and producer famous for creating Star Wars.

Q: What is the capital of California?
A: Sacramento.

Q: What orbits the Earth?
A: The Moon.

Q: Who is Fred Rickerson?
A: ?

Q: What is an atom?
A: An atom is a tiny particle that makes up everything.

Q: Who is Alvan Muntz?
A: ?

Q: What is Kozar-09?
A: ?

Q: How many moons does Mars have?
A: Two, Phobos and Deimos.

Q:

使用程式碼

Codex 模型系列是 OpenAI 型 GPT-3 系列的子系,已針對自然語言和數十億行程式碼進行定型。 此模型在 Python 中最能發揮功能,且熟悉數十種語言,包括 C#、JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、SQL,甚至 Shell。

使用程式碼指南深入瞭解如何產生程式碼完成

下一步

瞭解如何使用程式碼 (Codex) 。 深入了解驅動 Azure OpenAI 的基礎模型