了解如何使用舊版完成 API 產生或操作文字
Azure OpenAI 服務提供可用於各種工作的 完成端點。 端點會為任何 Azure OpenAI 模型提供簡單但功能強大的文字輸入、文字輸出介面。 若要觸發完成,您可以輸入一些文字作為提示。 模型會產生完成,並嘗試符合您的內容或模式。 假設您提供提示「如 Descartes 所述,我認為」給 API。 針對此提示,Azure OpenAI 會傳回具有高可能性的完成端點「我」。
重要
除非您有需要完成端點的特定使用案例,否則建議您改用聊天完成端點,它可讓您利用 GPT-4o、GPT-4o mini 和 GPT-4 Turbo 等最新模型。
開始探索完成的最佳方式是透過 Azure AI Studio 中的遊樂場。 這只是一個文字方塊,您在其中輸入提示來產生完成。 您可以從簡單的提示開始,如下所示:
write a tagline for an ice cream shop
輸入提示之後,Azure OpenAI 會顯示完成:
we serve up smiles with every scoop!
您看到的完成結果可能會有所不同,因為 Azure OpenAI API 會產生每個互動的全新輸出。 每次呼叫 API 時,您可能會收到稍微不同的完成結果,即使您的提示維持不變也一樣。 您可以使用 Temperature
設定來控制此行為。
此簡單的文字輸入、文字輸出介面表示您可以藉由提供指示,或僅提供您想要執行的幾個範例,對 Azure OpenAI 模型進行「程式設計」。 輸出成功與否通常取決於工作的複雜度,以及提示的品質。 一般規則是思考如何撰寫一個文字問題,讓十幾歲的學生解決問題。 撰寫良好的提示會提供足夠的資訊,讓模型知道您想要的內容及其回應的方式。
注意
每個模型類型的模型定型資料可能不同。 最新的模型定型資料目前只會延伸至 2021 年 9 月。 視您的提示而定,模型可能不知道相關的目前事件。
設計提示
Azure OpenAI 服務模型可以執行所有作業,從產生原始劇本到執行複雜的文字分析。 因為其可以執行許多作業,所以您必須明確顯示您所需的作業。 顯示 (而不只是告知) 通常是良好提示的秘密。
模型會嘗試從提示中預測您所需的內容。 如果您輸入提示「給我一份貓品種的清單」,模型不會自動假設您是在要求清單。 您可以開始交談,其中前一段文字是「給我一份貓品種的清單」,接著是「我會告訴您我喜歡哪一些」。若模型只假設您想要一份貓清單,則在內容建立、分類或其他工作上就會表現不佳。
建立強固提示的指導方針
建立有用提示有三個基本指導方針:
顯示並告知。 透過指示和/或範例清楚說明您所需的內容。 如果您想要讓模型依字母順序排列項目清單,或依情感分類段落,請在提示中包含這些詳細資料以顯示模型。
提供品質資料。 如果您嘗試建置分類器或讓模型遵循模式,請確定您有足夠的範例。 請務必校訂您的範例。 模型很聰明,足以解決基本的拼字錯誤,並為您提供有意義的回應。 相反地,模型可能會假設錯誤是刻意的,這可能會影響回應。
檢查您的設定: 可能性設定,例如
Temperature
和Top P
,可控制模型產生回應時的確定性程度。 如果您想要求只有一個正確答案的回應,您應該為這些設定指定較低的值。 如果您要尋找不明顯的回應,可能需要使用較高的值。 使用者使用這些設定所做的最常見錯誤是假設他們在模型回應中控制「聰明」或「創意」。
提示問題的疑難排解
如果您無法如預期般執行 API,請檢閱下列幾點以取得您的實作:
- 所應產生的目標是否清楚?
- 是否有足夠範例?
- 您是否檢查過您的範例中是否有錯誤? (API 不會直接告訴您。)
- 您是否正確使用
Temperature
和Top P
可能性設定?
分類文字
如需使用 API 建立文字分類器,您提供工作的描述,並提供一些範例。 在此示範中,您會示範 API 分類文字訊息的情緒方式。 情緒會在文字中表達整體感覺或運算式。
This is a text message sentiment classifier
Message: "I loved the new adventure movie!"
Sentiment: Positive
Message: "I hate it when my phone battery dies."
Sentiment: Negative
Message: "My day has been 👍"
Sentiment: Positive
Message: "This is the link to the article"
Sentiment: Neutral
Message: "This new music video is unreal"
Sentiment:
設計文字分類器的指導方針
此示範顯示數個設計分類器的指導方針:
使用純文字來描述您的輸入和輸出。 針對輸入「訊息」和表示「情緒」的預期值使用純文字。如需最佳做法,請從純語言描述開始。 在建置提示時,您通常可以使用縮寫或索引鍵來表示輸入和輸出,但最好從盡可能具有描述性開始。 然後,只要提示的效能一致,您就可以回溯工作並移除額外的單字。
顯示 API 如何回應任何案例。 示範提供多個結果:「正面」、「負面」和「中性」。支援中性結果很重要,因為在許多情況下,即使人類可能難以判斷某個項目是否為正面或負面。
根據一般運算式使用 emoji 和文字。 示範顯示分類器可以是文字和 emoji 👍 的混合。 API 會讀取表情圖示,甚至可以將運算式轉換成表情圖示,反之亦然。 為了獲得最佳回應,請針對您的範例使用常見的運算式形式。
針對熟悉的工作使用較少的範例。 這個分類器只提供幾個範例,因為 API 已經了解情緒和文字訊息的概念。 如果您要為 API 可能不熟悉的項目建置分類器,則可能需要提供更多範例。
單一 API 呼叫的多個結果
現在您已了解如何建置分類器,讓我們展開第一個示範,使其更有效率。 您想要能夠使用分類器從單一 API 呼叫取得多個結果。
This is a text message sentiment classifier
Message: "I loved the new adventure movie!"
Sentiment: Positive
Message: "I hate it when my phone battery dies"
Sentiment: Negative
Message: "My day has been 👍"
Sentiment: Positive
Message: "This is the link to the article"
Sentiment: Neutral
Message text
1. "I loved the new adventure 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 is unreal"
Message sentiment ratings:
1: Positive
2: Negative
3: Positive
4: Neutral
5: Positive
Message text
1. "He doesn't like homework"
2. "The taxi is late. She's angry 😠"
3. "I can't wait for the weekend!!!"
4. "My cat is adorable ❤️❤️"
5. "Let's try chocolate bananas"
Message sentiment ratings:
1.
此示範顯示 API 如何依情緒分類文字訊息。 您會提供編號的訊息清單,以及具有相同數字索引的情緒評等清單。 API 會使用第一個示範中的資訊來了解如何分類單一文字訊息的情緒。 在第二個示範中,模型會了解如何將情緒分類套用至文字訊息清單。 這種方法允許 API 在單個 API 呼叫中對五個 (甚至更多) 文字訊息進行評等。
重要
當您要求 API 建立清單或評估文字時,請務必協助 API 避免漂移。 以下是一些要遵循的事項:
- 請仔細注意您的
Top P
或Temperature
可能性設定值。 - 執行多個測試,以確定您的可能性設定已正確校正。
- 請勿使用長清單。 長清單可能會導致漂移。
觸發想法
您可以使用 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 以及一個清單項目的基本描述。 然後,您使用 「2」不完整的提示來觸發 API 的回應。 API 會將不完整的輸入解譯為產生類似項目的要求,並將其新增至您的清單。
觸發想法的指導方針
雖然此示範使用簡單的提示,但它強調幾個觸發新想法的指導方針:
說明清單的意圖。 與文字分類器的示範類似,您一開始會告訴 API 清單的內容。 此方法可協助 API 專注於完成清單,而不是藉由分析文字來嘗試判斷模式。
設定清單中的項目模式。 當您提供單句描述時,API 會在產生清單的新項目時,嘗試遵循該模式。 如果您想要更詳細的回應,您必須建立該意圖,並針對 API 提供更詳細的文字輸入。
使用不完整的輸入提示 API 以觸發新想法。 當 API 遇到看似不完整的文字時,例如提示文字 「2.」。它首先嘗試確定任何可能完成該輸入的文字。 因為示範有一個清單標題和一個包含數字「1.」且隨附的文字範例,所以 API 會將不完整的提示文字「2.」解譯為繼續將項目新增至清單的要求。
探索進階世代技術。 您可以在提示中建立更多樣化的延伸清單,以改善回應的品質。 一個方法是從一個範例開始,讓 API 產生更多範例,並選取您最喜歡的範例,然後將其新增至清單。 範例中一些更高品質的變化可以大幅改善回應的品質。
進行交談
從 GPT-35-Turbo 和 GPT-4 版本開始,建議您使用支援聊天完成端點的模型來建立交談產生和聊天機器人。 聊天完成模型和端點需要與完成端點不同的輸入結構。
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:
讓我們看看名為「Cramer」的聊天機器人變化,這是一個有趣且稍微有幫助的虛擬助理。 為了協助 API 了解角色的字元,您可以提供一些問題和解答範例。 只需要幾個諷刺的回應,API 就能挑選模式,並提供無數的類似回應。
Cramer is a chatbot that reluctantly answers questions.
###
User: How many pounds are in a kilogram?
Cramer: This again? There are 2.2 pounds in a kilogram. Please make a note of this.
###
User: What does HTML stand for?
Cramer: 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?
Cramer: 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?
Cramer:
設計交談的指導方針
我們的示範顯示如何輕鬆地建立能夠進行交談的聊天機器人。 雖然看起來很簡單,但此方法遵循數個重要指導方針:
定義交談的意圖。 就像其他提示一樣,您會描述與 API 互動的意圖。 在此情況下是「交談」。此輸入會準備 API,以根據初始意圖處理後續的輸入。
告訴 API 如何運作。 此示範中的重要詳細資料是 API 應該如何互動的明確指示:「助理很有幫助、創意、聰明且非常友善。」如果沒有明確的指示,API 可能會偏離並模仿與其互動的人。 API 可能會變得不友善,或展示其他不想要的行為。
為 API 提供身分識別。 一開始,API 作為 OpenAI 建立的 AI 進行回應。 雖然 API 沒有內建身分識別,角色描述可協助 API 以盡可能接近真實的方式來回應。 您可以透過其他方式使用角色身份識別描述,來建立不同類型的聊天機器人。 如果您告訴 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 無法辨識的語言,您需要提供 API 更多範例,以及可產生流暢翻譯的微調模型。
在文字與 Emoji 之間轉換
此示範會將電影名稱從文字轉換成 emoji 字元。 此範例會顯示 API 挑選模式並與其他字元搭配使用的適應性。
Carpool Time: 👨👴👩🚗🕒
Robots in Cars: 🚗🤖
Super Femme: 👸🏻👸🏼👸🏽👸🏾👸🏿
Webs of the Spider: 🕸🕷🕸🕸🕷🕸
The Three Bears: 🐻🐼🐻
Mobster Family: 👨👩👧🕵🏻♂️👲💥
Arrows and Swords: 🏹🗡🗡🏹
Snowmobiles:
摘要文字
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。 為了協助防止 API 在處理大量文字區塊之後漂移,請遵循下列指導方針:
以三引號括住要摘要的文字。 在此範例中,您會在要摘要的文字區塊前後輸入三個雙引號 (""")。 此格式設定樣式會清楚定義要處理之大型文字區塊的開始和結尾。
說明摘要意圖和摘要之後的目標對象。 請注意,此範例與其他範例不同,因為您提供 API 的指示兩次:要處理的文字之前和之後。 備援指示可協助 API 專注於預定的工作,並避免漂移。
完成部分文字和程式碼輸入
雖然所有提示都會導致完成,但在您希望 API 從先前離開之處繼續的案例中,將文字完成視為本身的工作會很有用。
在此示範中,您會將文字提示提供給似乎不完整的 API。 您可以在「and」這個字上停止文字輸入。API 會將不完整的文字解譯為觸發程序,以繼續您的想法訓練。
Vertical farming provides a novel solution for producing food locally, reducing transportation costs and
下一個示範展示如何使用完成功能來協助編寫 React
程式碼元件。 首先,您會將一些程式碼傳送至 API。 您可以使用左括弧 (
停止程式碼輸入。 API 會將不完整的程式碼解譯為觸發程序,以完成 HeaderComponent
常數定義。 API 可以完成此程式碼定義,因為它已了解對應的 React
程式庫。
import React from 'react';
const HeaderComponent = () => (
產生完成的指導方針
以下是使用 API 來產生文字和程式碼完成的一些實用指導方針:
降低溫度,讓 API 保持焦點。 將
Temperature
設定較低的值,以指示 API 提供回應,這些回應著重於提示中所述的意圖。提升溫度以允許 API 正切。 將
Temperature
設定較高的值,以允許 API 以正切方式回應提示中所述的意圖。使用 GPT-35-Turbo 和 GPT-4 Azure OpenAI 模型。 對於涉及了解或產生程式碼的工作,Microsoft 建議使用
GPT-35-Turbo
和GPT-4
Azure OpenAI 模型。 這些模型會使用新的聊天完成格式。
產生事實回應
API 已了解其定型期間所檢閱的實際資料所建置的知識。 它會使用此學習的資料來形成其回應。 不過,API 也能夠以聽起來正確的方式回應,但事實上是杜撰的。
有幾種方式可以限制 API 構成回應輸入答案的可能性。 您可以定義真實和事實回應的基礎,因此 API 會從您的資料草稿其回應。 您也可以設定低 Temperature
可能性,並顯示 API 如何在資料不適用於事實答案時回應。
下列示範顯示如何教導 API 以更實際的方式回覆。 您向 API 提供其了解的問題和答案範例。 您也可以提供問題範例 ("Q") 它可能無法辨識並使用問號作為答案 ("A") 輸出。 此方法會教導 API 如何回應無法實際回答的問題。
作為保護措施,您可以將 Temperature
可能性設定為零,讓 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 an 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 Egad Debunk?
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:
產生事實回應的指導方針
讓我們檢閱指導方針,以協助限制 API 構成答案的可能性:
提供 API 的基礎事實。 指示 API 如何做為根據意圖建立真實和事實回應的基礎。 如果您提供 API 的文字本文來回答問題 (例如維基百科輸入),則 API 比較不太可能編造回應。
使用低可能性。 設定低
Temperature
可能性,讓 API 持續專注於您的意圖,而且不會漂移到建立一個編造或杜撰的回應。顯示 API 如何以「我不知道」回應。 您可以輸入範例問題和解答,教導 API 針對找不到事實答案的問題使用特定回應。 在此範例中,您會教導 API 在找不到對應的資料時,以問號 (?) 回應。 此方法也可協助 API 在回應「我不知道」時學習比構成答案更「正確」。
使用程式碼
Codex 模型系列是 OpenAI 型 GPT-3 系列的子系,已針對自然語言和數十億行程式碼進行定型。 此模型在 Python 中最能發揮功能,且熟悉數十種語言,包括 C#、JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、SQL,甚至 Shell。
如需產生程式碼完成的詳細資訊,請參閱 Codex 模型和 Azure OpenAI 服務。
下一步
- 了解如何使用 GPT-35-Turbo 和 GPT-4 模型。
- 深入了解 Azure OpenAI 服務模型。