瞭解如何產生或操作文字

Azure OpenAI 服務提供可用於各種工作的 完成端點 。 端點會為任何 Azure OpenAI 模型提供簡單但功能強大的文字輸入、文字輸出介面。 若要觸發完成,您可以輸入一些文字作為提示。 模型會產生完成,並嘗試符合您的內容或模式。 假設您提供提示「如 Descartes 所述,我認為」提供給 API。 針對此提示,Azure OpenAI 會傳回具有高機率的完成端點「我」。

開始探索完成的最佳方式是透過 Azure OpenAI 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 服務模型可以執行所有作業,從產生原始故事到執行複雜的文字分析。 因為它們可以執行許多動作,所以您必須明確顯示您想要的專案。 顯示 (而不只是告知) 通常是良好提示的秘密。

模型會嘗試從提示中預測您所需的內容。 如果您輸入提示「給我一份貓型號清單」,則模型不會自動假設您只要求清單。 您可能會開始一個交談,其中您的第一個字是「給我一份貓種清單」,後面接著「我將會告訴您我喜歡哪一個」。如果模型只假設您想要一份貓清單,它就不適合內容建立、分類或其他工作。

建立強固提示的指導方針

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

  • 顯示並告知。 透過指示和/或範例清楚說明您所需的內容。 如果您想要讓模型依字母順序排列專案清單,或依情感分類段落,請在提示中包含這些詳細資料以顯示模型。

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

  • 檢查您的設定。 和 等 TemperatureTop P 機率設定可控制模型在產生回應時要如何確定性。 如果您要要求只有一個正確答案的回應,您應該為這些設定指定較低的值。 如果您要尋找不明顯的回應,您可能會想要使用較高的值。 使用者使用這些設定所做的最常見錯誤是假設他們在模型回應中控制「聰明」或「創意」。

提示問題的疑難排解

如果您無法如預期般執行 API,請檢閱下列幾點以取得您的實作:

  • 所應產生的目標是否清楚?
  • 是否有足夠範例?
  • 您是否檢查過您的範例中是否有錯誤? (API 不會直接告訴您。)
  • 您是否正確使用 TemperatureTop 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 避免漂移。 以下是一些要遵循的要點:

  • 請仔細注意您的 或 Temperature 機率設定值 Top P
  • 執行多個測試,以確定您的機率設定已正確校正。
  • 請勿使用長清單。 長清單可能會導致漂移。

觸發程式想法

您可以使用 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 瞭解角色的字元,您可以提供一些問題和解答範例。 只需要幾個 sarcastic 回應,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 更多範例,以及可產生 Fluent 翻譯的微調模型。

在文字與 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 提供回應,這些回應著重于提示中所述的意圖。

  • 引發 Temperature 以允許 API 切切。 設定較高的值, Temperature 以允許 API 以正切方式回應提示中所述的意圖。

  • 使用 GPT-35-Turbo 和 GPT-4 Azure OpenAI 模型。 對於涉及瞭解或產生程式碼的工作,Microsoft 建議使用 GPT-35-TurboGPT-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 服務

後續步驟