在 Azure OpenAI 中使用文字完成
GPT-35-Turbo 和 GPT-4 模型是針對交談介面最佳化的語言模型。 模型的行為與較舊的 GPT-3 模型不同。 先前的模型是文字輸入和文字輸出,這表示這些模型已接受提示字串,並傳回要附加至提示的完成,就像您剛剛所學內容一樣。
不過,GPT-35-Turbo 和 GPT-4 模型是交談輸入和訊息輸出。模型預期輸入格式為特定類似聊天的文字記錄格式,並傳回代表聊天中模型撰寫訊息的完成。
GPT-35-Turbo 和 GPT-4 仍然可以接受並產生文字完成,但他們的強項在於與聊天功能配合。
在 Azure OpenAI 中,有兩種不同的選項可以與這些類型的模型互動:
- Chat Completion API。
- 使用聊天標記語言 (ChatML) 的 Completion API。
聊天完成 API 是新的專用 API,可用來與 GPT-35-Turbo 和 GPT-4 模型互動,我們會在這裡使用聊天完成 API。
了解聊天完成 API 角色
OpenAI 已將 GPT-35-Turbo 和 GPT-4 模型定型,以接受格式化為交談的輸入。 傳送至模型的每個輸入或提示,以及模型傳回的每個回應都會新增至聊天完成 API 中的整體對話。
聊天完成 API 會將傳入的提示和傳出回應稱為訊息。
此模型接受訊息物件的陣列,其中包含依角色組織的對話。 角色類型有三種:系統、使用者和助理。
系統角色
系統角色也稱為系統訊息包含在陣列的開頭。 此訊息會提供模型的初始指示。 您可以在系統角色中提供各種資訊,包括:
- 助理的簡短描述
- 助理的個人化特徵
- 您希望助理遵循的指示或規則
- 模型所需的資料或資訊,例如常見問題中的相關問題
您可以自訂使用案例的系統角色,或只包含基本指示。 系統角色/訊息是選擇性的,但建議至少包含基本的角色/訊息,以取得最佳結果。
使用者和助理角色
在使用者與助理之間發生對話。 使用者是輸入提示並與模型互動的人員。 模型的回應會以系統角色表示。
使用者傳送至模型的訊息應遵循設計提示的最佳作法,以取得高品質的回應。
訊息提示範例
以下是一些範例,示範可用於 GPT-35-Turbo 和 GPT-4 模型的不同提示樣式。 這些範例只是起點,您可以實驗不同的提示來自訂行為。
基本範例
如果您想要 GPT-35-Turbo 模型的行為與 chat.openai.com 類似,您可以使用基本系統訊息,例如「助理是 OpenAI 定型的大型語言模型。」
我們將在下一個單元中了解如何使用聊天完成 API 的 .NET SDK,現在我們將繼續使用變數名稱為例。
string systemMessage = "Assistant is a large language model trained by OpenAI";
string userMessage = "Who were the founders of Microsoft?";
使用指示的範例
在某些案例中,您可能想要為模型提供其他指示,以定義模型能夠執行的護欄。
string systemMessage = """
Assistant is an intelligent chatbot designed to help users answer their tax related questions.
Instructions:
- Only answer questions related to taxes.
- If you're unsure of an answer, you can say "I don't know" or "I'm not sure" and recommend users go to the IRS website for more information.
""";
string userMessage = "When are my taxes due?";
管理交談
模型沒有記憶體,因此其需要更新的文字記錄,內含每個新問題和所有問題和答案,否則將會遺失內容。
這表示每次您與其互動時,都必須將整個更新對話傳送至模型,然後可以輕鬆地叫用每個模型的權杖限制。
gpt-35-turbo
的權杖限制是 4096 個權杖,而 gpt-4
和 gpt-4-32k
的權杖限制分別為 8192 和 32768。 您必須維持在這些限制之下,否則會收到錯誤。
您可以追蹤權杖計數,並將最舊的訊息從傳送至模型的陣列中移除。 最好一律保留系統訊息,並只移除助理或使用者訊息。 不過,經過一段時間後,管理對話的這個方法可能會導致對話品質降低,因為對話先前部分的內容遺失。
或者,一旦達到權杖限制,您可以提示使用者展開新的對話。