為開發人員建置產生 AI 解決方案的簡介
由大型語言模型 (LLM) 啟用的產生 AI,為軟體開發人員和組織開闢了令人興奮的新可能性。 Azure OpenAI 等服務藉由提供易於使用的 API,讓任何技能等級的開發人員將進階 AI 功能整合到其應用程式中,而不需要特殊知識或要求組織投資硬體,即可將 AI 開發大眾化。
身為應用程式開發人員,您可能難以瞭解您可以扮演的角色,以及適合身分的位置。 例如,您可能想知道「AI 堆疊」中的哪個層級應該專注學習? 或者,您可能想知道在現有技術下能夠建置哪些功能?
若要回答這些問題,請務必先開發一種心理模型,以對應所有新術語和技術如何融入您已了解的內容。 開發心理模型可協助您在應用程式中設計和建置產生式 AI 功能。 為此,這一系列文章的目的是要說明您目前軟體開發體驗如何套用至 Generative AI。 當您開始開發第一個產生式 AI 解決方案時,這些文章也會提供關鍵詞和概念的層級集。
企業希望透過再生 AI 達成什麼目標?
若要瞭解您目前軟體開發體驗如何套用至 Generative AI,請務必先了解企業如何從中獲益。
企業將產生 AI 視為改善客戶參與、提高營運效率,以及增強解決問題和創造力的方法。 將產生 AI 整合到現有的系統中,可讓企業有機會增強其軟體生態系統。 它可以使用進階 AI 功能來補充傳統軟體功能,例如使用者的個人化建議,或可回答組織或產品特定問題的智慧型手機代理程式。
以下是一些常見案例,其中產生 AI 可協助企業:
- 內容產生
- 產生文字、程序代碼、影像和音效。 這對於營銷、銷售、IT、內部通訊等都很有用。
- 自然語言處理
- 透過建議或完整產生訊息來撰寫或改善商務通訊。
- 「與您的數據聊天」,或換句話說,讓用戶能夠使用儲存在資料庫或檔中的數據,在聊天體驗中詢問問題,做為解答的基礎。
- 摘要、組織和簡化大型內容主體,讓內容更容易存取。
- 「語意搜尋」,或更確切地說,允許使用者搜尋檔與數據,而不需使用確切的關鍵詞相符專案。
- 翻譯語言以增加內容的觸達性和輔助功能。
- 資料分析
- 分析市場並識別數據的趨勢。
- 建立「假設狀況」案例模型,以協助公司規劃業務的每個領域可能變更或挑戰。
- 分析程式代碼以建議改善、修正 Bug,以及產生檔。
如您所見,軟體開發人員有機會藉由將產生的 AI 應用程式和功能整合到其組織所依賴的軟體中,大幅提升其影響。
如何建置這些類型的應用程式?
雖然大型語言模型 (LLM) 會執行繁重的工作,但您會建置整合、協調及監視結果的系統。 雖然要學習很多,但您可以套用您已經知道的技能:
- 使用 REST、JSON 或語言特定的軟體開發工具套件來呼叫 API(SDK)
- 協調對 API 的呼叫和執行商業規則
- 儲存和擷取數據存放區
- 將輸入和結果整合到用戶體驗中
- 建立可從 LLM 呼叫的 API
如此一來,開發產生式 AI 解決方案會以您現有的技能為基礎。
有哪些工具和服務可供使用?
Microsoft投資開發工具、服務、API、範例和學習資源,以協助您開始產生 AI 開發旅程。 每個都強調建構產生 AI 解決方案所需的一些主要考慮或責任。 若要有效地利用指定的服務、API 或資源,挑戰是確保您:
- 瞭解特定類型產生 AI 功能中的一般函式、角色和責任? 例如,當我們在描述擷取擴增世代 (RAG) 型聊天系統的概念性文章中詳細討論時,系統中有許多架構責任。 請務必先仔細瞭解問題領域和條件約束,再設計可解決問題的系統。
- 瞭解給定函式、角色或責任的 API、服務和工具是否存在? 既然您已了解問題網域和條件約束,您可以選擇使用自定義程式代碼自行建置系統的該層面,或使用現有的低程式代碼/無程序代碼工具,或呼叫現有服務的 API。
- 瞭解選項,包括以程式代碼為中心的和無程式代碼/低程式代碼解決方案。 你可以自己建置一切,但這是有效率地利用你的時間和技能嗎? 根據您的需求,您通常可以結合技術和方法的組合(程序代碼、無程式代碼、低程式代碼、工具)。
此處的要點是,在應用程式中建置產生的 AI 功能沒有單一正確的方法。 有許多工具和方法存在。 評估取捨很重要。
從應用層的焦點開始
您不需要了解產生 AI 的一切運作方式,就能開始並提高生產力。 如先前所述,您可能已經足夠了解,因為您可以使用 API 並套用現有的技能。
例如,您不需要從頭開始訓練自己的 LLM。 培訓 LLM 需要大多數公司不願意認可的時間和資源。 相反地,您會在現有的預先定型基礎模型之上建置,例如 GPT-4,方法是對 Azure OpenAI API 等現有託管服務進行 API 呼叫。 如此一來,將產生 AI 功能新增至現有應用程式就與根據 API 呼叫新增任何其他功能並無不同。
研究 LLM 的訓練方式,或其運作方式可能滿足您的智力好奇心,但真正瞭解 LLM 的運作方式需要深入瞭解數據科學和數學背景以支援它。 這可能包括統計數據、機率和資訊理論的研究生等級課程。
如果您來自計算機科學背景,您可以瞭解大多數應用程式開發發生在研究和技術的「堆疊中較高層」。 您可能對每一層都有一些瞭解,但您可能會專攻應用開發層,並著重於特定的程式設計語言和平臺(可用的 API、工具、模式等等)。
AI 領域也是如此。 您可以了解並欣賞建置在 LLM 之上的理論,但您可能會將注意力集中在應用層上,或協助實作模式或程式,以在您的公司中啟用產生 AI 工作。
以下是在新的或現有應用程式中實作產生 AI 功能所需的知識層級的過度簡化表示:
在最低層級,您有數據科學家正在進行數據科學研究,以根據對統計數據、機率理論等的深入數學理解來解決或改善 AI。 一層起來,根據最低基礎層,您有將數據科學家實作理論概念到 LLM、建置神經網路,以及定型權數和偏差,以提供一個實用的軟體片段,這些軟體可以接受輸入(提示)併產生結果(完成)。 根據提示撰寫完成的計算程序稱為 推斷。 有一些人負責實作神經網路的神經元如何預測下一個字或像素的產生方式。
鑒於定型模型和根據輸入產生結果所需的處理能力。 模型通常會定型並裝載於大型數據中心。 有可能在本機計算機上定型或裝載模型,但結果通常很慢(沒有專用 GPU 視頻卡來協助處理產生結果所需的計算)。
裝載於大型資料中心時,會透過 REST API 提供對這些模型的程式設計存取,而 SDK 有時會「包裝」這些模型,並可供應用程式開發人員輕鬆使用。 其他工具可協助改善開發人員體驗,提供可觀察性或其他公用程式。 應用程式開發人員可以呼叫這些 API 以實作商務功能。
除了以程式設計方式提示模型之外,還有一些模式和流程正在出現,以協助企業根據產生式 AI 建置可靠的商務功能。 例如,有一些模式正在出現,以協助企業確保產生的文字、程序代碼、影像和健全符合道德和安全標準,以及承諾客戶數據的隱私權。
在這個考慮或層級的堆疊中,如果您是負責建置商務功能的應用程式開發人員,您就有可能將應用層推入開發及定型您自己的 LLM。 但這種理解水準需要一組新的技能,通常只能在學術上取得。 如果您無法致力於在學術上開發數據科學的能力,以協助在堆疊中建置「下一層」(因此,如此一來),請專注於應用層主題,例如:
- 瞭解可用的 API 和 SDK、可用的專案、各種端點所產生的專案等等。
- 瞭解相關工具和服務,以協助您建置生產環境就緒 AI 解決方案所需的所有功能。
- 瞭解提示工程,例如如何藉由詢問或重繪問題來達到最佳結果。
- 瞭解瓶頸出現的位置,以及如何調整解決方案。 了解記錄或取得遙測時所涉及的事項,而不違反客戶隱私權考慮。
- 瞭解各種 LLM 的特性(其優點、使用案例、基準檢驗為何,以及其測量方式、每個廠商所產生的廠商與模型之間的關鍵差異等等),以為您的公司需求選擇正確的模型。
- 瞭解用來在應用程式中建立有效且具復原性 AI 功能的最新模式、工作流程和程式。
來自Microsoft的可用服務和工具
Microsoft提供低程式代碼和無程式代碼產生 AI 工具和服務,可協助您建置部分或整個解決方案。 各種 Azure 服務可以扮演關鍵角色,每個服務都有助於解決方案的效率、延展性和強固性:
以程式代碼為中心的 API 和 SDK 方法
每個產生式 AI 解決方案的核心是 LLM 模型,而 Azure OpenAI 可讓您存取 GPT-4 等模型中所有可用的功能。
Products | 描述 |
---|---|
Azure OpenAI | 託管服務,可讓您存取 GPT-4 等功能強大的語言模型。 有數個不同的 API 可讓您執行 LLM 的所有一般功能,例如建立內嵌、建立聊天體驗等,並具有設定的完整存取權,並視需要調整來自定義結果。 |
執行環境
由於您要建置商業規則、呈現邏輯或 API,以將 generative AI 整合到您組織的應用程式中,因此您需要在某處裝載和執行該邏輯。
Products | 描述 |
---|---|
Azure App 服務(或數個容器型雲端服務之一) | 此平臺可以裝載使用者與RAG聊天系統互動的Web介面或API。 它支援快速開發、部署和調整 Web 應用程式,讓您更輕鬆地管理系統的前端元件。 |
Azure Functions | 使用無伺服器計算來處理RAG聊天系統中的事件驅動工作。 例如,使用它來觸發數據擷取程式、處理使用者查詢,或處理背景工作,例如數據同步處理和清除。 它允許更模組化、可調整的方式來建置系統的後端。 |
低程式代碼 / No-code
或者,解決方案所需的一些邏輯可以快速建置,並由低程式代碼或無程式碼解決方案可靠地裝載。
Products | 描述 |
---|---|
Azure AI Studio | Azure AI Studio 可用於定型、測試及部署可增強RAG聊天系統的自定義機器學習模型。 例如,使用 Azure AI Studio 來自定義響應產生或改善所擷取資訊的相關性。 |
向量資料庫
某些產生的 AI 解決方案可能需要儲存和擷取用來增強產生的數據(例如,RAG 型聊天系統,可讓使用者與組織的數據聊天)。 在此使用案例中,您需要向量數據存放區。
Products | 描述 |
---|---|
Azure AI 搜尋服務 | 此服務可用來有效率地搜尋大型數據集,以尋找可用來通知語言模型所產生的回應相關信息。 這對於RAG系統的擷取元件很有用,可確保產生的回應盡可能具有資訊性且內容相關。 |
Cosmos DB | 這個全域散發的多模型資料庫服務可以儲存RAG-chat系統需要存取的大量結構化和非結構化數據。 其快速讀取和寫入功能可讓您將即時數據提供給語言模型,並儲存使用者互動以進行進一步分析。 |
Azure Cache for Redis | 這個完全受控的記憶體內部數據存放區可用來快取經常存取的資訊、降低延遲並改善RAG聊天系統的效能。 它特別適用於儲存會話數據、用戶喜好設定和常見查詢。 |
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器 | 此受控資料庫服務可以儲存應用程式數據,包括記錄、使用者配置檔和歷程記錄聊天數據。 其彈性和延展性支援RAG聊天系統的動態需求,確保數據一致可用且安全。 |
這些 Azure 服務都有助於為產生式 AI 解決方案建立全面、可調整且有效率的架構,讓開發人員能夠使用 Azure 的最佳雲端功能和 AI 技術。
使用 Azure OpenAI API 進行以程式代碼為中心的產生 AI 開發
在本節中,我們將焦點放在 Azure OpenAI API 上。 如先前所述,您可以透過 RESTful Web API 以程式設計方式存取 LLM 功能。 您可以使用任何新式程式設計語言來呼叫這些 API。 在許多情況下,語言或平臺特定的 SDK 會以 REST API 呼叫的「包裝函式」運作,讓體驗更慣用。
- 適用於 .NET 的 Azure OpenAI 用戶端連結庫
- 適用於 Java 的 Azure OpenAI 用戶端連結庫
- 適用於 JavaScript 的 Azure OpenAI 用戶端連結庫
- 適用於 Go 的 Azure OpenAI 用戶端模組
- Python 沒有 Azure 特定的用戶端連結庫。 您可以使用 OpenAI Python 套件 ,並變更數個選項。
如果語言或平臺 SDK 無法使用,最壞的情況是您必須直接對 Web API 進行 REST 呼叫。 不過,大部分開發人員都熟悉如何呼叫 Web API。
Azure OpenAI 提供一系列 API,旨在協助不同類型的 AI 支援工作,讓開發人員將進階 AI 功能整合到其應用程式中。 以下是 OpenAI 提供的主要 API 概觀:
- 聊天完成 API:此 API 著重於文字產生案例,包括交談功能,讓聊天機器人和虛擬助理能夠參與自然、類似人類的對話。 其已針對互動式使用案例進行優化,包括客戶支援、個人助理和互動式學習環境。 不過,它也會用於所有文字產生案例,包括摘要、自動完成、寫入檔、分析文字、翻譯等等。 這是目前處於預覽狀態的視覺功能的進入點(也就是上傳影像並詢問其相關問題)。
- 仲裁 API:此 API 旨在協助開發人員識別和篩選文字中潛在的有害內容,提供工具,藉由自動偵測冒犯性、不安全或其他不當內容,確保用戶互動更安全。
- 內嵌 API:內嵌 API 會產生文字輸入的向量表示法、將文字、句子或段落轉換成高維度向量。 這些內嵌可用於語意搜尋、叢集、內容相似度分析等等。 它會擷取文字中的基礎意義和語意關聯性。
- 影像產生 API:此 API 可讓您從文字描述產生原始、高品質的影像和藝術。 它以 OpenAI 的 DALL 為基礎。E 模型,可根據收到的提示,建立符合各種樣式和主旨的影像。
- 音訊 API:此 API 提供 OpenAI 音訊模型的存取權,專為自動語音辨識而設計。 它可以將口語轉譯成文字,或將文字轉譯成語音,支援各種語言和方言。 這對於需要語音命令、音訊內容轉譯等的應用程式很有用。
雖然產生 AI 可以用來處理許多不同的媒體形式,但我們會花本文的其餘部分來專注於以文字為基礎的產生 AI 解決方案。 這涵蓋聊天、摘要等案例。
如何使用產生 AI 開始開發應用程式
不熟悉語言、API 或技術的軟體開發人員通常會遵循教學課程或訓練課程模組來開始學習,以建置小型應用程式。 有些軟體開發人員偏好採用自我引導方法,並建置小型實驗性應用程式。 這兩種方法都有效且有用。
當您開始使用時,最好從小型、承諾很少、反覆運算和建置您的瞭解和技能開始,因為使用產生式 AI 進行開發會面臨獨特的挑戰。 例如,在傳統的軟體開發中,您可以依賴確定性輸出 – 針對任何一組輸入,您每次都能預期完全相同的輸出。 不過,產生性不是決定性的 – 您永遠不會取得給定提示的兩次完全相同答案,這是許多新挑戰的根源。 當您開始使用時,請先考慮下列秘訣,再進行太遠:
提示 #1:清楚瞭解您嘗試達成的目標。
- 瞭解您嘗試解決的問題:Generative AI 可以解決各種問題,但成功來自於明確定義您要解決的特定問題。 您是否嘗試產生文字、影像、程序代碼或其他專案? 更具體的是,您可以更妥善地量身打造 AI 以符合您的需求。
- 瞭解您的物件:瞭解您的對象有助於量身打造 AI 的輸出,以符合其期望,無論是特定領域的休閒用戶或專家。
秘訣 #2:發揮 LLM 的優勢。
- 瞭解 LLM 的限制和偏差:雖然 LLM 很強大,但它們具有限制和固有偏差。 瞭解限制和偏差可協助您針對這些限制進行設計,或納入風險降低措施。
- 瞭解 LLM Excel 的位置:LLM 在內容建立、摘要、語言翻譯等工作中表現優異。 雖然其決策功能和歧視功能在每一個新版本中都變得更強,但可能有其他類型的 AI 更適合您的案例或使用案例。 選擇作業的正確工具。
提示 #3:最佳結果會以良好的提示開始。
- 學習提示工程最佳做法:製作有效的提示是藝術。 試驗不同的提示,以查看它們如何影響輸出。 簡潔但具描述性。
- 認可反覆精簡:通常,第一個提示可能不會產生所需的結果。 這是一個試用和錯誤的過程。 使用輸出進一步精簡提示。
建置您的第一個再生 AI 解決方案
如果您想要立即開始實驗建置產生式 AI 解決方案,建議您先 看看使用您自己的 Python 數據範例開始使用聊天。 .NET、Java 和 JavaScript 也提供教學課程版本。
可能會影響應用程式設計決策的最終考慮
以下是本文所要考慮的事項清單,以及其他會影響應用程式設計決策的專案:
- 清楚定義問題空間和物件,以將 AI 的功能與使用者期望保持一致,將解決方案對預定使用案例的有效性優化。
- 如果低程式代碼/無程式代碼平臺符合您的專案需求,請使用低程式代碼/無程式代碼平台進行快速原型設計和開發,並評估開發速度和可自定義性之間的取捨。 探索應用程式元件低程式碼和無程式碼解決方案的可能性,以加快開發速度,並讓非技術小組成員參與專案。